Revisiting The Facts and Fallacies of Software Engineering - <AUTHOR> http://www.codinghorror.com/blog/archives/001083.html <comment><USER3> He mentions that the fallacies don't stand up to analysis (which is what you'd expect) but I'd encourage you to resist the head-nod temptation when looking through the list of contents, which we're encouraged to accept as "zen koan- like". For example:

"The best programmers are up to 28 times better than the worst programmers."

I'm immediately suspicious of the spurious accuracy presented and wondering why it's not 30 or 25. And it means not much in practice: the best person in any profession will be orders of magnitude better than the worst, if only because the worst can be very, very bad indeed.

<comment><USER4> I always find those numbers odd, since it implies that all programmers create some value. Bad programmers not only don't produce much, they introduce bugs that others need to fix and they need lots of help, hand-holding, and management effort, which draws down the productivity of others. 28 times better than a negative number isn't good at all!

<comment><USER4> Steve McConnell just wrote something about this:

<http://news.ycombinator.com/item?id=147916>

</comment></comment></comment><comment><USER5> I found these two rather odd:

7\. Software developers talk a lot about tools, but seldom use them.

30\. COBOL is a very bad language, but all the others are so much worse.

Number 7 just doesn't match my experience. But I am an N of 1. I don't know what to make of 30 at all.

And this one made me think the book was rather old (which doesn't mean out of date necessarily):

53\. High-order language code can be about 90 percent as efficient as comparable assembler code.

I just wonder what he means by higher-order? In this context, probably C.

</comment><comment><USER6> I prefer how-to books to what-is books. Tell me the best practices so that I don't waste time and effort.

</comment><comment><USER7> What an interesting reference! Thank you, Jeff. I'm surprised I never heard of it. It seems so full of common sense that I think it's definitely worth a read.

I especially liked these two:

25\. Missing requirements are the hardest requirements errors to correct.

42\. Enhancements represent roughly 60 percent of maintenance costs.

If an "enhancement" is the result of "missing requirements", then is it really an enhancement at all? My experience is that 90% of "maintenance" was the direct result of poor or incomplete analysis. Let's not forget that "software engineering" includes all phases, not just development.

<comment><USER8> During some crunch times, I've told our business analysts that it's not a bug if they have to write a requirement for it (the bug) :)

And, in an ideal world, requirements would be stable before coding starts. We make the best of what we can work with. Cost, quality, functionality - <USER2> classic triangle - you can't impact/maximize one of those three without affecting the others

<comment><USER7> "in an ideal world, requirements would be stable before coding starts"

It is and they are.

I think the common misconception is that requirements change during the project. My experience is that this is a rarity

What really happens is that OUR VIEW of the requirements changes during the project. The business rules didn't just suddenly change because we are building something. We NEVER NAILED THEM DOWN in the first place. This isn't hard to comprehend; analysis is a lost art and probably the most fragile link in the SDLC chain.

"What do you mean, when we file the record, a traveler should print out next to the supervisor's desk? Who told you that?"

"Joe did."

"What did Mary say?"

"I don't know. I didn't ask her."

"Ask her. Once you get her answer, change the specs."

(A silly little example, but is I had a nickel for every time that happened...)

<comment><USER6> In my experience, this depends a lot on the project. Often, with new ideas, new uses will come up once the 'opinion leaders' get their hands on something real. Then, the requirements, in fact, do change (if you're smart).</comment></comment></comment></comment>


Existence does not imply correlation - <AUTHOR> http://www.chrisstucchio.com/blog/2014/existence_does_not_imply_correlation.html <comment><USER2> I'm going to point something out here that's not really central to the argument the article is making.

In programming, in my experience, the nastiest bugs to fix are actually two or three separate bugs interacting in weird ways. If you find a bug like he did, and it's easy to fix and unlikely to break something else, but you can't reason how it could be causing the issue you're seeing, FIX IT ANYWAY. It's quite possible it's interacting in some subtle way with another bug, and fixing it may make the other issue start behaving more consistantly, and easier to fix.

It may feel wrong, because you feel like you should set that theoretically unrelated bugfix aside until you can work out the bug you're trying to focus on. In my experience, that's often not the right approach.

<comment><USER3> _If you find a bug like he did, and it 's easy to fix and unlikely to break something else, but you can't reason how it could be causing the issue you're seeing, FIX IT ANYWAY. It's quite possible it's interacting in some subtle way with another bug_

Do people really reason like this? I mean, programming is absolutely clear- cut. It's the most clear-cut aspect of life, in some ways. It's purely a logic problem. If you see something that can't possibly be interacting with your problem, then spending additional mental cycles on it is always a waste of your time for solving that problem.

Now, it may be a good idea to fix that new problem. That's perfectly true. But if it can't possibly affect your current problem, then fixing the new problem won't do a darn thing to help you fix your current problem. That sounds like tautology, but your comment is saying the opposite.

You can prove to yourself that a new problem can't possibly be interacting with your current problem. If the problems exist in two separate modules, you look at the connections between the modules and see whether any data can possibly flow from one to the other. If there is no state that flows between them, then the problems are necessarily independent.

I think what you're saying is that "most codebases suck, because they have a lot of interdependencies and are hard to analyze." That's probably true. But resorting to voodoo thinking isn't going to help.

<comment><USER4> > can't possible be interacting with your current problem

The only thing not logical with programming is a programmer's ability to fully simulate the circumstances by which all bugs may occur. That ability will vary greatly from programmer to programmer.

So yes, people think like this because it's easier to fix the bug than it is trying to figure out correlation.

<comment><USER3> Maybe my previous comment was unclear. If so, sorry about that.

The point was that, in programing, there is never any "figure out correlation." You can rule out whether a bug is being caused by a given line of code by examining the flow of data between what you're seeing on screen and the lines of code responsible for what is shown on that screen. A bug is never "correlated" with any given line of code. The line of code is either logically related to the bug, or not related at all.

I'd be interested to hear more about how programming could be made into a correlation game, though. It sounds like a new mental tool that I've never learned, which means I should learn it.

<comment><USER5> To make programming into a correlation game, build a distributed system and work on performance. You suddenly have flow of data, together with lots of external factors that are difficult to measure (e.g., a spike in latency in US-East but not US-West for 0.5% of packets, or 2% of your shared instances having a noisy neighbor).

In such contexts, you usually also have a LOT of code.

Correlation analysis becomes very important in figuring out which piece of code to even look at. Bugs do become "correlated" with a line of code, because bugs take the form "noisy neighbor + blocking disk read (code) + high latency to master DB => slow response".

<comment><USER3> Thank you. That's a very interesting way to think about it, and I hadn't considered that before.

I apologize for making so many comments in this submission. I feel pretty terrible about it, because the number of comments are higher than the number of upvotes, which has pushed your submission off of the front page. I didn't realize it was happening until too late. But more than that, in retrospect, I should have behaved differently altogether, which would've resulted in fewer comments. Sorry.

</comment></comment></comment></comment></comment></comment><comment><USER6> This is a good post to begin with but then the author shoots himself in the foot with claims like

"A couple of weeks ago I pointed out Sam Altman making bogus arguments about sexism - arguing by juxtuposition that the existence of sexism reduces the number of women in technology."

I think the fact that sexism reduces the desire of women to participate in something is established. It doesn't make sense to dismiss this as an 'argument by juxtaposition' since scientific thought begins with drawing new guesses from established patterns, particularly when the data are found wanting. So now, reading between the lines, we have the dual inference that

1) the author doesn't understand his own argument, and

2) the author has a reactionary axe to grind regarding gender issues in technology.

Whether or not these inferences are true (I don't think they are), a large audience is now lost since most people are socially aware enough to understand that 'sexism doesn't repel women' is a poor null hypothesis, even if they can't articulate these feelings in the language of science.

<comment><USER5> Author here.

Altman provided no argument whatsoever in his post that the existence of a sexist act is the cause of women's underrepresentation in tech. He was fairly careful - he didn't even explicitly state causality, he merely implied it. Maybe an argument is out there somewhere, but not in Altman's post.

 _I think the fact that sexism reduces the desire of women to participate in something is established._

Directionally, maybe, but I've seen little evidence the magnitude is significant. In spite of the built in sexism, Catholicism and Islam both have far more women than Atheism (or technology). I don't see any reason to believe medicine or law are less sexist than tech, or were less sexist back when women started flooding into those fields.

If you have evidence of correlation, link to it - Sam Altman didn't.

I do have a "reactionary axe" to grind against bad reasoning and this particular topic is a huge source of bad reasoning.

<comment><USER6> > In spite of the built in sexism, Catholicism and Islam both have far more > women than Atheism

Let's break down what's bad about this sentence. It contains:

* a complete misunderstanding of the nature of the sexism we're talking about. A woman who walks into a church will not be constantly devalued for her gender and/or treated like a hot piece instead of a colleague, while simultaneously having their feelings devalued with neckbeardy thought-terminating "rationalism". In technology and business, sexism isn't an abstract teaching most people ignore, it's something in the air.

* At least two of the statistical fallacies you just decried.

* The 'appeal to worse problems' fallacy, and

* the hidden assumption that women's participation in religion is comparable to their choice of careers, as though they 'join' the Catholic Church or Islam the same way one might join a technology company.

<comment><USER7> Yeah 'something in the air'. What does that mean? That some people (many women) don't like the culture of technology. That's not sexism; that's just a fact. E.g. Some people (many women) don't like hunting - does that make it sexist?

<comment><USER8> You risk losing money and market share if you think like that.

If you make smaller guns and if you make guns in a range of colours and you make nice clothing you then open up the market beyond its current range. The people currently hunting make dislike a powder blue rifle and may scoff at comfy footwear, but you don't care because you're not selling to those people, you're selling to the peple who are not traditionally hunters.

<comment><USER7> Excellent observation. But still not sexism. Its gotten popular to use blaming language, paint everything with the sexism brush, and generally polarize discussions about workplaces. I don't think that helps get us anywhere. If only more folks thought like you.

</comment></comment></comment></comment></comment></comment><comment><USER9> Here's why a reasonable reader might come to the conclusion that this is not in fact a post about correlation, but rather a device for making a drive-by dig at Sam Altman's post:

* The Redis example is forced. Here's why: most engineers faced with that problem would, sooner rather than later, collect stats about the nodes and immediately observe that the root cause was an overloaded server. As the post admits, the cause was immediately obvious. No statistical reasoning was required, and, in fact, this reader doubts that statistics played too much of a role in Stucchio's own diagnosis. (Whether it actually did or didn't isn't material to my point.)

* The insight being provided about correlation is extremely simplistic. Essentially, it communicates in two graphs the definition of correlation. That might make sense if the post was written in a fashion that tried to communicate the fundamental idea of correlation to someone with literally no acquaintance to the term. But it's not; despite having subheds about what "is" and "isn't" correlation, the writing style more clearly signifies that the author is trying to debunk a mistaken idea about what the term is, implying that its readers are already somewhat acquainted with the idea. Or, put more simply: the fundamental idea the post tries to communicate could have been conveyed in two simple sentences. (Glass houses about my own writing style: duly noted).

* The transition from technical discussion to Sam Altman is abrupt. More importantly, the Altman subject has much more valence than the point about diagnosing Redis failures. Thought experiment: chop everything in this article _after_ Redis out, and imagine it was posted not by Chris but by some random account. Would anyone pay attention to this post?

Unfortunately, the post doesn't have much insight to offer about Altman's post. It's framed Altman in a manner incompatible with Altman's post --- suggesting, contrary to reality, that Altman was trying to present a complete empirical argument about gender disparities in technology. It then tries to beat Altman over the head with that framing. Altman emerges unscathed, because the author is swinging at his shadow, not him.

</comment><comment><USER10> Now I hope for a follow-up post that explains what the east cost problem was.

<comment><USER5> Network trouble inside US-East combined with a call that involved a lot of round trips.

I was asynchronously sending maybe 50 messages out and waiting for replies. In US-East, the standard deviation of network latency went way up, meaning that while most of those messages return in 2-3ms, a few took up to 50. It turns out that I didn't need all 50 responses anyway, so I just set a timeout of 10ms and did the best I could with whatever messages did return.

</comment></comment><comment><USER11> I'm waiting for a paper in a peer-reviewed journal - even a journal in the humanities by a feminist cultural critic will do - that quotes statistics (even flippantly, en passant, without analysis) to the point that sexism scares people away from professions.

It sounds true. It kind of feels true to me, even. But there's too many feels being passed for fact lately.

</comment><comment><USER12> I think that all of these arguments are pivoted off the same idea. Roughly, but not exactly( _):

        (Co-)existence is necessary for correlation
        Correlation is necessary for causality

Or maybe (E > Co > Ca). What this means is two-fold

        1. It's valuable and common to note E and Co
           suggestively of Co and Ca respectively. If
           I *notice* E then I begin to hypothesize about
           Co because I know have evidence for its
           possibility if not yet evidence for Co directly

        2. Being lazy/imprecise in speech or reasoning
           might cause someone to "skip a step" and claim
           something more powerful than what they actually
           have.

With regard to (1), I think it's completely valuable to make these observations. At their heart, they're nothing more than broadcasting and contextualizing _data* and that's an important function. So (2) is where all of the danger lies--- _properly_ contextualizing data and what it actually gives credence to.

So how can we make sure that (2) occurs casually without precluding (1)?

I think that articles like this one and all around the whole "correlation is not causation" tagline are great. They help to ensure people remember the size of the space between each step in E > Co > Ca.

I think another powerful technique would be to demonstrate more arguments that make the jumps and highlight the properties which allow that to happen. Chris did a good job here demonstrating correlation—what it looks like when it exists or fails to exist—but much, much more can be said about the E > Co jump.

The Co > Ca jump is far more complex. Worse, it's often obscured through opaque words like "randomized, controlled study" or "scientific method" which are actually quite far away from the mechanisms which allow that jump to be made—they're more like implementation details obscuring a great API. Demonstrating clear arguments here (and not "rain + wet grass" oversimplified ones) could be a great boon to public reasoning.

What else can be done to reduce (2) without precluding (1)?

(*): Really (linear) correlation is just one kind of relationship-of-interest between things. This is often pointed out when people talk about correlation in terms like "circular relationships have 0 linear correlation, oh no!"

What I'd like to write instead might be E > M > C where M becomes "model building". Choosing to highlight linear correlation means that you're choosing a linear model. That might be perfect, or it might be wrong, but you still must choose it before you can structure your observations into evidence of some kind of causality. Generally, at this point, you would also want to begin developing covariates all in preparation for the C step.

<comment><USER13> Bear in mind that causality does not imply correlation. (I know I'm arguing with just one sentence in your post, but I think it needs to be pointed out.)

Sometimes you are observing controlled variables, in which case an counter- example like Friedman's thermostat will disprove this notion.

<comment><USER12> Yeah, I would like to leave "correlation" out of it entirely. The real steps are more like "model building" and "evidence collection", but those are both more complex and not common vernacular.

</comment></comment></comment><comment><USER14> 'localhost:8000' link on the page? Classy

</comment><comment><USER15> sexism is not one thing. it doesn't simply exist or not exist. it varies (in quantity, quality, nature, and scope) from company to company, community to community, and relationship to relationship.

"sexism in technology" is not an entity, it is a description of an aggregate. saying that the "sample size" is 1 is absurd.</comment>


Fed Adds $72.8B to Markets, Balance Sheet Moves to $4.07T - <AUTHOR> https://www.wsj.com/articles/fed-adds-72-8-billion-to-markets-balance-sheet-moves-to-4-07-trillion-11575642409 <comment><USER2> This podcast is very informative on this topic:

[https://www.bloomberg.com/news/articles/2019-11-11/this- is-w...](https://www.bloomberg.com/news/articles/2019-11-11/this-is-why-the- repo-markets-went-crazy-and-why-december-could-be-even-worse)

<comment><USER3> Here is another link to the podcast [https://podcasts.google.com/?feed=aHR0cDovL2ZlZWRzLmJsb29tYm...](https://podcasts.google.com/?feed=aHR0cDovL2ZlZWRzLmJsb29tYmVyZy5mbS9CTE0yMDA5ODM3NDc3&episode=YWM1OGQyNjgtMDI1NC0xMWVhLWE1ZjgtN2I4YTQ0OThmY2I5&hl=en&ved=2ahUKEwi8jPHZy6XmAhVjGDQIHTzvCrMQieUEegQIBhAK&ep=6&at=1575792300475)

</comment></comment><comment><USER4> Liquidity! because there's not enough oil to soothe the gears of the economy? Or is the root cause people hoarding money instead of pushing it back into the world?

<comment><USER5> Well injecting this money will definitely not help if it is the case of people hoarding money.

Also how come they cannot inject this money directly to citizens instead of large companies? Sure, inflation might be larger but what guarantees are there that injecting money to large companies won't create inflation later down the road.

<comment><USER6> Because citizens generally are not interested in an overnight loan? This repo funding is repaid the next day.

<comment><USER7> "overnight" \-- yeah, right, as if you cannot make another, and another "overnight" loan in perpetuity if you are a big player.

</comment></comment></comment></comment><comment><USER8> The Fed and bank bailouts are transferring wealth to the wealthy from everyone else. Fiat makes it all possible. It's not hard money. We must get back in a hard money system. Read or listen to "The Bitcoin Standard." Can also find author and podcasts on YouTube.

<comment><USER9> Deflationary currency is even worse than Fiat currency. We don't need irrecoverable recessions. We just need our governments to stop relying on trickle-down nonsense, and start injecting money at the bottom. We need to rely on and leverage the trickle-up economy that we've always had.

<comment><USER10> I don't think trickle down economics are what was being used for these bailouts.

The rationale behind the bailouts was that the failure of many of these large banks would have caused lots of trouble and additional damage to the system as a whole. Markets are controlled by consumer sentiment. The failure of any huge banks or other huge organizations like AIG would have caused a catastrophic run on the banks and even farther fall in the market.

Additionally, I believe overall the US government has netted more than $100B in bailouts.

The bailouts were most definitely a good idea according to essentially every expert out there.

But if anything, they should have extracted more from the companies they bailed out to limit the moral hazard that was created.

<comment><USER9> The bank bailouts is distinct from Quantitative Easing. The former was government backed loans to large banks. The latter is the Federal Reserve buying extremely over-valued financial assets (over-valued because of fraud), and then just financial assets in general, in order to prop up the price of these assets. The former was probably a necessary evil, but it should have come with more changes. The latter is less clear. Because of the massive amounts of fraud that occured, many citizens pension funds were extremely exposed to junk financial assets. So the Fed decided they couldn't let the market correct itself. But a better solution would have been a market correction combined with a direct stimulus to the lower and middle class.

</comment></comment></comment></comment><comment><USER11> I can't get through the paywall, but I'm not sure what the news is. The fed has been running this repo operation every day. On Thursday it was $78.7b, and on Wednesday it was $70.1b. This liquidity injection has been ongoing for a few months.

[https://apps.newyorkfed.org/markets/autorates/tomo- results-d...](https://apps.newyorkfed.org/markets/autorates/tomo-results- display?SHOWMORE=TRUE&startDate=01/01/2000&enddate=01/01/2000)

They are doing overnights to $120b daily.

[https://www.newyorkfed.org/markets/domestic-market- operation...](https://www.newyorkfed.org/markets/domestic-market- operations/monetary-policy-implementation/repo-reverse-repo- agreements/repurchase-agreement-operational-details)

<comment><USER12> FT describes an apparently escalating game of overnight "repo" borrowing, in order to meet regulatory limits, with the days at end of quarter apparently special:

[https://www.ft.com/content/1374afd4-181d-11ea-9ee4-11f260415...](https://www.ft.com/content/1374afd4-181d-11ea-9ee4-11f260415385)

This suggests a systemic instability.

<comment><USER11> There's definitely an imbalance at play here. But the Fed's actions have not been shifting dramatically. I don't know what the FT piece is referring to when they say they increased the size of Monday's operation. That is not reflected on the Fed's schedule of operations. The term offering Monday is distinct in the term length (~1 month), not its size. That means the value will be held on the Fed's books for longer than the 2-week term and overnight term operations that they've been running continuously.

[https://www.newyorkfed.org/markets/domestic-market- operation...](https://www.newyorkfed.org/markets/domestic-market- operations/monetary-policy-implementation/repo-reverse-repo- agreements/repurchase-agreement-operational-details#operation-schedule- parameters)

I expect this longer term offer is because there is the expectation of year- end stress in outlays and could destabilize the market toward year-end. This term offering runs through the first week of Jan, so they're hoping to smooth over the possibility of year-end illiquidity.

</comment></comment></comment><comment><USER13> some people are desparately preventing the stock market from crash.

<comment><USER14> Agree, this is now much more than a small dent in the Fed balance sheet, it is a new period of QE:

[https://www.federalreserve.gov/monetarypolicy/bst_recenttren...](https://www.federalreserve.gov/monetarypolicy/bst_recenttrends.htm)

I am bearish but I can't say I am excited to bet against the Fed!

<comment><USER15> You don't need to bet against the Fed, you just need to bet against the dollar price index going up.

<comment><USER16> If the dollar and the stock market are "going to crash", where should one put their money?

<comment><USER17> In the market. Let it crash. In 5 years you will be back to where you were or in the green.

<comment><USER16> Would it be better to hold cash and buy in on the dip?

<comment><USER18> Nothing says you can't do both

</comment></comment></comment></comment></comment></comment></comment><comment><AUTHOR> The goals of monetary policy are to promote maximum employment, stable prices and moderate long-term interest rates _so long as those goals do not conflict with price supports for assets_.

<comment><USER19> I think the fed is mostly concerned about price inflation of a reasonably moral basket of goods. They want it around 2%. It's the "vig" for participating in economic life.

Employment and everything else will take care of itself.

<comment><USER20> The US Fed has a dual mandate of both full employment and inflation control. Other central banks around the world only have mandates for inflation control, but the US is special in this regard.

<comment><USER19> It's just political / PR nonsense. The fed doesn't care about employment (except how it impacts prices). And they shouldn't. If they did, they'd risk hyper inflation and things for everyone would get much much worse.

Anyways, the fed can only do so much but try to keep the laws of physics in place. Government spending, Entitlements and taxes are the real levers of economic influence.

US government policy has traditionally relied on a combination of entrepreneurs and military might for global economic mastery. Trump is (ironically) undermining military might by destabilizing alliances. Entrepreneurs are doing ok. He is increasing labor participation or at least stopping the decline. This all is making global economy more efficient and meritorious.

Trade wars are bad, yes, but China was/is a bad actor and was perverting the US economy by making it lazy. Trump is trying to kick it in the ass and get it going again.

I hate Trump, but my feeling is that these fed injections might just be the fact that global efficiencies are pushing rates down below what the fed is comfortable with. We will pay for all of this in other ways no doubt, eg, climate change, weaker social safety nets, nuclear proliferation, etc.

Short term, things look good. Longer term there are reasons to freak out. It's not really trumps fault though, people just generally can't reason with the fact that you can make things good and bad at the same time, so arguments and debates are all pretty much irrational. Why not vote in Trump, nobody else is making sense either.

Andrew Yang is a perfect example, the only guy who is talking sanity but is at 3% in the polling.

<comment><USER21> They really do care about employment. Fed behavior can be approximated by a Taylor rule: [https://en.wikipedia.org/wiki/Taylor_rule](https://en.wikipedia.org/wiki/Taylor_rule)

<comment><USER22> Cause or effect?

</comment></comment></comment></comment></comment></comment><comment><USER23> QE is proving to be a very inefficient way to inflate the economy. The idea was that the banks would take the capital and lend it to corporations for productive investment, but I see no sign of this - the money is being laundered through dividends and financial engineering to the 0.1%

If I were the next president I would establish a national investment bank and use it to undertake infrastructure improvement / development by US companies in both the US and abroad (because stimulating the economy else where would be pretty useful to the US as well). I would mandate that the fed would have to invest in the national bank first and the national bank would be allowed to bail out other banks (with "liquidity") only if it received substantial near term reward from the investment (therefore definitely only liquidity).

The problem with this operation by the fed is that every banks finance department has priced it in for this quarter, so they're all going with the begging bowl now - moral hazard write large!

<comment><USER24> > QE is proving to be a very inefficient way to inflate the economy. The idea > was that the banks would take the capital and lend it to corporations for > productive investment, but I see no sign of this - the money is being > laundered through dividends and financial engineering to the 0.1%

Even if we accept your premise that that is what is happening, what is it that you think the 0.1% are doing with that money? They're doing one of two things:

1\. Reinvesting it in other companies, who are then using that capital to invest in their business.

2\. Buying goods and services from companies who use that revenue to invest in their business.

> If I were the next president I would establish a national investment bank > and use it to undertake infrastructure improvement / development by US > companies in both the US and abroad (because stimulating the economy else > where would be pretty useful to the US as well).

Why do we need to establish a national investment bank to undertake infrastructure projects? The federal government undertakes infrastructure projects all the time.

> I would mandate that the fed would have to invest in the national bank first > and the national bank would be allowed to bail out other banks (with > "liquidity") only if it received substantial near term reward from the > investment (therefore definitely only liquidity).

Are you aware that the US government made a very healthy profit by bailing out the banks in 2008[1]?

> The problem with this operation by the fed is that every banks finance > department has priced it in for this quarter, so they're all going with the > begging bowl now - moral hazard write large!

That's...actually exactly the point of it. There is no 'moral hazard' here. The fed _wants_ the market to anticipate its actions, and react to them pre- emptively. This allows the fed to actually do less than they otherwise might have to. If the Fed's goal is to drive rates down to a certain point, and the market knows they'll spend the money to do it, the market will do it for them. That's how arbitrage works. This is the system working exactly as intended.

1\. [https://www.washingtonpost.com/business/economy/bailout- high...](https://www.washingtonpost.com/business/economy/bailout-highly- profitable-for-taxpayers-when-you-look-at-the-right- numbers/2015/01/01/dc2a05a6-8fa5-11e4-a412-4b735edc7175_story.html)

<comment><USER25> This is effectively equivalent to "trickle down economics." Ie, if we give money to the rich, they will use it to buy things or to invest, thereby growing the pie for everyone.

Of course, merely saying "trickle down" is enough to get a big laugh out of all but most co-opted of economists. It has repeatedly failed to achieve its stated objectives, and you just have to look at the wealth gap between the 99%, the 1%, and the .01% over the last 10 years to see what the actual effect is.

<comment><USER24> > This is effectively equivalent to "trickle down economics." Ie, if we give > money to the rich, they will use it to buy things or to invest, thereby > growing the pie for everyone.

Trickle down economics is a theory about who _benefits_ from giving money to the wealthy. I'm not making any statements about who benefits. What I am saying is that when some companies return cash to shareholders, other companies receive that cash in the form of either revenue or investment. This is how the economy works. It is, more or less, a closed system.

</comment></comment></comment></comment><comment><USER26> Since everyone is clearly watching this, the problem will occur elsewhere.

<comment><USER27> With this much printing (without requisite gains in GDP), it means there's _already_ a problem, but we don't understand it yet.

<comment><USER26> Well the fed is often liquidity of last resort so the question is why they're providing it overnight. The chatter is Deutsche bank is the cause of it which would seem to imply that the problem is contained. Basically banks don't trust each other right now which is what happened before the last tanking but it also happens frequently without tanking. So I don't know what this really signals.

</comment></comment></comment><comment><USER28> "Fed adds half a Bezos to the markets"

</comment><comment><USER29> The geography of dollar funding of non-US banks

[https://www.bis.org/publ/qtrpdf/r_qt1812b.htm](https://www.bis.org/publ/qtrpdf/r_qt1812b.htm)

</comment><comment><USER30> There is a general dollar shortage in the world, explaining things as superficially diverse as this, increasing Saudi desperation (as evidenced by the machinations behind their pseudo-IPO), CCP forbearance on HK (relatively speaking), and the covered interest parity puzzle.

I don't want to explain more but some might want to look into it.

<comment><USER7> There is no dollar shortage, there is a shortage of suckers wanting to hold their dollars in regular bank accounts due to low interest rates.

As long as the the FED is willing to provide liquidity no questions asked, why would you hold dollars?

Just buy high yield bonds and when you want liquidity, you call the FED and loan your junk bonds for real dollars and you pocket the interest rate difference.

<comment><USER18> I'd really rather use my 2% savings account than the 1.61% from short term treasuries, 1.65% from intermediate term treasuries, or 2.1% from long term treasuries.*

Or maybe you're making snarky comment on how large banks were bailed out in 2008 by the Fed by which the Fed traded a portion of it's "good" treasury debt for bad bank debt (CDOs). If that's the case than I agree because I dislike how the Fed bails out the banksters more than the common man.

*Source for annual interest rates on common bonds: [https://investor.vanguard.com/etf/list#/etf/asset-class/mont...](https://investor.vanguard.com/etf/list#/etf/asset-class/month-end-returns)

</comment></comment></comment><comment><USER31> I'm already fairly stalwart in the position that Fed-style reserve banking is not part of a compelling future for humanity as economies evolve into the information age, but this kind of side-handed QE makes it easier and easier to feel comfortable in that position.

<comment><USER32> [https://www.nybooks.com/articles/2019/12/05/against- economic...](https://www.nybooks.com/articles/2019/12/05/against-economics/)

</comment></comment><comment><USER33> This debt will all be paid by the US dollar falling dramatically. Many assets will keep their inflated prices in nominal terms though still good buys out there.</comment>


Zipdecode - <AUTHOR> http://benfry.com/zipdecode/

<comment><USER2> I remember this from nearly 10 years ago. Though I remember it in Java, I guess maybe it has been ported?

Edit: duh, it says right at the bottom it has been converted.

</comment><comment><USER3> I'm fascinated by maps like this</comment>


Facebook Commits $1B Toward Affordable Housing in Silicon Valley - <AUTHOR> https://www.wsj.com/articles/facebook-donating-1-billion-toward-affordable-housing-in-silicon-valley-11571760000?mod=rsswn <comment><USER2> Why doesn't anyone seem to be interested in this?</comment>


Facebook Scaled Back Voter Registration Kickoff - <AUTHOR> https://www.techtransparencyproject.org/articles/facebook-scaled-back-voter-registration-kickoff <comment><USER2> It should say something that one party is against voting. Sadly it doesn't seem to.

<comment><USER3> They're not against voting. They're against certain people voting.

<comment><USER4> A few years ago I would have agreed with you, but now they really do seem to be open to the idea of full dictatorship.

<comment><USER5> You know who else literally was open to the idea of full dictatorship?

<comment><USER6> Bowser?

<comment><USER7> Ganondorf?

</comment></comment></comment></comment></comment></comment><comment><USER8> Damned if you do/don't

</comment><comment><USER9> >The initiative, however, immediately drew the ire of the Trump campaign, which accused Facebook—without evidence—of secretly using the effort to help Biden.

Evidence does exist, so this statement is baffling. As recently as June content moderators on Facebook were covertly recorded bragging about being politically biased. [1]

The same moderators explicitly claimed the company was "anti-Trump", and said "I think [all of the moderators] do that [delete posts for political reasons]".

Reading into the source (Campaign for Accountability), it's clear why they neglected to mention the evidence -- because they are politically biased themselves. [2]

[1] [https://www.realclearpolitics.com/video/2020/06/23/facebook_...](https://www.realclearpolitics.com/video/2020/06/23/facebook_content_moderator_if_someones_wearing_maga_hat_im_going_to_delete_them_for_terrorism.html)

[2] [https://en.wikipedia.org/wiki/Campaign_for_Accountability](https://en.wikipedia.org/wiki/Campaign_for_Accountability)

<comment><USER10> > The same moderators explicitly claimed the company was "anti-Trump"

Well, they're not. They have even carved out special exceptions to their content policy _explicitly_ to prevent any punishment of Trump's accounts even when he violates the policy.

<comment><USER11> To be fair, "anti-Trump" can mean (and probably means) bias against Trump supporters, not his accounts.

</comment></comment></comment><comment><USER12> Isn't it the duty of the agency responsible for conducting elections that has to do this?

FB should be ignored and media should not promote these articles. Sure, they can help if they want, but the primary information source should be the nodal election agency.

Americans have been brainwashed to view the government as some sort of an evil lunatic preventing all of them from becoming billionaires. This is a dangerous narrative and will ultimately lead the nation to dictatorship, as is already happening.

<comment><USER13> So I shouldn't view the government as being some sort of evil lunatic, but it is already becoming a dictatorship?</comment></comment>


Ruby Under a Microscope: Learning Ruby Internals through Experiment - <AUTHOR> http://patshaughnessy.net/ruby-under-a-microscope

<comment><USER2> Before Pat announced he was writing an ebook, I was following the articles he wrote on his blog. He has a real knack for making difficult concepts easy to understand using diagrams and simple language. And on top of that, he asks interesting questions. You might think that Ruby internals are a dull topic, but everything I've seen him cover has fascinated me.

Because I've already learned so much from this articles, I was eager to buy this when I saw the announcement in my inbox.

</comment><comment><USER3> Thanks for posting this :) ...I'm happy to answer any questions anyone has.

<comment><USER4> Hey pat, how do you understand the internal code so well ? I read your free chapter on Ruby's Hash table and I loved every bit of it. It would be great if you can share the process you go through when you read the source code, so maybe I can apply it in the future. By the way, congrats for the release !

<comment><USER5> The code for MRI is.. idiomatic, but actually pretty easy to read. I last did C full time in the 90s and so am mostly just a 'reader' now but it's not hard to follow, although some of the _reasoning_ behind doing things a certain way in MRI is unfathomable.. ;-)

<comment><USER6> I don't understand the wording of your first sentence. Did you mean "idiotic" or?

<comment><USER7> <https://encrypted.google.com/search?q=define%3Aidiom>

<comment><USER6> Yes, thanks. I know what idiomatic means, but the OP either does not or just wrote an awkward sentence.

</comment></comment></comment></comment></comment></comment><comment><USER8> Is anyone aware of a similar book covering Python internals at this level of depth?

</comment><comment><USER9> Ah weird, I always assumed "modern" programming languages were bootstrapped (for all the advantages that it implies), didn't know it's not the case for Ruby. Good to know.

<comment><USER10> I guess that depends on what you consider Ruby. MRI isn't, but Rubinius is.

</comment></comment><comment><USER11> It's just raining amazing Ruby books lately. Last week there was Working With TCP Sockets and now this. I'm having trouble finding time for them all :).

<comment><USER12> Cool, I just bought Ruby Under a Microscope and then looked up <http://workingwithtcpsockets.com/> to buy that book, too.

I'm at a point in my Ruby career where I've begun peeking under all the abstractions I use after hitting performance bottlenecks. Performance has even led me to all sorts of new tools like using a SAX XML parser (using the Ox gem) instead of trying to walk the XML DOM in memory with Nokogiri.

<comment><USER13> Just out of curiosity:

Nokogiri has SAX capabilities as well (<http://nokogiri.org/Nokogiri/XML/SAX/Document.html>). Any reason not to use them, especially as Nokogiri also has native JRuby support?

<comment><USER12> It was just for fun. Both SAX APIs are sorta nebulous as it is to someone like me who's been so used to an abundance of tutorials on the tools I regularly use. Ox's SAX API was better, though.

I had just wanted to speed up my XML parser and stumbled upon a Nokogiri vs Ox benchmark (<http://www.ohler.com/dev/xml_with_ruby/xml_with_ruby.html>). So I tried Ox.

Here's my effort to benchmark Nokogiri vs Ox, DOM vs SAX parsing on an 80mb XML file with 38k nodes: <https://gist.github.com/3977120>

        Ox DOM: 6 seconds (550mb)
        Ox SAX: 6 seconds (12mb)
        Nokogiri DOM: 13 seconds (900mb)
        Nokogiri SAX: 24 seconds (11.8mb)

I'm no benchmarking wizard, though.

<comment><USER13> Thank you!

</comment></comment></comment></comment></comment><comment><USER14> why not make available on Amazon as kindle version? I always think twice before share my card info on random websites.

<comment><USER5> I'd usually agree with a comment like this but in this case, it has so many (useful) color diagrams that while it wouldn't be impossible to put on the Kindle, I don't think you'd get an amazing experience. Could be wrong though!

<comment><USER14> Since kindle fire, the books can be posted in colors :)

<comment><USER5> That's true, but I suspect the vast majority of Kindle users and buyers are stuck on 6" greyscale screens which aren't great for diagrams or code without a _lot_ of care. "Source code looks horrible on the Kindle edition!" is one of the most common complaints I've seen on Kindle books so far, but it's definitely getting better.

</comment></comment></comment></comment><comment><USER15> Great work, Pat!

</comment><comment><USER16> "Ruby Under a Microscope" I was expecting some beautiful images ... nevermind, my bad

<comment><USER5> Enjoy this one: <http://micro.magnet.fsu.edu/birthstones/pages/ruby.html>

<comment><USER3> Nice! I think I have my design concept for RUAM part 2! :)</comment></comment></comment>


Ask HN: I'm late to the crypto currencies boom, what are my options? - <AUTHOR> Hi,
5+ years ago I started working for a Life sciences company, and I was pretty stuck in that landscape, doing basically nothing but that.
In retrospect, it was foolish of me not to get some BTC since they were $1 per coin (!!) last time I checked.
I read about new stuff that happened, ETH, and now Filecoin, and i was wondering: what are my options comming this late into the game??
As I understand, small scale mining is dead for years now, so, what is the best investment I could do now?
Thanks for your answers!! <comment><USER2> How people lose their shirts in any market:

\- Trying to time the market

\- Trying to get rich quick

\- Believing that past results indicate future performance

\- Making decisions based on emotions (regret, fear of missing out, greed, wishful thinking, etc)

Your comments make it seem as though you're doing at least half of the above, so be very careful.

Also...

> In retrospect, it was foolish of me not to get some BTC since they were $1 > per coin (!!) last time I checked.

Everything is obvious in retrospect. Were you also foolish to not buy TSLA in 2011 when it was $30? No, because you didn't know then what you know now: That TSLA reached $350 and BTC reached $3,000. In the same vein, you are not _not_ foolish (uuh..) for _not_ (uuuh...) buying any other cheap investments that did _not_ (oh lord...) grow insanely fast. In other words, you should judge past decisions by the information you had at the time, not by the information you have now.

<comment><USER3> Totally unrelated - I noticed you use a mailto: as your contact on your website. Do you find that a mailto: works better than a contact form? I personally find links that open applications on my computer to be overly invasive. Does that funnel actually perform better?

<comment><USER2> I agree it's not optimal but it beats dealing with spam form submissions or creating a form that prevents spam submissions in the first place. I know there are solutions out there, but it hasn't been a priority for me.

</comment></comment></comment><comment><USER4> My advice would be to stay away from ICOs entirely.

BTC and ETH are the "safest" bets right now. LTC has been really steady and is probably the most sensible investment, but will probably not take off like BTC did.

BCH (Bitcoin cash) is the newest fork of BTC and has been volatile but has a lot of people backing it. I would look it to it at least.

I've been keeping an eye on EOS and DASH but not really sold on them yet.

Biggest advice I can give is - don't let FOMO guide your decisions. Diversify your portfolio and don't micromanage it or keep an eye on the charts all day. You'll drive your self mad.

Also - don't expect to make ANY money of crypto. It's a gamble, like a scratch ticket. Only invest what you can absolutely afford to lose, because chances are you will.

<comment><USER5> What about GPU mining ETH and others via something like nicehash? Is this a reasonably safe bet (relative to just buying the coins outright)? I'm mostly looking at it as a means of building a new workstation and have it pay for itself over the course of a year or so while I'm not using it.

<comment><USER6> Unless you are situated next to a hydro electric power station that provides very cheap electricity stay away from this. you will build a rig then as the difficulty goes up you'll watch all your profit eaten away by electricity costs.

<comment><USER5> Yeah, I was sort of concerned about what 20xx Nvidia cards could end up doing to the difficulty. I'm really only considering it because I'd also use those cards for other things.

</comment></comment></comment></comment><comment><USER7> I've been in the crypto space since 2011 and I've seen these bubbles come and go. When people like yourself come into the game though (and this is not an insult) I'm pretty sure the speculative game is just about to end. I don't know when - could bitcoin go to $4, $5, $6, $7k+ sure could happen in even a matter of days, but we're close to the end here IMO.

You can do small scale mining with GPUs and maintain a profit right now - zcash for example is profitable (but very small) so if that is interesting you could experiment there. 1 GPU maybe $400 or something minimal damage if the bubble pops, maybe worst case resell the card for $100 or something - that's a reasonable plan maybe I'd recommend. There are of course other more risky options.

As others have mentioned - please understand that ICOs are EXTREMELY risky and speculative. Even bitcoin and ethereum which many say are the safest - and I agree - the level of speculation in them is extreme and if you told me that ethereum will drop in value by 80% in the next 2 months, I would not bat an eye.

The level of speculation is extreme - you should realize it because even now you yourself are interested in investing - tons of people like you are doing the same irrespective of any actual intrinsic value. It is the hallmark of a bubble - and we're in the middle of it, but we can't describe with certainty until it is over.

Just don't mortgage the house man, and stay safe.

</comment><comment><USER8> I actually think staying away was the smartest thing you've done!

I can't think of a worse reason to invest in an asset and market one doesn't understand than fear of missing out.

</comment><comment><USER9> Do some research on how sketchy some of the big players in the exchange scene are. Look at the "hack" that happened at Bitfinex. Can anyone cash out USD from there? Try and find out who owns Poloniex or where they operate out of. Check out how Bittrex only lists a storefront in a half abandoned strip mall in Las Vegas as their location, and how much the coins traded on that platform have increased in price recently.

How much do you trust a business that won't list a phone number or physical address? And there's no information on who owns or operates the business? And there's no information on how they are licensed to operate? And there's no details on if or how customer funds are held segregated from operating funds?

Don't let greed overcome your better judgement.

</comment><comment><USER10> I'm not sure you're late. There is still at least one, maybe two orders of magnitude growth possible/likely for BTC/Cryptos in my opinion. It is really easy to make mistakes if you're trading. Buy and hold probably still works, but this whole area is high risk. The most likely scenario, for most, is to buy, at the top of a hype cycle, then get depressed and sell when it falls 60%, only to see it eventually triple again in 3 years. Don't put in more than you can afford to lose. Cryptos are a rollercoaster, and they eat shaky-hands alive.

Personally, I only hold stores of value or smart contract platforms. My reasoning is that successful platform(s) needs to be of a certain size as part of that success and their market cap would need to encompass value. That dictates growth ahead.

For tokens like filecoin, it is far less clear to me how to extrapolate their eventual end-state size, and therefore whether they will be worth anything in a few years. Instead of comparing coin market caps, a better comparison might be per-unit AWS storage costs vs. their storage rates * some risk-adjusted probability of network success. I feel like that's not the comparison people are looking at.

You're right about mining--in almost all cases, unless you have free power, or are an ASIC manufacturer, it is a losing game. If you're a believer, the better play is to buy the coin.

</comment><comment><USER11> In a gold rush, don't buy gold, sell shovels. Be a developer or buy stock in GPU companies. Don't buy cryptocurrencies.

<comment><USER6> Except it's not a gold rush. We know exactly how many bitcoins will ever be available. It's a scarce resource. Therefore, it's not unreasonable to buy and hold bitcoin in any amount.

Also, buying stock in GPU companies (putting aside risk of whatever their other business segments are doing, bad management, bad accounting, market risk, etc) implies that you think crypto market caps will expand (if mining is more profitable that imolies price has gone up). If that's true, why not just buy the bitcoin?

<comment><USER3> Was gold not a scarce resource?

<comment><USER6> Yes it turned out to be, but did we know it at the time? If you bought gold during the CA gold rush, how did you know there wasn't 50 million tons of it waiting to be dug up? Turns out you would have done just fine buying gold in 1850. Bitcoin's supply is definitely limited.

</comment></comment></comment></comment><comment><USER12> If all you want to do is earn money, they stay away and put your money in an index fund. Way safer, much better chances of making money. Crypto currencies are not a safe investment, you are not foolish by staying away, many people have lost a lot of money already.

If you are just curious and want to see what it's all about, then bob's your uncle!

</comment><comment><USER13> Start at the beginning. Read about how Bitcoin works. Learn about the security model and how it differs from traditional banking. Try buying a small amount of coin, putting it into cold storage (paper wallet), then selling it back for USD.

Then when you're comfortable with that basic knowledge, start following the history of Bitcoin and current events. Get a basic understanding of the events of this year. Learn about other cryptos, too. You might not have an opinion about any of it, or you might.

Earlier this year I was trying to explain Bitcoin to a friend of mine and he expressed the common sentiment, "I wish I had gotten in sooner." That was when Bitcoin was $1,200. Now it's trading at over $3,400. In the 1930s, people were saying the same thing about Coca-Cola stocks: I should have bought them in 1918. Nobody can predict the future. Investing is nothing but learning and applying what you learn. If you understand and like something, invest what you can afford. If not, don't.

</comment><comment><USER14> There will be a lot of people who will lose a lot of money in that space soon. I would advice staying away.

</comment><comment><USER15> > investment

Invest your time into learning to have common sense.

Cryptocurrencies are highly volatile, unsafe speculation objects.

</comment><comment><USER16> If crypto-currencies really succeed, they're going to be worth a lot more than they are currently. They're still a really tiny market. For comparison, Bitcoin is ~60 billion USD and all the gold ever mined would be worth trillions.

Don't look at it like a get rich quick scheme. Think of it as an asset class you invest in. Set aside what you can each month and buy a basket of currencies.

Become educated about coins and get a sense of what real market innovation and real teams look like. There's a lot of scams out there. Most ICOs are scams in my opinion.

If you're looking for a coin to get into that's relatively new but has a lot of potential, my bet is Filecoin.

</comment><comment><USER17> First, fill up your portfolio for lower risk categories.

Don't make high risk investments until you have met your quota for investments that will pay predictable returns for any event short of the end of civilization, those that will pay predictable returns whenever the market hasn't just unexpectedly crashed within the last few months, those with a solid business model and a relatively secure customer base, and those that look promising and might just get lucky one day in the future.

If you have a dollar that you could burn to ashes just for fun, you can spend that one on cryptocurrency speculation.

That's gambling money. If you feel lucky, you can try to pick winners, but if you want to win in the long run, you'll need to just buy some of each one. Just weight your purchases by the estimated market cap of each individual currency. You'll end up with mostly Bitcoin, Ethereum, and Litecoin, and a little bit of everything else. Rebalance occasionally.

For purposes of your future planning, just pretend that the value in your crypto portfolio is $0. Anything you put into it can drop to zero overnight, if a hacking/looting scandal breaks on the news right after you go to sleep. You're only allowed to count gains when you actually take them out of the crypto ecosystem and put them into some other asset class.

</comment><comment><USER18> It's still early. Had you bought at $1 or even $0.01, would you have really held until $3500? At $40 you would have had decided whether to sell or not, then again at $200, and at $600, and at $400, and then at $1000, etc. I think people like to gloss over all those difficult compounding decisions about whether sell or hodl.

On another note, seeing these as assets that merely store value for speculation may be a shallow view. However, it may be the case today. Long- term, the industry is betting that there are far deeper drivers of utility that will be unearthed in the next couple of years. This is where the real value can be captured and where fortunes may be made. Thinking about "what currency should I make a quick buck off of" misses a lot of the potential.

Here's a reading list: [https://medium.com/@dwr/digital-currency-reading- list-6219f1...](https://medium.com/@dwr/digital-currency-reading- list-6219f1623bfd)

</comment><comment><USER19> The crypto coin phenomenon feels a lot like the dotcom bubble of the 90s. You have to look back at that and say there was a lot of hype and a lot of bad predictions/investments, but there was also a leap forward in tech.

The blockchain is going to change how things happen in peoples daily lives in the same way that TCP/IP does now (Everybody uses it, next to nobody knows/cares about it).

The million dollar question is really which company do you back? Which is the next Google?

Blockchain technology is still in its infancy, I'd recommend researching the top coins/companies. Look at what they are offering, what problems are they solving, are they making the world a better place, do they have the team to make that happen?

95% of the coins out there, to my research, are garbage and little more than a scam. But I like those that are actually backed by a team and institutional investment (i.e. Ripple).

</comment><comment><USER20> I too am late to the boom but I also don't see cryptocurrencies as investment vehicles per se. I wouldn't go out and buy any BTC, ETH or LTC just to hold and hope it increases in value. What I am doing, though, is starting to do some automated trading around cryptocurrencies. By taking advantage of the fact there is high volatility and the ability to buy partial coins, I look to make money on the movement of ETH/BTC/LTC.

Now I'm not an idiot. I know it is risky which is why I'm only putting in a small amount I know I'm comfortable losing. I also look at this as a technical challenge as well since I'm building the entire platform in Elixir. It's a win-win. If I make money then I'm happy. If I lose the little I put in I get bummed but then will have a large production Elixir application in my name that I could talk about in the future.

</comment><comment><USER21> When I got in at ~$150/BTC I thought I was late because the last time I looked was < $0.10, & even so I was able to profit enough to perma-grin for weeks. However after having a better look at the landscape I'm not what could be called 'bullish' by any means. I've since decided BTC-type tokens are inately inferior to 'smart contract'-types. I've also developed a personal opinion that distributed computing-types will come to outshine the rest. I've been lurking & watching MaidSafe from before they rewrote everything in rust, & to me at least it's what seems most promising long-term. In the meantime I don't spend my money on speculation, since I already got lucky when BTC hit $1k that first time & I don't want to press my luck.

</comment><comment><USER22> I second the buy a fixed USD per two weeks / month. I kick myself for a lot of btc miscalculation (love my 20ish btc t-shirt) but that one has at least left me with a sizable (but less than 10x) return on average if I liquidated right now, rather than nothing if I just stayed away. I also figured the price would improve after the halving day last year since the supply of new bitcoin would go down, it did, so since I think bitcoin can last at least until 2020 (next halving) as the biggest cryptocurrency I figure buying more now is fine too. What other easy-to-buy asset offers the same chance at 2x+ over 3 years? I still put most spare income into an index fund with the conservative 5%/yr target that lets you retire when 4% meets cost of living, but if bitcoin keeps growing I'll soon have more in that...

</comment><comment><USER23> Small scale mining is not so much dead as on the edge of profitability.

I have two graphics cards, I started mining ether about two weeks ago. I have about 0.2Eth now. This is not a huge amount, but over a few more weeks I intend to get a few more cards and build up to holding a few ETH and a few ZEC. I may mine other currencies if they become profitable, but will likely sell any gains for ETH immediately.

It's not exactly a time of bonanza AFAICT, but if you just want to get and hold a few things you can still do it.

I too regret not sinking £50 into BTC when it last plummeted into the $0.5 USD range, just to speculate, which I was considering... But them's the breaks.

\--edit-- I'm not claiming this is a profitable way to operate! It's just what I'm doing to get my hands on some smallish quantities of the currencies.

<comment><USER24> The best thing about Cryptocurrencies is you still can buy $50 worth. Sure 1/700 of a bitcoin isn't much, but it's far more approachable compared to some other investment vehicles like a share of Amazon. Wasn't it Mcaffe saying that Bitcoin would break $500k[1]? So like $50 now is a stake in seeing Mcaffe "eat his dick" or you have a 142x return on your investment.

[1][https://cointelegraph.com/news/mcafee-stakes-his- name-10-mln...](https://cointelegraph.com/news/mcafee-stakes-his-name-10-mln- on-bitcoin-split)

<comment><USER23> I'm not sure that's the _best_ thing...

</comment></comment></comment><comment><USER25> The best strategy for small investors would be to purchase bitcoin monthly for a fixed amount of fiat (say 100 USD) and hold it. It'll come in handy when USD goes bust (come april 2018)

<comment><AUTHOR> Actually, that sounds reasonable. Thanks.

Any prediction on what "new" currency could emerge, or will it be only ETH and bTC?

<comment><USER26> Most coins are now BTC imitators with some slight variation. ETH is tiring complete and is aimed at smart contracts, however the supply of ETH is relatively unlimited, unlike BTC which has a fixed amount.

Alt coins vary things like total number of coins or block rate and others look to improve aspects of BTC such as anonymity (Zcash and Monero) it's worth looking at the tech behind them to see whether you think it is worth investing in.

Many early coins such as PPC and NVC are essentially scams but something like NMC was trying to do something genuinely new, although the last I heard a serious security flaw existed in NMC which if it was widely understood should mean the death of the coin because it is no longer being developed as it is mainly a speculative vehicle it has stayed alive.

<comment><USER27> I think you mean mean ETH is turing complete :) Awesome typo.

</comment></comment></comment></comment><comment><USER28> Personally, I am a fan of Buffett's "Circle of Competence" theory. Until I have a firm grasp of concepts I am not buying anything because someone says so.

So when my relatives kept bugging me about this crypto-thing, I have been reading up and writing small layman blog entries for them. Something in the vein of ELIF.

Once I have a firm grasp of concepts then I might decide whether to buy or not.

</comment><comment><USER29> Just get funds you can comfortably afford into Ethereum and Bitcoin, rather than sitting on the sidelines effectively trying to time the market. You might not get 1000x returns but you will kick yourself if Eth goes to even just 1k, which it very well could in the short term (it could also retrace to $90, who knows)

</comment><comment><USER30> This is what Goldman is telling its clients -

[https://www.bloomberg.com/news/articles/2017-08-09/here-s- wh...](https://www.bloomberg.com/news/articles/2017-08-09/here-s-what-goldman- is-telling-big-money-clients-about-bitcoin)

</comment><comment><USER31> IOTA might be interesting to look at

<comment><USER32> How tested is the tech? It uses tangles instead of a blockchain, right?

<comment><USER31> Well, the funny thing is, there are no transaction fees, each time you want to send a transaction, you have to validate 2 other transactions. More transactions on the blockchain in bitcoin results in higher fees/slower transactions, with IOTA it's the complete opposite because more transactions automatically get validated. I still have a lot of reading to do however.

</comment></comment></comment><comment><USER33> 1: Buy Bitcoin, 2: Figure out the next alt-coin (I like ZCash but presently own none of it.), 3: Learn to program Blockchain stuff and become a consultant... 4: Become an alt-coin day trader 5) Mine some alt-coins 6) Be creative the space is still young

<comment><USER34> Instead of ZCash look into Monero. It's 100% about privacy and that's what a free society needs to grow.

<comment><USER10> I agree, and I think once monero gets some better wallet solutions, it will be a catalyst.

</comment></comment></comment><comment><USER35> stay away from 'Cryptos' until after the 4th Turning has commenced by then you won't need it anyway as societies & generations fluctuate forwards/backwards or up and down depending on your perspective. No matter where humans have congregated there is no evidence that they ever sustain any exponential direction as a continuous process. As Professor E.O Wilson has clearly indicated it is unlikely that humans will survive their own phases of infrequent enlightenment and decline into apocryphal ignorance whilst the cosmos continues.

</comment><comment><USER36> I agree with xsynonym - stay away from ICOs.

If wishes were horses... I wish I'd been born 10 years earlier and bought shares in Microsoft and Apple!

There's no way of telling what will work and what won't (and also no way of telling what will continue to work - hence the gamble in any sort of investment).

Any investment should be done with as much emotional-detachment as possible - you have to see the investment money as something that won't impact your personal life in the slightest, whether it rises or sinks.

In this case, Bitcoin is a relatively safe buy, with Ethereum as slightly less so. Monero i bleeding edge, but has great potential.

I would read up on as many of the services being offered by the cryptocurrencies (or services) you're interested in as you can, and base your investment on what you perceive to have the biggest impact to their relative industries in the future.

It's the same approach to buying penny stocks, effectively...

</comment><comment><AUTHOR> UPDATE:

Just to clarify, I do not have access to anything that you might call substantial money, nor do i plan to spend even 1/30 of my monthly income.

I just wonder what could I do if I spend my monthly budget that I dedicated to buying fun steam games and silly hardware (e.g. buying camera lenses even tho I shoot as total amateur 5 times per year)

I was just wandering what can i do if I redirect that small amount of money + utilizing some of my spare time and computers/programming knowledge.

But, as I was saying, I totally missed on the whole field, so I don't even know where to start.

I want to approac this as a developer, maybe write some software, maybe host some trading bots (is that even viable strategy?)

I will NOT spent any money or savings, rest assured, and I really do appreciate your concern! I can tell it was honest!

<comment><USER21> Being a developer you might enjoy [https://cryptotrader.org](https://cryptotrader.org)

Years ago I used an EMA bot & got a feel for what kind of volatility patterns it was good with. Haven't kept up with any of that for years now though.

</comment></comment><comment><USER37> Does anyone else care about the environmental waste of churning banks of GPUs to "mine" an imaginary asset or is that just me

</comment><comment><USER38> My advice: popcorn on the sidelines...

<comment><USER39> For cryptocurrencies the appropriate forum for this is [http://reddit.com/r/Buttcoin](http://reddit.com/r/Buttcoin)

(frequented by spectators and speculators)

</comment></comment><comment><USER40> Any comment on Tezos?

<comment><USER10> What they're doing is really interesting and solves some of the major problems in crypto (governance and smart contract safety). Now it comes down to shipping, and we all know how hard that can be at times.

</comment></comment><comment><USER41> Wait for a dip. Market has been way up since Aug 1. Some controversy about Segwit2x could cause some dips in October/November.

</comment><comment><USER42> just stay away from stuff you do not understand and you'll do just great...

</comment><comment><USER32> r/Monero. See for yourself.

</comment><comment><USER43> NEO is a new coin to keep your eye on.

<comment><AUTHOR> care to explain?

<comment><USER44> Its a smart contract platform, written in C#, that is based in China. It claims some features that Ethereum doesn't have such as parallel contract execution, smart contract authoring in C#, and instead of general mining, they have an Accountant node which is elected by participants of the network and validates all transactions (similar-ish to DPOS).

Their documentation says that one feature of the Account node is that you can pay them off chain to get your contracts mined for free.

I plan on building and testing NEO this weekend, but it does concern me that the blockchain is developed in China and 'elects' nodes that have full control over the network. It strongly implies that China will make them elect govt. controlled nodes to be accountants, but that could just be me being paranoid.

Their github is here (and not very active): [https://github.com/neo- project](https://github.com/neo-project)

I chose not to invest after looking at their code, especially at the quality of their compiler, which is very messy code without any test cases, but I can't help but play around with it in a private network.</comment></comment></comment>


Why operators are useful (2019) - <AUTHOR> https://firstname.lastname@example.com/message/52DLME5DKNZYFEETCTRENRNKWJ2B4DD5/ <comment><USER2> Slightly orthogonal to the original point, but worth noting that operators can also increase confusion when they don't interact with each other in expected ways. For example, in Python, 'x += y' isn't equivalent to 'x = x + y' in all contexts. Example:

      >>> a_tuple = ([1, 2], [3, 4], [5, 6])
      >>> a_tuple[2] += ['foo', 'bar']
      TypeError: 'tuple' object does not support item assignment
      >>> a_tuple
      ([1, 2], [3, 4], [5, 6, 'foo', 'bar'])

vs

      >>> a_tuple = ([1, 2], [3, 4], [5, 6])
      >>> a_tuple[2] = a_tuple[2] + ['foo', 'bar']
      TypeError: 'tuple' object does not support item assignment
      >>> a_tuple
      ([1, 2], [3, 4], [5, 6])

Edited to add, to understand what's happening here, check out the documentation on in place operators: [https://docs.python.org/3/library/operator.html#in-place- ope...](https://docs.python.org/3/library/operator.html#in-place-operators)

</comment><comment><USER3> I agree, I find it awkward when a programming language (like Java and JS) provide operators for their built in types, but if you want to use different types (say, complex numbers, numbers with different precision, ...) you have to use much less readable functions instead.

About the argument that operator overloading can be abused for unreadable code: so can functions, naming, or anything else.

<comment><USER4> I much prefer languages which simply do not make a distinction between functions and operators.

This distinction seems useful only in the context of lower-level languages like C where the operators translate directly to single machine code instructions and thus they provide clues about performance.

But in a higher-level language this distinction is superficial. It's just another function, just with a much shorter name and perhaps using infix instead of prefix notation. E.g. in Lisps there is no such distinction. "+" is a valid function name. In Haskell - same, but you also have a built-in syntax for specifying that you want your function to be called using infix notation by default.

<comment><USER3> How do you deal with namespaces (or anything analogous like package names) there?

E.g. if you have a function named "+", it can likely clash with other functions named "+"

If the programming language supports function overloading that can be resolved through the types

By the way, I actually like RPN calculators, and low level stack based programming languages, where operators and functions also work the same way, but that is mostly interactive or for small self contained programs

<comment><USER4> This is a problem of the model of polymorphism a language has. It's orthogonal to the function/operator distinction. It doesn't arise based on having this distinction or not.

In Haskell you use typeclasses (you can think of them as Go interfaces or Rust traits) and without them you cannot introduce nameclashes. In Scheme (the Lisp that I know)... you don't have anything. You import things from libraries, define variable bindings and depending on the order of all this your variable is going to be bound to something, most likely a procedure... but which one? Depends on the order. Not great. I prefer the Haskell approach to this, but then Haskell is a bit complicated in other areas. :/

But again, this has little to do with "operators vs functions".

<comment><USER3> > But again, this has little to do with "operators vs functions".

It has to do with it in the sense that you can add package names or namespaces to function names which are already text, but it looks bad to do this with symbolic infix operators like "+"

It would be nice if everything that operates looks exactly the same, but maybe the field of mathematics could start with fixing their notation then instead: mathematics uses a bit of _everything_ you can imagine:

add, subtract, multiply, division, power, root and log are all binary operators and instead of making them all look the same, mathematicians have chosen to:

* infix symbol for add and subtract

* no symbol at all (usually) for multiply

* superscript for power

* horizontal bar and put things on top of each other for division

* another horizontal bar and a superscript on the _left_ for root

* function-name notation with subscript for log

Maybe this is a global optimum that math has converged to because this mix of different things actually _is_ the easiest way for the human brain to read formulas the fastest, e.g. the arbitrary grouping that division creates and the fact that this eliminates the need for some parenthesis, and the easy visual difference between all the different notations, may really help. In some programming languages, if you've got dozens of parenthesis or deeply nested indentation, can you easily tell which argument is to which function?

Or, it's just a historically grown monster that could as well have turned out entirely different and can have other forms that would be faster to interpret.

<comment><USER4> A lot of these things were established long before mathematicians started talking about functions, let alone give a robust definition of what a function is. It may have obscured the fact that these things are very similar to each other.

At the point when there was an effort to formalize these things ideas like RPN starting popping up.

Mathematics also deals with a much more flexible medium. It's written on a plane, in 2 dimensions, whereas programmers confine themselves to just one. Mathematicians are also free to make up their own notation and symbols, whereas programmers are confined to a single alphabet and most often can't extend the syntax.

EDIT: Case in point: some mathematicians argued for a while if abs (absolute value) is a function. Some argued that it's not, because you need two formulas to define it. When somebody pointed out that (for real numbers) it's just "sqrt(x^2)", the first ones agreed. Sounds silly in retrospect now that we have a set-theoretic definition, but at the time it wasn't obvious and all these functions looked very different from each other.

<comment><USER5> > Case in point: some mathematicians argued for a while if abs (absolute > value) is a function. Some argued that it's not, because you need two > formulas to define it. When somebody pointed out that (for real numbers) > it's just "sqrt(x^2)", the first ones agreed.

Isn't that a circular definition, though? sqrt(x²) = ±x, which isn't a function since there are two values in the domain for each value in the range (other than zero). The version they're equating with abs(x) is the _absolute value_ of the square root, or abs(x) = abs(sqrt(x²)), which is true but wouldn't help prove that abs(x) is a function.

Of course, the underlying problem was the premise that a function must be defined by exactly one formula.

<comment><USER4> When people take the square root of a number during working with real numbers, they almost always mean the non-negative root. It's a convention. Only when they start considering complex numbers, this convention breaks, and the square root ceases to be a function - even according to the modern definition -, because "non-negative" still doesn't narrow it down to a single number in the general case.

<comment><USER5> Isn't that basically what I said? The _convention_ is that sqrt(x) is generally read as abs(sqrt(x)). The _definition_ is that sqrt(x²) = x, which has positive and negative solutions in x for any x² > 0\. You can choose to ignore the negative solutions (or the positive solutions) to make it a function, but I wouldn't consider that any simpler or closer to a single formula than the piecewise-defined version of abs(x). It's an arbitrary restriction—much like the mistaken idea that a function must be defined by exactly one formula.

Why not just say that abs(x) = ±x, ignoring the negative solutions? If you'll accept "the non-negative square root of x²" then I see no reason to reject "the non-negative component of ±x". Both are single formulas with positive and negative solutions combined with a qualifier rejecting the negative solutions.

<comment><USER4> _> The definition is that sqrt(x²) = x, which has positive and negative solutions in x for any x² > 0._

When people write "sqrt", they mean the function, or, "principal square root". "A square root" is a different thing. Saying "the definition" makes sense only within the context where the definition is established, otherwise we have to fallback to the common usage. Wittgenstein would laugh at this conversation.

Also, I'm not arguing for this convention ("it needs to have a single formula to be a function"). And when you start substituting symbols, almost nothing withstands this test. Because then you can always always twist the formula into several cases. And generally thinking about functions as something that is defined by formulas is a very limiting view. Almost all functions cannot be defined by formulas.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER6> > For mathematicians, operators are essential to how they think.

But programming is not math, just like it isn't text, or color, or datetimes, or any other type of value our programs deal with. Even in programs I've written whose purpose is numerical processing, a vanishingly small fraction of the program involves doing math.

We have no problem using a domain-specific language (like regular expressions) for the occasions where we need to work with text. Likewise for querying a database (SQL), or text styling (HTML). We shouldn't need to infect the rest of the language with all the massive complexity of "operators" just to be able to write "a+b" in every possible context.

In fact, even when I need to do math, the built-in operators are too weak to support half the math I need to do. We're paying a huge cost, and not getting our complexity's worth.

It's not even visually correct. The example here is:

        x + (y + z) == (x + y) + z

which is true in mathematics but not true in most programming languages, where the values could be implicitly promoted modulo integers of different widths, or IEEE-754 floating-point values. He says he wants operators so you can see that addition is associative, but in his language, it's not.

My favorite design, in terms of separating the syntax, is actually Tcl. Remove the complexity of needing infix arithmetic operators from 99% of the language, but keep it available for the times when you want it. It still doesn't support half the math I need, but at least the language was kept simple by having math ("expr") and text ("regexp") off in their own commands.

</comment><comment> jerome-jh Operators are a tradeoff between compactness and ambiguity. They add ambiguity because they are polymorphic, and the order of operations becomes implicit, governed by the operator's priority (for infix or mixed pre/postfix).

Many programming languages abuse the + operator for string concatenation, which is not commutative. This is where my tolerance for operators ends.

<comment><USER7> > Many programming languages abuse the + operator for string concatenation, > which is not commutative.

This is why Julia uses `*` for string concatenation, which they claim is "more natural" than `+`. Not sure I agree - I'd rather see a completely separate operator for concatenation, such as Haskell's `++` or Lua's `..`.

<comment><USER8> Arguably the simplest notation for string concatenation would be just concatenation (which would be the notation for multiplication, hence why Julia's choice could be argued to eb the most natural). Unfortunately programming languages can't quite deal with the ambiguity of having `a (x + y)` and `f(x)` refer to different operations.

Some languages seem to allow it for string literals though.

<comment><USER9> In Julia, you can actually omit the `*` for multiplication, if it involves literals, i.e.

      julia> x = 10
      10
      julia> 2x
      20
      julia> 2 x
      ERROR: syntax: extra token "x" after end of expression

But you have to be careful not to use white space either.

<comment><USER10> That's quite clever, actually. This way you could chain a complex string together with parentheses without needing a lot of pluses.

Not the most useful of features, but it does explain why * is the concat operator.

</comment></comment></comment></comment></comment><comment><USER11> The PEP adding a matrix multiplication operator to Python also contains a section about the advantage of an operator in that case: [https://www.python.org/dev/peps/pep-0465/#why-should- matrix-...](https://www.python.org/dev/peps/pep-0465/#why-should-matrix- multiplication-be-infix)

On the other hand adding a ~ operator similar to R seems was just rejected: [https://mail.python.org/archives/list/python- firstname.lastname@example.com...](https://mail.python.org/archives/list/python- firstname.lastname@example.com/thread/GE77ACXLJMLHCTK73MKVKEW47GAVQOHZ/)

</comment><comment><USER12> Yes, well known operators like `+` with well known meanings are useful.

Why would you write a post about this? Is there some kind of disagreement out there about this? I can't think of any popular language that doesn't have it!

Now, consider this instead:

        n <> x &~ n

Not only do you not know how to _parse_ this without further knowledge, you also can't _pronouce_ it in a meaningful way or hope to guess what it means.

<comment><USER13> Is this legal python?

<comment><USER14> When you're unsure about how Python treats an expression, then the ast¹ module is your friend:

        >>> ast.dump(ast.parse('n != x &~ n'), False)
        Module([Expr(Compare(Name('n', Load()), [NotEq()], [BinOp(Name('x', Load()), BitAnd(), UnaryOp(Invert(), Name('n', Load())))]))])

It can make it easier to reason through the curiosities, such as the precedence in the given example.

 _Note_ : Suggesting `ast` as a solution surely proves continuational's point ;)

1\. [https://docs.python.org/3/library/ast.html](https://docs.python.org/3/library/ast.html)

</comment></comment></comment><comment><USER15> This may have been mentioned elsewhere, but Python already has a syntactic way of merging dictionaries:

      d = {**d1, **d2}

which arguably has all the visual benefits argued for.

<comment><USER16> The PEP [1] addresses this:

 _Few people would be able to guess what it means the first time they see it, or think of it as the "obvious way" to merge two dicts

[...]

{_ _d1,_ _d2} ignores the types of the mappings and always returns a dict. type(d1)({_ _d1,_ _d2}) fails for dict subclasses such as defaultdict that have an incompatible __init__ method._

Though I'm not personally convinced that + would be more obvious or that dict subtypes are merged often enough for this to matter.

[1] [https://www.python.org/dev/peps/pep-0584/#d1-d2](https://www.python.org/dev/peps/pep-0584/#d1-d2)

<comment><USER15> Great PEP :-)

It also mentions further down, that for lists er have both

      a + b

and

      [*a, *b]

As well as other ones I hadn't even thought about like a[len(a):] = b.

</comment></comment></comment><comment><USER17> Unrelated, but I think this is the first time I've seen Mailman with actual CSS applied to it…

<comment><USER18> Is that from a mailing list? I really like it, it's much more readable / user friendly than most mailing list posts I've seen. Call me an inverse luddite or something but I never could get into mailing lists.

<comment><USER19> This is the kind of thing that wouldn't hurt if would be contributed back to mailman and became the default. Many of these Open Source projects have really poorly thought out defaults (if anybody even thought of these default values, at all).

<comment><USER20> I think that's the default for mailman 3

<comment><USER19> That's great to hear. I hope more projects upgrade, then :-)

</comment></comment></comment></comment></comment><comment><USER21> Interesting point. This might also explain why Lisp never really went mainstream.

<comment><USER22> It might also be that your brain is just more used (years of extra experience) to infix notation. So why not take advantage of this ? In the monad world, people also prefer (>>=) to bind. OTOH, how long does your brain need to get used to other notations? As an aside, his arguments are completely debunked if you use RPN.

       > Commutative: a b + == b a +
       > Associative: a b c + + == a b + c +
       > ...

<comment><USER23> > It might also be that your brain is just more used (years of extra > experience) to infix notation.

Maybe infix notations is preferred because it aligns more closely to natural language grammar (for some languages)

<comment><USER24> Infix notation is preferred because the binary operator is visually close to both of its operands. The same equations as GP, but == is also postfix:

       > Commutative: a b + b a + ==
       > Associative: a b c + + a b + c + ==
       > ...

As expressions getting larger and larger the operands are getting farther away from their operators. RPN is great for computers to read and maybe humans to write (RPN calculators). Not so much for humans to read.

</comment></comment></comment></comment><comment><USER25> There are two things I hate when dealing with maths heavy code.

      1. Lack of operator overloads.
      2. Long variable names.

The first I find uncontroversial, the second is where I have met with disagreement.

</comment><comment><USER26> So he's saying that operator notation engages "system 1" mental processing whereas the function call notation requires "system 2".[1]

[1] [https://en.m.wikipedia.org/wiki/Thinking,_Fast_and_Slow](https://en.m.wikipedia.org/wiki/Thinking,_Fast_and_Slow)

</comment><comment><USER27> It's almost like notation is a tool of thought, or something.

<comment><USER28> For the uninitiated, "notation as a tool of thought" is a paper by Ken Iverson ([https://m-cacm.acm.org/magazines/1980/8/10988-notation- as-a-...](https://m-cacm.acm.org/magazines/1980/8/10988-notation-as-a-tool-of- thought/pdf)), creator of APL programming language

</comment></comment><comment><USER29> For example take a look at the Python API for Z3. Because of operator overloading it is just beautiful. Much better then raw SMT2.

[https://ericpony.github.io/z3py-tutorial/guide- examples.htm](https://ericpony.github.io/z3py-tutorial/guide-examples.htm)

<comment><USER30> Sympy is nice too.

</comment></comment><comment><USER31> Please, please, please, a pipe forward operator. <3

<comment><USER32> Operators for all my friends!

[https://www.ozonehouse.com/mark/periodic/](https://www.ozonehouse.com/mark/periodic/)

<comment><USER31> The range exclusive operator is the most friendly, I think.

</comment></comment></comment><comment><USER33> Operators _can_ be useful in a setting where they are expected and natural - numbers, strings etc. Overriding them for dictionaries, streams custom classes has been shown to be a bad idea that makes the authors feel clever but results in code that is both less readable and harder to lookup - your IDE could bring up the right documentation when asked on dict.union but without some advanced syntax and type analysis will not be able to guess what | means for dicts and you'll get the documentation for bitwise or

<comment><USER34> It's weird to blame a language design for what's simply a bug in your IDE.

</comment></comment><comment><USER35> Leaving the substantive comments to the mathematicians, this was an enjoyable read that was easy to understand.

Especially "Of course, it's definitely possible to overdo this -- then you get Perl."

</comment><comment><USER36> > it doesn't matter whether the + operator binds tighter to the left or to the > right

Depending on the language, _(a+b) + c_ may or may not be the equivalent of _a + (b + c)_

Interesting. Apparently this is true in Python because it uses bignum numbers.

As I understand it, it's true in Java too, because (signed) integer overflow is defined to wrap-around. It's not true in C, where signed overflow invokes undefined behaviour. In C# it depends on the mode whether you get wrap-around or an exception on overflow.

And of course it's never true with floating-point.

</comment><comment><USER37> Reducing cognitive load [1a], transforming representations into something we can understand (e.g. x86 vs Python) [1b] and engaging our visual cortices [2] are all amazing things to get ourselves to be more productive.

[1a] Cognitive psychology: working memory 4 to 10 items

[1b] Cognitive psychology: I read it in some textbook how this works well, it also makes intuitive sense to me.

[2] This idea was stated out loud in one of 3Blue1Brown's videos, and well, in his case he demonstrates how true it is.

</comment><comment><USER38> Without operator we'd still be MOVing and ADDing

<comment><USER17> We might be using Lisp.

</comment></comment><comment><USER39> In a discussion on the usefulness/overuse of operators, I'm surprised nobody has mentioned J. Here's quicksort in J:

      (($:@(<#[), (=#[), $:@(>#[)) ({~ ?@#)) ^: (1<#)

Good luck understanding that!

</comment><comment><USER9> I like the example about the distributive law. But for the associative law, one could also simply write:

      add(x, add(y, z)) == add(x, y, z)

<comment><USER4> No. That assumes that "add" is left-associative, i.e. it expands to add((add(x, y), z)). It's not obvious.

<comment><USER9> OK, but for operators that are both left- and right-associative, this notation (variable number of arguments) is already used, e.g. in LISP, right?

<comment><USER4> Both... at the same time? I.e. they are associative?

If only one at a time, then perhaps there is. But TBH I can't think of an example from the top of my head right now.

<comment><USER9> Yes, I meant (fully) associative.

<comment><USER4> In this case it's justified, because there is no ambiguity. Just as a mathematician would write using traditional notation without parentheses. At the courses I attended in group theory, module theory etc. we were always required to prove that things are associative before dropping parentheses. Lisp notation just requires less characters (the '+' isn't repeated), but the convention is the same.

</comment></comment></comment></comment></comment></comment><comment><USER40> assumption that 'add' is a function of two arguments is wrong if not deliberately misleading

<comment><USER41> Depends on your language. In Lisp, + takes any number of arguments. In C++, it takes exactly two.

(I'm presuming that by 'add', you mean '+'. If not, then 'add' takes however many arguments it is defined as a function to take, and that still is language- or library-dependent.)

(And if you refer to pure math, then add or + is only a function of more than two arguments if it associates, which is dependent on the argument type.)

<comment><USER40> no, by `add` i mean exactly the function `add`, not + operator. he cherry picked the example to show how operators are "better", he's wrong. in practice sum of a sequence is more important concept than it's special case - sum of two arguments.

<comment><USER41> _What_ function 'add'? 'add' in some computer language? If so, _which_ language? Or 'add' in mathematics? If so, what is the difference between 'add' and '+'?

<comment><USER40> `add` is just another manipulation on guido's part. `sum` is the name of the concept.

<comment><USER41> One more time: _Are you talking about a specific feature in a language, or are you talking about mathematics?_

<comment><USER40> a concept in programming

<comment><USER41> Then what is your basis for saying that the sum of a sequence is more important than the sum of two numbers? Given associativity, the sum of a sequence is the same as recursively taking the sum of two numbers. Going the other direction, if you have the sum of a sequence, then the sum of two numbers is obviously included in that. The two approaches therefore seem completely equivalent to me. So why say that one is the more important concept?

<comment><USER40> Because it's more general</comment></comment></comment></comment></comment></comment></comment></comment></comment>


Free Software Licenses: Why I Like the BSD - <AUTHOR> http://colinfdrake.com/blog/why_i_like_the_bsd/

<comment><AUTHOR> I'm curious what HN users prefer when it comes to licensing. Is there a difference between what a startup vs. a larger business should license a library under? How much does the type of license play a part in whether or not you'll clone that repo off of github (assuming you see a BSD vs. GPL, etc)? Is freedom of the code or the user more important?

<comment><USER2> For the record, I'll state that I do not run a startup, nor have I influence in any larger business, so my comments should be read with that in mind. However, the company I work for, does release open source software, and it's licensed under the GPL (or a mixture of GPL and LGPL). If I ran a business, I'd do the same.

The reason for that, is the viral nature of the GPL: it's not friendly towards closed source, which is exactly what I want. If I, as a business, release a piece of code, then I want to benefit from any enhancements others make to it, I want to have the option, to take those modifications, and incorporate them into my version. With the BSD license, I'd be at the mercy of others, they may opt to contribute their changes back, or they may choose not to.

I don't trust most businesses, so I do not want to let them have that option: if they use my open source code, I want to have their modifications too, so we can mutually benefit.

Thus, for me, freedom of the code is more important.</comment></comment>