Wall Street's Big Banks Are Waging a Technological Arms Race - <AUTHOR> https://www.bloomberg.com/news/features/2018-04-05/wall-street-s-big-banks-are-waging-an-all-out-technological-arms <comment><AUTHOR> > Bam. Bam. Bam. Dummy trade signals that were supposed to stay within the > company's electronic systems broke loose and slammed into computers at the > New York Stock Exchange's options markets. So many orders crashed through > that by 8:44 a.m., safeguards within Goldman Sachs sprang into action, > severing the connection between the company and the exchanges.

Anyone whose built a trading system lives with this type of fear on a daily basis.

Write your risk system first and your algo second.

> The cause? A coder had mistakenly programmed a router to send placeholder > bids as live orders. If not for the good graces of the options exchanges, > the bank would have lost $500 million, according to the U.S. Securities and > Exchange Commission. Cancellations and price adjustments reduced that to $38 > million

And this is at the top of my things that are unfair in the markets. Knight Capital wasn't bailed out by the exchanges for the same thing and it bankrupted them. Goldman with its alumni every where.... was.

<comment><USER2> Imagine coming back from lunch, you start to unwrap your sandwich at your desk. Then, your boss walks by and throws your sandwich across the room and explains while you were out your bug caused 440 million dollars of erroneous trades - and the company now no longer exists.

[https://dealbook.nytimes.com/2012/08/02/knight-capital- says-...](https://dealbook.nytimes.com/2012/08/02/knight-capital-says-trading- mishap-cost-it-440-million/)

<comment><USER3> > your bug

Knight had a terrible software delivery process and a lot of deadline-oriented pressure on techies.

<comment><USER4> After it passes review and all stages of testing it's everyone's bug.

<comment><USER5> Exactly. You don't just do code reviews and run tests to catch bugs. You also do code reviews and run tests so that, when something _does_ slip through, it's no one person's fault.

<comment><USER6> ... and this everyone's responsibility.

Makes total sense. It's almost as if everyone at a company should be on the same team :)

</comment></comment></comment></comment></comment></comment><comment><USER7> > The cause? A coder had mistakenly programmed a router to send placeholder > bids as live orders. If not for the good graces of the options exchanges, > the bank would have lost $500 million, according to the U.S. Securities and > Exchange Commission. Cancellations and price adjustments reduced that to $38 > million

It's interesting to read the full SEC report because it's a little more complicated than that: [https://www.sec.gov/litigation/admin/2015/34-75331.pdf](https://www.sec.gov/litigation/admin/2015/34-75331.pdf)

It basically outlines a cascade of failure in controls, bad configuration defaults, and poor SDLC. In particular:

>In addition, the firm's operation and management of its electronic "circuit breakers" did not effectively block the erroneous orders sent on August 20. These circuit breakers existed to prevent erroneous orders by halting all message traffic to the exchanges once that traffic had exceeded a certain rate. However, on August 20, the firm's control personnel repeatedly lifted the circuit breakers blocks between 8:44 a.m. and 9:32 a.m., thereby permitting additional erroneous orders to be sent to the exchanges. Before lifting the circuit breaker blocks, the control personnel did not obtain authorization from the responsible technology employees, as required under written firm policies.

>The firm's policies relating to the manual "lifting" of those circuit breakers were not disseminated to or fully understood by the employees responsible for deciding when the circuit breakers should be lifted, and, prior to August 20, 2013, GSCO personnel had lifted circuit breaker blocks shortly after learning of the block and while still investigating the cause of the circuit breaker trip.

From what I remember, this circuit breaker was notorious for raising so many false positives that control personnel just got used to lifting it without thinking.

<comment><USER8> That's really a terrible place to put people in. From what this says, the SEC put part of the blame on the employees who lifted the circuit breakers without approval, and also state that employees didn't know that they needed approval?

 _Before lifting the circuit breaker blocks, the control personnel did not obtain authorization from the responsible technology employees, as required under written firm policies._

 _The firm's policies relating to the manual "lifting" of those circuit breakers were not disseminated..._

</comment></comment><comment><USER9> > By the time the trades were blocked for the last time, less than an hour > after they began, Goldman Sachs executed orders to sell more than 1.5 > million options contracts for $1. The cause? A coder had mistakenly > programmed a router to send placeholder bids as live orders. If not for the > good graces of the options exchanges, the bank would have lost $500 million, > according to the U.S. Securities and Exchange Commission. Cancellations and > price adjustments reduced that to $38 million.

It sure does seem like there are two sets of rules on Wall Street. I doubt any small trader would be able to reduce their losses 90+% after errantly submitting a bunch of live options orders.

<comment><USER10> There are N^2 sets of rules. At the end of the day you have two counterparties engaged in voluntary exchange. Everything is negotiable, anything is possible -- you just have to ask or pay. What people don't seem to grasp about modern finance is how mind boggingly complex and dynamic it really is. The idea that a tier one investment bank and a small trader should be held to the same "rules" is so wondrously silly... it's hard to describe but there ought to be a word for it.

The only thing really annoying here is that all this wackiness is backstopped by the Federal government. Nobody has any doubt that at the end of the day they will step in to save GS if everything really goes sideways. And that's probably a good thing. But it's very strange that the big banks, which are essentially quasi-state actors at this point, get to keep so much of their profits when the public is bearing so much of the risk.

This is the real difference between China and America: in China the government does everything in its power to make sure its state-owned enterprises succeed and then it takes its pound of flesh. In America the government does everything in its power to make sure its state-owned enterprises succeed and then it gives them a huge tax cut to make the shareholders that much richer. It's a bold move, let's see how it plays out.

<comment><USER11> >The idea that a tier one investment bank and a small trader should be held to the same "rules" is so wondrously silly... it's hard to describe but there ought to be a word for it.

Just like the idea that the aristocracy should be accountable to the same laws as commoners, right?

<comment><USER12> No but if GS asks a counterparty (with whom they have billions in other contracts) to cancel contracts as a result of a system error, the counterparty will probably agree (if they don't lose as a result) knowing that GS will next time do the same. With a small party, this could just be an attempt to undo a bad deal.

I think what the poster meant is that deals are just contracts and can be amended if both parties agree. For large banks with longstanding relationships, that is naturally much easier than for a trader that no one knows.

</comment></comment></comment></comment><comment><USER13> I highly recommend Rana Faroohar's book 'makers and takers' to add some perspective to this insanity... [https://www.amazon.com/Makers-Takers-Finance- American-Busine...](https://www.amazon.com/Makers-Takers-Finance-American- Business/dp/0553447238)

</comment><comment><USER14> One upside is such environments help nurture future technologies as they will happily pay millions for something just a bit faster than what they already have and more so before others have it. Hence it is avenues of business like this that have help feed certain industries over the years, from networking to FPGA's. Another avenue of financing technology which we all know is the military.

As for the whole stock market being driven faster and faster in precision from seconds to nanoseconds and picoseconds, I've always questioned the need to drive towards a faster processing and if the stock market only updated once every minute, it would sure help in curtailing many ineeded aspects that are creeping into stock trading.

</comment><comment><USER15> I personally feel we need to change the way exchanges operate. Too much emphasis exists on speed of execution. We must consider alternative auction formats where speed of execution is not the only criteria for matching an order, as it gives rise to masses of spam generated by a thundering herd of traders as they all try and fulfill the same opportunity.

<comment><USER16> This may be dated info, but IEX (exchange) purposely ran longer than necessary fiber to slow down the speed of automated trading.

<comment><USER17> Did they really? It's incredible how wasteful some organizations can be in pursuit of a misguided sense of "fairness."

<comment><USER18> They did it for marketing not fairness. It added 350 mikes and some of their orders bypassed it.

Having a 'speedbump' was the trendy thing a bit ago in exchanges with several different ones opening with several different versions.

<comment><USER19> Still a thing, that and the tick size.

</comment></comment></comment></comment></comment><comment><USER20> Why aren't these firms insuring against this risk? Seems like any other risk that can be managed - pay premiums and so that a third party would fund any erroneous losses.

<comment><USER18> Because they don't have to? They don't suffer from the risk...

Clearing frequently act like a form of insurance for smaller firms, up to and including asking for killswitches in your trading engines and audits of your risk procedures.

But big firms clear themselves so don't have that. Theoretically the internal risk team is responsible for that but those teams are frequently undergunned.

<comment><USER20> What about a firm like Knight?

<comment><USER18> Cleared themselves. I'd be shocked if any company in the world would act as counterparty to a trade that hedged 'operational risk at Knight scale'.

One of the thing many of us in the industry at the time commented on, was how little was done to bail Knight out. Other than the 'oligarchy' argument that states that the old timers hated them (they did) the argument I subscribed to was, they weren't systematically important. Their entire function in the market could be taken over quickly by someone else with little disruption and largely they were the only ones that lost money on that day (not really but to an approximate).

<comment><USER21> "If you just hurt yourself, nobody cares. If hurting yourself hurts others, then other people care." That's pretty cold-blooded and brutal, but it does make some sense...

</comment></comment></comment></comment></comment><comment><USER22> Except it wasn't the machines that caused the issue, it was a bug (and lack of following the controls in place) caused by Lucas Renick, of Goldman Sachs, who was fired on the spot and remained unemployed (though still on the Goldman payroll, in order to avoid a lawsuit) for many months until he joined Bank of America and later Morgan Stanley

</comment><comment><USER23> Places like D.E. Shaw, Two Sigma, Jane Street, Renaissance, Citadel, etc... were doing this long before any of these banks. To call it innovation is a bit of a misnomer in my opinion, more of a catching up with the times really.

</comment><comment><USER24> s/$TITLE/Salaries of people with clue are going up, up and up/g

</comment><comment><USER25> How do I get a job in this field?

<comment><USER26> Step one: sell your soul

<comment><USER27> High-frequency trading reduces transaction costs and therefore reduces the cost of capital, encouraging investment.</comment></comment></comment>


Guide to Resolve EServices Signing Issues by the SEC of Pakistan [pdf] - <AUTHOR> https://www.secp.gov.pk/document/guide-to-resolve-eservices-signing-issues/?wpdmdl=17259 <comment><AUTHOR> As if having to install a VM because their website was only compatible with Internet Explorer (not Microsoft Edge, mind you) wasn't crazy enough.</comment>


Dante2: A complete rewrite of Dante's wysiwyg (medium editor clone) in draft-js - <AUTHOR> https://michelson.github.io/dante2/ <comment><USER2> I've tested several other medium clones, but for a RoR app this one looks waaaay better than others I've been go through.

</comment><comment><USER3> Pretty straight forward to use and relies on draf-js which is awesome.</comment>


The Technologies that Drive Lob - <AUTHOR> https://www.lob.com/blog/tech-that-drive-lob

<comment><USER2> Did using something other than AWS ever cross your mind?

Detailed post. Curious to see other API companies detail their construction the same way.

<comment><USER3> Yeah, I'd love hear more about the choice of infrastructure. To me, AWS usually just seems to expensive compared to quality VPS host like Linode, but maybe I'm missing some features that I could be taking advantage of on AWS.

</comment></comment><comment><USER4> Mind getting into some details on what you liked/didn't like about hapi + bookshelf?</comment>


General Failure: How the American military rewards failure at the highest ranks - <AUTHOR> http://www.theatlantic.com/magazine/archive/2012/11/general-failure/309148/?single_page=true <comment><USER4> Very interesting perspective into the shortcomings of our military system. The article is worth reading through, but in summary: The author suggests that our drawn-out, meandering wars are the result of a perverse incentive system among the higher ranks of the military. Leaders are not rewarded for successes or, perhaps more importantly, punished for their shortcomings and failures. Instead, they are given short, time-limited appointments in leadership roles, which changes the goal from military success to simply ensuring that nothing too bad happens on their watch. Likewise, these time-limited roles result in a diffusion of success, where everyone can claim that progress was at least partially due to some of their own actions.

Perhaps the most succinct explanation from the article:

        But the Army continues to do too little to sort the average performers from the
        outstanding ones. That has long-term consequences for the caliber of military
        leaders. A recent survey by students at Harvard's Kennedy School of Government
        found that good young officers have left the military in large part because of
        frustration with military bureaucracy and the sense that the armed forces do
        not have a performance-oriented system for managing personnel.

The author proposes that the military should more frequently relieve poor performers from their positions until they find the person with the right personality and intelligence for the position.

I've never been involved in the military, but I feel as though this perverse incentive structure is common among many businesses as well. Most big companies I've worked with have a few obviously incompetent employees in leadership positions, but harbor an unwillingness to demote or fire them because they've "earned" their position through hard work and loyalty to the company. Taken to the extreme, this is the famous "Peter Principle," which suggests that employees will continue to be promoted until they reach a position beyond their abilities, at which point they languish in mediocrity. ( <http://en.wikipedia.org/wiki/Peter_principle> )

<comment><USER5> Making sure that nothing bad happens under your watch may not be such a bad thing in the military. Most of the critiques in this tread sound like this comment by Davidson about the french change of leadership in Vietnam:

 _On arrival, Navarre was shocked by what he found. There had been no long- range plan since de Lattre's departure. Everything was conducted on a day-to- day, reactive basis. Combat operations were undertaken only in response to enemy moves or threats. There was no comprehensive plan to develop the organization and build up the equipment of the Expeditionary force. Finally, Navarre, the intellectual, the cold and professional soldier, was shocked by the "school's out" attitude of Salan and his senior commanders and staff officers. They were going home, not as victors or heroes, but then, not as clear losers either. To them the important thing was that they were getting out of Indochina with their reputations frayed, but intact. They gave little thought to, or concern for, the problems of their successors._

Just look at the ambition and creativity displayed by Navarre's "hedgehog" strategy, and the (spoiler alert: dismal) result it got for France in the Vietnam war:

<http://en.wikipedia.org/wiki/Battle_of_Dien_Bien_Phu>

Not losing may in fact be one of the requirements for winning :-)

In corporations, the consequences are not that bad - closing door is not a big tragedy. Ten of thousands dead on the other hand, and a war lost _is_ a tragedy.

So please don't dismiss the military just because they work differently. They are on a different problem space. They need different solutions.

<comment><USER6> The hedgehog strategy there worked, brilliantly, but it is a __strategy __, a strategy designed around not losing. In the case of the American military, most of our missions now have specific aims that can't be accomplished by simply avoiding disasters.

<comment><USER7> The early decisions in the Iraq war like de-Ba'athification, dissolution of the military and not protecting vital government sites, could be seen as thinking to much about "winning the war" and not enough about not losing it.

On the other hand it was somewhat the tactic of the Iraqis, or even more so the Taliban. To not lose by disrupting society enough that their enemy can't "win".

</comment></comment></comment></comment><comment><USER8> _> Relief of generals has become so rare that a private who loses his rifle is now punished more than a general who loses his part of the war._

This is a part of our society's disconnection from meritocracy and transition to a state where a privileged caste rules and extracts from society on the basis of arbitrary marks of differentiation.

<comment><USER9> > This is a part of our society's disconnection from meritocracy

I would argue the opposite, but that depends on the elusive definition of "meritocracy". When people use that term, they usually mean that people's status or influence is bestowed on them based on their past performance, or "merit" (whatever that means). That is, a person is given a position based on his earned "merit", and "merit" is like some general currency that can be accumulated.

The article argues that successful organizations behave differently. They assign, or remove, roles and influence not based on accumulated "merit", but based on performance at a very particular task. If you're not good at this specific task, you will be immediately given another, regardless of your past "merit". This is not meritocracy where those with much earned "merit" rise to the top, but rather an organization where the goals are more important than the current job holders. It is an organization that assigns importance to collective results over the importance of individuals. I think that such an organization is hard to maintain over time because, in the end, it, too, is composed of people, each with their private interests, that may sometimes clash with those of the collective. But it is a far cry from meritocracy, that is, in practice, little more than simply bestowing privilege on horders of "merit" rather than horders of money, noble blood, or other more quantifiable currencies. This may actually make meritocracies worse than other privileged- class structures, precisely because those at the top can easily change their definition, and exchange-rate, of "merit".

At no point does the article suggest that General Franks was promoted, say, because he was someone's relative, or a member of the right party; in fact, nowhere is it suggested that he was promoted for anything but merit. And that is why he wasn't relieved - precisely because he was a "holder of merit". This is how meritocracy works. In WWII, someone would possible have told him "we don't care what you did or can do. At this point, your particular actions are not helping our collective war effort, so you must step aside for a while".

But people like meritocracy, because, for some, "merit" isn't hard to achieve. You get the right credentials, put in some talent and a lot of effort, and presto, you're part of the elite. People don't like being judged over and over, be only as good as their last action. They want to rest without losing their status. Only an organization where people truly put aside their egos for the good of the public can function as the article claims the military used to function in WWII.

<comment><USER10> Well "merit" just means something that justifies a reward. So it is a bit of a circular definition and thus anyone can inject their own interpretation of it.

What I think think "meritocracy" means is that someone gets promoted because they deserve it based on some objective performance metric. I don't think it differentiates specifically whether this is a long streak of good performance or an immediate recent, single, success. You seem to argue between these two. While I think the most common interpretation is not immediate vs long term merit but the type of performance and degree of objectivity. If performance is just "being in the system for X numbers of years" then most would argue it is not meritocracy, which is what General Franks had. You argue that he was a holder of "merit", I say not. He was just one of the many similar available candidates in the bureaucratic system and one had to be promoted. So he was promoted. Often that also came as a function of number of years in the service or number of years in "action". So that is not "meritocracy".

> But people like meritocracy, because, for some, "merit" isn't hard to > achieve.

People like meritocracy because it is inherently has a fuzzy definition and the term itself has a positive vibe as, by default, it stands against bureaucracy, nepotism, mediocrity, and corruption.

For example my beef with "meritocracy" is that it is actually a negative term, because metrics and "objectivity" criteria are defined by the current power systems. So their judgement and metrics are implicitly now "objective" and purely "performance based" just by being associated together in the phrase that also has the word "meritocracy" in it. (Say, "college admissions are purely merit based", stuff like that). Or, like the classic issue with IQ tests that used to test heavily culture-dependent things such that any non-(Western, white, middle class) would be disadvantaged. But this particular arguments is perhaps better saved for another discussion thread.

</comment></comment></comment><comment><USER11> I've always assumed that the Military tended to function as a giant bureaucracy, which tends to discourage many from staying in. That seems to be the norm for Government institutions. I would blame politicians for the drawn out wars we are engaged in. I'm sure if we gave the military carte blanche command of the wars, they could end them. (We may not like the tactics, but that's another discussion)

</comment><comment><USER12> Peacetime armies (ie. not WWII) end up with careerists on top, not warriors. So you get the same as any mediocre corporation. The immediate stakes to national security aren't high enough to demand results "or else".

<comment><USER13> We've been at war for over a decade. That's 3X the length of WWII.

<comment><USER12> It's a matter of how much the civilian population is focused on the effort. WWII was a total war, everyone back home was involved in some way, usually through rationing, working a war-effort job, buying a war bond, paying increased taxes, and/or worrying about loved ones serving in the military (often though the draft).

Things like Iraq and Afghanistan are basically peacetime military actions. It's a war over there... but back home, not so much. That affects what kind of talent, attention, priority, etc. goes into it.

</comment></comment></comment><comment><USER14> Looks like a "General Failure" in statistics/randomness (oh no he didn't) and merely an example of the fundamental attribution error (the Generals - that's it! I mean what does the effectiveness of large hardware on underground entrenchments have to do with it! We just need better leadership - not more guns, grunts, bombs and money).

Battlefields are highly path dependent (lose 50 men on one hill - <USER2> with unreplaced troops on the previous one - you've just lost 10km^2), chaotic (that shell just randomly took out your battleship during a beach rush - <USER3> more covering fire - you get slaughtered), subject to the influence of volatile human psychology (sounds and sights can decimate morale, focus and the ability to shoot people in the face at random times), resources (platoon 3 runs out of ammo, bogged down on critical hill - backup platoon can't get to them - out of range of covering shelling - lose the hill and the valley), weather (it's raining - they have tanks and relieved troops), positions (your hill just turned to mud and blood), communications (platoon 1 - decimated - incoherent babble and screaming, platoon 2 - nothing, platoon 3 - incomprehensible, platoon 4 faulty intel) and hell - wind direction (dust blows into your platoons' eyes - but not into the enemies).

None of that has much to do with the general on the ground - it's just shit that happens in highly chaotic, unpredictable, uncertain and resource constrained environments.

I see the same kind of criticism leveled at CEOs.

Granted, many of them are complete morons and can drive companies into the ground. However most are simply doing what appears reasonable at the time, and are just unlucky not to have the corporate/economic/technology winds (or dust) at their backs.

People overrate what people can honestly achieve in highly chaotic environments. 15% of corporate CEOs are replaced every year - notice how companies don't change much from year to year though - I have. However, changing often definitely let's us lionize the lucky ones (see hedge funds, startups, novels, movies, tv shows and any other at scale, highly path dependent, chaotic and random systems).

We failed in Iraq and Afghanistan because we needed 10x more troops on landing and about 15x more resources and a great deal more international support.

This is by far the most predictive of success on any battlefield (and business) - irrelevant as to who is actually running it.

</comment><comment><USER15> "These corrosive tendencies were reinforced by a new policy of officer rotation after six months in command, which encouraged many leaders to simply keep their heads down until they could move on—and likewise encouraged superior officers to wait out the tours of bad officers serving beneath them. Instead of weeding out bad officers, senior leaders tended to closely supervise them, encouraging habits of micromanagement that plague the Army to this day."

Some companies have this policy and it seems to be at the root of their management trouble. It causes short-term thinking and what make me look good as opposed to what makes this place better.

<comment><USER16> I don't get how this article an on the one hand condemn rotations and on the other hand condemn keeping people in he or positions too long.

<comment><USER15> It does seem odd, but my explanation is the "I know I'm moving" problem. If you have mandatory rotations[1], then optimizing for a better next jump is just smart behavior. You know you're leaving so optimize for "flashy" improvements and curry favor with superiors. Its the known deadline that's the problem.

That being said, people should move on at some point. The US Navy before and after WWII rotated out its officers to Washington DC. It made sure operational experience was put into policy. Bringing someone home to teach is a smart move.

[1] a typical IT strategy for managers doing the rotation to "learn new areas" is to cut Q&A people. The effects of the cuts will be a lower budget in the near term with looks good. The next person will get to deal with the slipping quality since the down effects take a while as "professionals" work harder to keep the trains running. Burnout occurs during the next dudes shift.

</comment></comment></comment><comment><USER17> I think there are two major factors leading to the promotion of incompetent personnel to leadership positions. The first one is the bureaucratic nature of personnel evaluation, the second being the lack of actual 'real' wars to train the leaders (as sadistic as it appears).

_Disclaimer_ : I only have an observer experience of the US Army (I went on tour in Afghanistan in a mixed US/Canada brigade), but my actual employment was in the Canadian Forces. I was on tour when Gen McChrystal was relieved and replaced by Gen Petraeus, and also when (CA) Gen Menard was relieved and replaced by Gen Vance.

1\. In the early ranks of officers, promotions are very strongly linked to evaluation reports. Evaluation reports came to be very sanitize and politically corrected documents where you need a load of supporting documentation if you want to negatively score someone. If someone received an hypothetical score of 3 last year, you need very strong arguments if you want to reduce that score the year after. The system is somehow 'humanitarian' in that it believes that no one can become worse over time, and no one is incompetent. Also, there is a lot of 'political' pressure coming from relationships inside the military. I saw first hand some obviously incompetent Captain be promoted to the rank of Major, simply for political reasons. Somebody back in the country had plans back home for this officer, and this promotion was planned ahead of time (the officer had time in rank and was put in the position they were to give them some 'action' cred).

Put together with the fact that promotions are expected after certain specific check-in-the-boxes, this leads to the promotion of incompetent leaders on purely bureaucratic grounds. Eventually leading to a wider range of incompetent officers in the pool of Colonel in which Generals are chosen.

2\. Recent wars are not related in 'danger factor' to what WWII has been. Nobody's in actual danger of having their family killed/their country harmed if they don't succeed in their missions oversea. Those missions are political disturbance of far away countries. They are, sadistically, good for the troops as they give them first hand experience with real combat - it's essential for an army to always have veterans in their ranks to train other members. If a generation of the army would go without seeing combat actions, the technical abilities of this army would quickly evaporate. In that regard, while recent conflicts provided combat experience to field personnel, they have not been of a large enough scale to train generals. Generals thus can't really become battle-hardened and provide hands-on experience while on tour.

Finally, the idea of doing a 'tour' when you're a general, like noted by the article. They come in theater with a vision (but often no general field experience, and sometimes even no field experience at all) and have only a few weeks/months to try out their vision and see what happens, and that's when they're actually on site and not back home dealing with politicians. Then regardless of the outcome, they are relieved and replaced by another general.

<comment><USER18> There is a big problem with generals with battlefield experience - they fail in the next war because they cannot break free of what worked in the previous war.

Technological progress is so rapid that doctrine has to be rewritten from the ground up for each conflict.

For example, we went into WW2 with heavy reliance on battleships. They were quickly discovered to be worse than useless, the aircraft carrier was far more effective.

The examples are endless, such as the disastrous misuse of cavalry in WW1, and Hitler using obsolete WW1 tactics.

<comment><USER19> _There is a big problem with generals with battlefield experience_

An interesting datapoint, historically is Churchill. If your read his history of the world wars, he was the 'sea lord' or somesuch and head of the royal navy. in advance of wwi, he actualy revolutionized the fate of the world in the 20th century, by preparing GB for the _next_ war (WWI). In particular, the switch to the use of diesel vs coal, to increase the range of the Naval fleet. This is the source of the WWII battleships example. And also the origin of the politicization of the Middle east. This supports your notion (becaue he wasn't a general), but undermines the idea that you cannot act with foresight. He also had battlefield experience. [1]

[1] Also, your last sentence is curious, as I think you missed the example of Hitler conquering europe from russia to the english channel, inventing the Blitzcrieg, and the various dry-run live-fire experiments, eg Spanish Civil war.

<comment><USER18> Hitler made numerous serious errors from applying WW1 tactics, such as over- reliance on fixed fortifications.

<comment><USER20> > such as over-reliance on fixed fortifications.

Which "fixed fortifications" would those be? If you're talking about the Allies' final attack on Germany of late 1944-early 1945, then I'd say by that time Hitler had already lost the war. The two most crucial moments I can think about are the battle of Stalingrad which did not allow the German Army to lay its hands on the Caucasus and its oil resources, and then the battle of Kursk, which had nothing to do with WW1 tactics.

And to copy-paste Clausewitz's name in here (the article makes a passing reference to him when it talks about "Franks fundamentally misunderstood generalship, which at its topmost levels must link military action to political results"), I'd say Hitler's final chances were political in nature, more exactly I'm talking about his tries to intervene between Churchill and the US on the one hand and the USSR on the other, trying to convince the first bunch about the perils of letting the Soviets be on the victorious side. The Tehran Conference put an end to that. (<https://en.wikipedia.org/wiki/Tehran_Conference>)

<comment><USER18> Hitler did fall into the battleship trap, grossly underestimated the value of long range aircraft and fighter aircraft, relied heavily on fixed fortifications like the Atlantic Wall and the Siegfried Line, both of which were easily bypassed, etc.

He squandered his men by not allowing them to retreat and regroup, again thinking like it was WW1.

Of course he would have lost anyway, but he could have made it much harder.

<comment><USER21> Against fixed targets battleships gave higher firepower. Aircraft cqrriers were the new technology for naval operations away from large land masses. The heavy fortification of the atlantic wall was only for first landing, the defence line was deep but it was annihilated with heavy bombardment from allied battleships. The Siegfried line was pretty much abandoned during the war and was hastily manned during the last defence. German efficiendy wasn't very good at this point since t was against the original planing and they had even lost their fortifications and underground plans in some places.

The doctrine after WW1 was not keeping an advanced position but moving forward with tanks and keeping the enemy of balance. That was an extarpolation of Rommels "Infantry attacks" book, who was succesful in the WW1 and was already famous and a teacher in the german military academy in the interwar period.

<comment><USER18> The problem with battleships is they were incredibly vulnerable to air attack.

Ambrose's book "Citizen Soldiers" details the failure of Hitler's fixed fortifications, and Galland's book "The First and the Last" details Hitler's failure to understand air power.

<comment><USER19> The texbook counter-example on circumvention of fixed fortifications was done by Hitler's army, at the _start_ of the war. Viz:

 _The Manstein Plan is often seen as either the result of, or the cause of a mid-twentieth century Revolution in military affairs. In the former hypothesis, expounded by Fuller and Basil Liddell Hart immediately after the events, the Manstein Plan is presented as a natural outcome of deliberate changes in the German military doctrine during the twenties and thirties by men as Guderian or Hans von Seeckt implementing Fuller's or Liddell Hart's ideas._ [1]

Diesel-electric Submarines were ultimately also vulnerable to air power. But not before their use in warfare was pioneered by the Germans, to devastating effect. And france was germany's "aircraft carrier", don't forget its less than 100 miles from the UK, couldn't be sunk, and didn't need a fleet-escort. (etc).

Further innovations:

\- Jet fighters

\- Cruise Missles

\- Ballistic Missles

\- Submarine Warfare

\- Armored Calvary

It was a war, and 'improvisation' would be expected as losses mount and access to resources were curtailed. The general thesis that the Nazis were fighting "ww1" style is not really a teneble notion. At all.

[1] <http://en.wikipedia.org/wiki/Manstein_Plan>

<comment><USER18> 1\. Hitler basically stalled and wrecked the jet fighter development, diverting its resources to developing a fairly ineffective jet bomber. 2\. The cruise missiles and ballistic missiles contributed essentially nothing to the war effort, while consuming vast resources. They simply weren't accurate enough, and were misused as well (London was a political target, not a military one). 3\. You're right about that, but U-Boots were big in WW1, too. 4\. Hitler still put his faith in fixed fortifications, despite the success of his generals with mobile warfare.

There's no doubt that the German army had many forward thinking ideas. But I'm talking about Hitler overriding them and refighting WW1.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER22> _In World War II, the firing of a general was seen as a sign that the system was working as planned. Yet now, in the rare instances when it does occur, relief tends to be seen, especially inside the Army, as a sign that the system has somehow failed._

Oh how I wish that governments would realise this. Making mistakes and then correcting the mistakes is the important thing. The whole phenomena of start- ups dominating over established companies is a guide to how you should be running the established businesses. Government departments hold onto their bad decisions, trying to justify them and hide the damning evidence when really they should be praised for acknowledging mistakes and changing their minds.

<comment><USER21> I totally agree. And there is also the fact that in a competitive environment, competiton is human. You can not folllow a strict procedure on paper, when the competition adapts, copies and even improves. Unfortunately the procedure is also the justification for any action, and it is easier to create metrics on how good the procedure was followed than creating metrics for the results of their actions.

</comment></comment><comment><USER23> The soldier who loses his rifle faces harsher punishment than the general who loses the war.

</comment><comment><USER24> So, considering individuals as "human resources" instead of people (personnel) has consequences in the US Military as well as in corporate life. Who would have thought that change in how people are considered would have such an impact?

</comment><comment><USER25> Before we go too far down this road, what about Douglas MacArthur? He pushed the government to defend the Philippines, he lost most of his air in the first 24 hours--after the news from Pearl Harbor was known--and he returned home as a hero. And yes, he did have his moments, in WW II, and Korea, but some of his decisions in the latter war lead to a barely-contained fiasco.

</comment><comment><USER26> This was ever the way. The needs (and goals) of a peacetime armed forces (which is what the US still has, despite meandering wars in the Middle East still running) are different to those of a wartime armed forces. The only question is how quickly, given the shift to wartime footing, one can replace the peacetime command with that needed to win wars.

</comment><comment><USER27> I don't think this is an exclusively American problem. There's an eye-opening book called 'On the psychology of military incompetence' which ought to be required reading for anyone in a leadership position.

</comment><comment><USER28> Sorry but what does this have to do with IT or HN in general ?

<comment><USER29> "[...] anything that gratifies one's intellectual curiosity" is equal to "anything" given enough users.

I think we got some good discussion out of this one, though.

<comment><USER28> That's Fox News quality quoting there. How about not taking it out of context.

Off-Topic: Most stories about politics, or crime, or sports, unless they're evidence of some interesting new phenomenon. Pretty sure the US military counts as political.

<comment><USER30> I don't think so. This isn't a right/left piece where everyone is going to come and comment based on their views and their opposition to the opposing viewpoint and be unswayed at all based on the discussion.</comment></comment></comment></comment>


Spyware demo shows how spooks hack mobile phones - <AUTHOR> http://www.bbc.co.uk/news/technology-33772261

<comment><USER2> Would installing this spyware require physical access to the device (eg. flashing the ROM?) If so, that's kind of boring, because with physical access to the phone I could just put my own bug with its own mic, using it's own power & network inside the phone's case and easily read all your data without modifying anything on the phone or giving any "tells" like increasing network usage.

Also presumably if law enforcement needed to listen in, there would be better ways to do so than to physically steal your phone... like subpoenaing the phone company.

</comment><comment><USER3> > source code for the programme had been dumped online by hackers

No references to online source or even the malware's name is made in the article. Does anyone have more information on this?

<comment><USER4> There appears to be some code on github[0]. I haven't looked through it yet though

[0] - [https://github.com/hackedteam](https://github.com/hackedteam)

<comment><USER5> This is it. It's from the Hacking Team dump. You can find the emails on wikileaks

</comment></comment></comment><comment> yoz-y Hm, is there currently any mobile anti-virus software available that would have caught and blocked the Hacking Team exploits before the reveal?

Are there actually any "standard" security procedures for mobile? I suppose a vast majority of customers simply trust OS vendors to release a secure environment.

<comment><USER6> Unless you jailbreak your phone you are basically forced to trust the vendor. Even with a jailbreak there are lots of places to hide something like this. If there is a hack in the baseband firmware on your phone you are basically out of luck.

<comment><USER7> > If there is a hack in the baseband firmware on your phone you are basically > out of luck.

You are out of luck. Around 2005/2006 it was revealed in a mob trial that the FBI remotely activated, presumably using a special signaling plane command, a non-smartphone to turn it into a room bug. Ain't no firewall for that.

</comment></comment></comment><comment><USER8>
      You need to install Flash Player to play this content.

I think not.

</comment><comment><USER9> Spooks? 😨 Must be brit slang.. Lol

<comment><USER10> It's another word for spies. I never realised it had a completely different meaning in colloquial American English.</comment></comment>


Why Don't Computer Scientists Learn Math? - <AUTHOR> http://research.microsoft.com/en-us/um/people/lamport/tla/math-knowledge.html <comment><USER2> This is Leslie Lamport's writing, and he's complaining that nobody uses his TLA+ formal specification language. (Here's the TLA book.[1] Read the introduction, and it's much the same rant.)

I used to work on formal specifications and program proofs, around the time Lamport was developing temporal logic. I took the position that, rather than trying to make programmers learn math, we should automate and divide up the problem so that they didn't have to.[2][3] This meant minimizing the formalism and making the verification information look like ordinary programming. It also meant carving out the harder math problems into a separate system where someone using a theorem prover would prove the necessary theorems in a way which allowed their use and reuse by ordinary programmers. The underlying math is still there, but not in your face so much.

There's a mathematician mindset: Terseness is good. Cleverness is good. Elegance is good. Generality is good. Case analysis is ugly. This is unhelpful for program verification.

Program verification generates huge numbers of formulas to be proven. Most of the formulas are very dumb, and can be dealt with automatically by a simple theorem prover. Where it's necessary to prove something hard, our approach was to encourage users to write more assertions in the code to narrow the thing to be proven, until they were down to "assert(expra); assert(exprb);" Getting to that point is much like ordinary debugging.

Now they just needed a theorem, independent of the program, that could prove "exprb" given "expra". That job could be handed off to a theorem-proving expert. A library of proved and machine-checked theorems would be built up. Some would be general, some project-specific. This is the software engineer's approach to the problem.

The mathematician's approach is to capture much of the program semantics in mathematical form and work on them as big math formulas. Most of the work is done in the formula space, where mathematicians are comfortable, not the code space, where programmers are comfortable. This seems to hold back the use of formal methods in program verification.

Much effort has gone into trying into trying to find some clever way to make program verification elegant. "A great variety of program logics are in use in computer science for the specification of (software and/or hardware) systems; for example: modal and temporal logics, dynamic logic, Hoare logic, separation logic, spatial logic, nominal logic, lax logic, linear logic, intuitionistic type theory, LCF."[4] We used to call this the "logic of the month club".

[1] [http://research.microsoft.com/en- us/um/people/lamport/tla/bo...](http://research.microsoft.com/en- us/um/people/lamport/tla/book-02-08-08.pdf) [2] [http://www.animats.com/papers/verifier/verifiermanual.pdf](http://www.animats.com/papers/verifier/verifiermanual.pdf) [3] [http://portal.acm.org/citation.cfm?id=567074](http://portal.acm.org/citation.cfm?id=567074) [4] [http://homepages.inf.ed.ac.uk/als/PSPL2010/](http://homepages.inf.ed.ac.uk/als/PSPL2010/)

<comment><USER3> I know I've posted this a few times but I don't think I've ever seen you in a thread about this. Do you have any simple way for a computer scientist to learn about proven methods.

More precisely, how do I engage in the dark incantations required to conjure up my own proven methods? For my critical code, right now I just write unit tests. Do you know some place that can shed some light as to what I actually do? I mean, I can just tell my coworkers "yea I formally proved this, it won't have bugs" but I don't think that's quite in good spirit.

<comment><USER4> What programming language(s) do you typically use for your critical code?

<comment><USER3> My next "big" project will be a data visualization system that's probably going to need some Python, JavaScript, and some simple bash piping between the python scripts.

It's not going to be mission critical but it'll be nice to flash and say "I used formal methods to prove this implementation" as it is going to be for an academic's project.

<comment><USER4> _> My next "big" project will be a data visualization system that's probably going to need some Python, JavaScript, and some simple bash piping between the python scripts._

Unfortunately, there aren't great deductive verification tools for either Python or JavaScript.

Perhaps more importantly, there's also not a particularly good understanding of how to formally verify front-end code.

The most important property of a visualization system is something like "the visualization accurately represents the data being visualized", but in a problem domain like this, formalizing the high-level intent is probably harder than actually proving that this intent is achieved.

Additionally, the cost of throwing an exception at runtime are presumably pretty low (unlike in a control system, for example). So once you've formalized your spec, you can just check your specs at run time throw an exception/report a bug instead of or in addition to generating the possibly faulty visualization.

Are there key components of the visualization pipeline that could threaten its correctness? E.g. data reduction, interpolation, fancy graphics code, etc.? If so, I'd focus on those and come up with a good set of formal, checkable-at- runtime contracts that capture your high-level informal specification.

Alternatively, is it possible to do some computation on your output to check that it matches the input data? E.g. you could imagine counting pixels of certain colors on a heat map or pie chart and comparing that to the original data. That way you don't have to verify (or trust) all of the graphics generation code, thus significantly reducing your trusted computing base.

Saying "we have a formal mathematical description of what it means for this portion of the visualization system to be correct, and a way of checking input/output matches that description" is probably a more significant contribution than actually churning through a static verification effort.

 _> it'll be nice to flash and say "I used formal methods to prove this implementation" as it is going to be for an academic's project._

Are you sure this is the case? Most academics, even within CS, don't care much about formal methods.

If you're just looking to learn formal methods, then I guess it's whatever. But if you're looking to stand out, you might want to figure out what's important to your stake holders and focus on that. I'd be pleasantly surprised if the answer to that question is formal methods.

<comment><USER3> There are multiple portions of this project only one of which is rendering. The rest is data acquisition, job scheduling, and some other stuff. I've got to sample a source of data and run a lot of code on it.

> If you're just looking to learn formal methods, then I guess it's whatever. > But if you're looking to stand out, you might want to figure out what's > important to your stake holders and focus on that. I'd be pleasantly > surprised if the answer to that question is formal methods.

I was just joking around a bit. I've been interested for some time.

</comment></comment></comment></comment></comment></comment><comment><USER5> Perhaps its time to rethink the sanctity of mathematical symbolic communication. Seriously, that equation borders on parody in attempting to relay a rather simple concept. We dont expect CS people to communicate concepts through compiled, machine language style syntax (minimum number of bits uber alles) so why not revisit the communication of mathematical concepts with weight given to clarity over compression?

<comment><USER6> ∀+∃+{|} are the epitome of clarity over compression. Mathematicians like them for the same reason why many programmers like sophisticated static typing. They might not always improve the clarity of toy examples to beginners, but they certainly help improve the clarity of untamed, wart-ridden, real life problems to initiates.

I think the first time I truly appreciated the power of ∀ and ∃ was during functional analysis when I found myself juggling an overwhelming number of different notions of continuity, convergence, smoothness and the like. ∀ and ∃ drew out the subtle distinctions that the blurry, imprecise words of the English language conspired to hide. They let me break down logic hairballs completely indigestible to my mammalian intuition into small chunks that I could individually process. Same idea as algebra.

 _That 's_ their purpose, and they're very good at it. Nothing I've encountered in the world of programming languages really comes close to doing their job. Don't fall in to the trap of assuming they're pointless just because they don't apply to your problems.

<comment><USER7> I use ∀ and ∃ and so forth, mostly in private notes. It's great shorthand.

On the other hand, in MathLand we have conventions like saying "2x" when you want to multiply x by 2, but if you write "dx" you'd better know if you're doing calculus or not, because it means something totally different depending on context.

Mathematical notation is pretty squishy. There are probably thousands of uses of every greek letter and their italic, bold and variously curlicue'd isomorphs. And it's mostly culture, with a lot of history, personalities and land-grabs thrown in. You can't necessarily crack open a paper without a lot of baggage-level context ("Oh yeah, _this_ community uses brackets for things _that_ community uses subscripts for, okay...")

On the other hand, C++ is complicated and messy and also mostly a train wreck, but at least there's a standard you can go read.

[I once thought it would be worthwhile to learn denotational semantics. The "at least one new hijacked hieroglyph must appear on every page" nature of the reading put me off it in short order. I had no idea where to start interpreting the notation other than maybe attending a class to get the proper starter culture. It was frustrating to see notation go in the "squishy" direction when I thought it should have been using something you could parse and run tools against. Oh well.]

<comment><USER8> > I had no idea where to start interpreting the notation other than maybe > attending a class to get the proper starter culture.

More than anything, I think this is the main reason why studying many subfield of mathematics is so difficult, when we spend more time and effort in things like parsing instead of in the actual subject matter.

Even popular subjects may show similar problems. For example, in Sedgewick's Analysis of Algorithms, he gives the following common definition:

> O(f(N)) denotes the set of all g(N)....

In the next page, he presents an exercise:

> Show that f(N) = N lg N + O(N) implies f(N) = ϴ(N log N)

Reader looks at that "N lg N + O(N)" and tries to make sense of the addition of a number to a set of functions. Note, this is in page 5, so many readers unfamiliar with the culture of the area are likely to just abandon the book (and perhaps the study of the subject) as they could not translate to themselves the very first formula presented by the author.

The only clue to anything that could help the newbie to get some answers lies in a couple of references that point to the historical uses of these greek symbols for computational complexity. Within that reference [1], by no other than Knuth, one can find the explanation for such syntax:

> "1+O(n^-1) " can be taken to mean the set of all functions of the form > 1+g(n), where |g(n)| < Cn^-1 for some C and all large n.

And then he goes on about the problem of that syntax in respect to one-way equality:

> we write 1+O(n^-1) = O(1) but not O(1) = 1+O(n^-1). The equal sign here > really means ⊆ "set inclusion", and this has bothered many people who > propose that we not be allowed to use the = sign in this context. My feeling > is that we should continue to use one-way equality together with O-notations > since it has been common practice of thousands of mathematicians for so many > years now, and since we understand the meaning of our existing notation > sufficiently well.

The above is not only a reason for logicians to laugh at the pretense that mathematical language is formal, but also an example of things that are likely not to be in books but in an unwritten culture of a field.

\--

[1] - Knuth, Big Omicron and big Omega and big Theta

</comment></comment></comment></comment><comment><USER3> This is like "Why Don't Mathematicians Learn to Program?"

"I had this talk where I wanted to feel superior so I showed an obtuse way to notate a simple situation"

"You can see my code I showed a room full of people who have more important things to do then to study arcane math symbols that are of no use to them:" [https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpris...](https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition/blob/master/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/Main.java)

"I mean who in the hell could call themselves a mathematician without learning how to recognize obscure abstraction principles and language features of Java, something they'll probably never need to use?!?!"

"Some of these people where even smart, I tell you! They are big people who are productive but I have no idea how you could be productive or smart without knowing how to recognize this obscure thing"

Seriously, if you pulled in a bunch of CS people and showed them this:

        lambda x: x

And they didn't know what it meant, you have a point. If you pull them in and show them something they don't use often, probably will never really use, and use that as a basis of their worth then I don't feel you have a correct set of KPIs for what makes a good scientist or researcher.

</comment><comment><USER9> Honestly, this is mostly an issue of syntax (a problem, but one that is remedied with a quick look-up table/cheat sheet).

Giving a legend explaining those symbols would turn the statement into this:

Given a function (f) that maps integers in the range 1 to n onto the same range (1 to n), for every y in that range (1 to n) there exists an x in that same range (1 to n) where applying the function (f) to an input x results in the value y.

(please correct the parts I got incorrect, it's been a while since my last discrete math class).

These symbols are important tools in discrete mathematics, but are easy to forget or get lost in due to the very high information density they achieve. Adding to the complexity, we explain the range of both inputs and outputs before defining the function. Intuitively, I feel CS folks would prefer to define the input range, the function's mode of operation, and finally the mapped output range.

This is especially complex when these discrete mathematics symbols operate upon one another. Throw in some sigmas and boolean operations, and it quickly become very difficult to parse.

The underlying intuition the author is trying to communicate is likely something that entire audience could understand. They simply weren't fluent in the "language" of mathematics. It's like being very articulate in English, and having to defend a thesis in French. Not only do you have to translate your thoughts, many idioms you may usually rely on are no longer valid in a new language.

Finally, why not define that same statement in Python or matlab? It's just as valid in my opinion.

</comment><comment><USER10> I am a programmer and not a mathematician. I studied more math than typical (almost minored in it) but all of it undergrad and it's been more than a decade since I've done anything formally academic. I read some of the comments here before reading the article, and I was expecting something significantly more complicated and esoteric. Set builder notation, element-of, and quantification - it's practically Python. I find myself genuinely _shocked_ that people here are finding it inscrutable, much less those in the audience at the talk. I can't help but wonder whether most of those with their hands down weren't able to understand but lacking confidence that their read was correct?

</comment><comment><USER11> I'm npt a CS major, and I also don't have the slightest idea what that formula is about. Don't even know half of the symbols.

Granted, my bachelor's isn't even a scientific degree, I'm an ex-addict turned sysadmin recently turned programmer, self-taught entirely. But I'm freaking sad I was a dumb kid who thought math was stupid once and that our school system (Germany) made it so easy to use my talent for language to average out my dare-I-say intentionally bad grades in the subject.

It's not even that I was bad at it. What drove me to computers, to code or crafting ridiculous zsh scripts in the first place was formulating my own approach to solving a problem. As much as I sucked at "solve these twenty equations like this", I used to love problems stated in natural language and coming up with a solution. Should've built on that.

Anyway, besides the late night regret... Can anyone of you recommend a book for me? Think little to no familiarity with the terminology, many years of only using what math a supermarket or insurance situation entails, eagerness to learn and fascination with the subject. No delusions about becoming a regular mathlete in my early thirties, I just want to fix a lack of knowledge caused by pubescent idiocy.

Thanks!

<comment><USER12> Introduction to Automata Theory, Languages, and Computation [https://www.amazon.com/dp/8131720470/ref=cm_sw_r_other_apa_4...](https://www.amazon.com/dp/8131720470/ref=cm_sw_r_other_apa_4a8lybXX8SA2X)

</comment></comment><comment><USER13> Alright, hold up a section of C++ or js code and repeat similar questions, and then ask why mathematicians don't learn to code given how relevant computer programming is to applications of mathematics today.

Not that I believe mathematicians should learn how to code as a perquisite for their degree, I don't. I also have similar feelings for CS students and understanding mathematical notation. Yes, if you're headed for grad school or a researcher, then it's a different story (so the grad students/academics should have tried may be). But should knowing that notation, say, be on the same level of importance for understanding programming concepts like cache- locality for someone headed to a typical dev job? Probably not.

</comment><comment><USER14> I'm surprised anybody calling them self a 'computer scientist' couldn't follow that - developer, sure, but as far as I'm aware everyone on any CS degree programme in the world "learns math"; enough to follow that for sure.

<comment><USER15> Yes, to me "Computer Science" has always been a branch of (applied) math that deals with mathematical theories that apply to computing - complexity, discrete math, numerical methods, operations research, automata, etc.

</comment></comment><comment><USER16> It's sort of weird that a mathematician would confuse 'notation' for 'math'.

This is like giving an algorithms class to a mixed group of perl and Haskell programmers, using Haskell for all the examples and wondering why perl programmers don't learn computer science.

<comment><USER17> He is not confusing notation with math.

If you don't speak the language, It indicates that you never learned the stuff that is spoken in that language. At least well enough to be fluent in it.

<comment><USER3> Do you think that the people in his room didn't understand the concept of a function mapping over x coordinates whereby the height of each y component equals that of it's position on the x axis?

Or more simply put, do you think these people have never taken a math class in high school that went over

        y = f(x)

<comment><USER17> Lamport is not talking about basic math.

If you study math enough, you learn to read this math notation fluently. From his toy example you can infer that they have not studied much math very deeply. Like topology or advanced algebra.

</comment></comment></comment></comment><comment><USER18> I loved math and sailed through it in college. Algebra, calculus, linear algebra, theoretical classes- no problem, I never got less than a B+. We had a lot of classes where using the calculator was forbidden and you had to actually know how to break these things down. When I was practicing math I can't understate how easy it was for me.

The problem is that's it's been 12 years since I used a differential equation or any of my other 'hard' math. It's really frustrating that I used to be able to look at these equations and know what they meant and now I can barely make heads or tails of simple f(x) type stuff. I could solve (simple) differential equations without even jotting a note down, I honestly don't know if I could read one now.

It sucks.

<comment><USER19> I suspect if you wrote some code to solve differential equations 12 years ago, and went back to that code today, you'd understand it without much hassle. This is the failure of maths as a language IMHO.

<comment><USER20> But you'd be looking at two different things. When looking at a math textbook on differential equations, you're looking at _why_ a class of expressions constitutes a solution to a differential equation. Looking at code, all you'd get is the mechanical _how_ something is computed, and you'd have to take it on faith that what was computed constituted the solution you were looking for.

</comment></comment></comment><comment><USER21> It took me a little while to parse the syntax, but understanding the formula itself was simple.

I think more people struggle reading math than understanding the concepts.

</comment><comment><USER22> He obviously runs though the speech he had ready (there is not half a second of a break at any point) whatever the actual assistance response may be.

Also note that he inundated the audience with a different formula popping in random places of his screen every 5 seconds for at least the previous 2 minutes, with constant more or less related babbling.

It sounds to me like a dishonest behaviour and conclusion. I must say I am neither a mathematician, nor a computer scientist, so I don't have a side to take, and I understand the formula, but I would not have raised my hand due to the fact there was only 5 seconds between the time the formula popped up about at the third of an already filled screen, and the request to raise one's hand. (And also because the one who raises his hand may end up cleaning the toilets. Beware.)

</comment><comment><USER23> We should rephrase the question as "why don't computer scientists learn traditional math symbols?"

Try writing traditional equations with your keyboard. Try posting your answer online. Modern computer science breaks down these symbols into plain english.

<comment><USER24> we do have math typesetting you know... With a standard programming language for typesetting handled by all major browsers. Just head over to Mathoverflow and see it in action

<comment><USER25> Also, when writing code it's not unusual (at least among LISP and Haskell programmers) to have the editor replace a word for its corresponding symbol, the most famous example of which is (lambda -> λ) because some people find it easier to parse e.g. in emacs[0]. You can easily imagine doing that for other expressions, like (forall, there-exists, ...etc).

All in all I think it's a matter of preference which is in turn related to each individual's experiences.

[0] [https://www.emacswiki.org/emacs/PrettyLambda](https://www.emacswiki.org/emacs/PrettyLambda)

<comment><USER24> Indeed, Slack has native support for ~2k emojis, but not basic math symbols. It's clearly a matter of priorities, not feasibility.

</comment></comment></comment></comment><comment><USER26> Math notations are so badly designed (if there exists any design) If you'd spoken in plain English, Lamport, most people in the room could have understood the concept of your tedious formula. So it's not because we don't understand math - it's because the math notations are usually over abbreviated, obscure and inconsistent. Math itself is strict but there's no strict common language to express it, which eventually prevents people from understanding it.

<comment><USER27> There is a strict common language to express it. The speaker used that language (except for the nonstandard replacement of brackets with square brackets, which was apparently clearly pointed out at the start). The problems start when you speak in plain English: then you get things like everyone using different definitions of continuity and thinking everyone else is just spouting nonsense until someone comes up with epsilon-deltas.

</comment></comment><comment><USER28> As a CS researcher I probably wouldn't have raised my hand, thinking it was some sort of a trick or that the speaker was making a point about how simple concepts are sometimes conveyed in confusing ways.

I appreciate mathematics, but because I don't use this notation on a regular basis, I wouldn't have been confident enough to raise my hand.

<comment><USER10> Yeah, I don't judge those in the audience too harshly. I could certainly see, given limited time allotted, thinking "it's probably not that simple, maybe I'm missing something...?"

</comment></comment><comment><USER29> > For example, a programming-language designer who uses symbols that aren't on > any keyboard deserves to be laughed out of the room.

Not quite. APL.

[https://en.wikipedia.org/wiki/APL_(programming_language)](https://en.wikipedia.org/wiki/APL_\(programming_language\))

</comment><comment><USER30> When I went through Uni we learnt several different types of Math including discrete math, advanced calculus, and probability and stats. The math described in the article falls under discrete math. The notation used is similar to that used within formal methods.

However, since Uni I have rarely needed to use the math notation, and so I am unable to understand it without "interpreting" it. Such notations have most relevance to understanding database schemas and other set theory type problems, however, generally speaking, in software development using such a notation is unneeded.

In summary, the reason computer scientists don't know math is not because they haven't been taught it, but rather that the notations are not very relevant, and therefore soon forgotten.

</comment><comment><USER31> Here is some math notation. What does it mean?

        x

It means nothing. Or it could mean anything. The surrounding text is what explains the meaning you're supposed to derive from mathematical glyphs. Of course there are conventions. "x + y" _usually_ means what most people would assume it does. And sometimes it doesn't. Read the paper to be sure.

I haven't finished watching the talk yet, but he seems to be arguing that programming languages aren't expressive enough for mathematical purposes. I suspect he's not counting all of the wordy scaffolding necessary to support those terse equations. Can it all be combined into a formal language that stands on its own? If so, might it look like a programming language?

</comment><comment><USER32> I was struck by Butler Lampson's observation along the same lines, in 'Programmers At Work', Lammers [0]

INTERVIEWER: What kind of training or type of thought leads to the greatest productivity in the computer field?

LAMPSON: From mathematics, you learn logical reasoning. You also learn what it means to prove something, as well as how to handle abstract essentials. From an experimental science such as physics, or from the humanities, you learn how to make connections in the real world by applying these abstractions.

[0] [http://research.microsoft.com/en- us/um/people/blampson/37a-P...](http://research.microsoft.com/en- us/um/people/blampson/37a-ProgAtWork/37a-ProgAtWork.htm)

</comment><comment><USER33> I have noticed that CS majors tend to be separated into two groups, those who got linear algebra and those who got THROUGH it. Programmers are very logical in their thinking but most are not what I would call traditionally mathematical in their approach to problems.

<comment><USER34> Put me in the got "through" it camp. To this day my Pavlovian response to any linear algebra is "put it in a matrix & solve", even if I don't have an intuitive understanding of what that means.

</comment></comment><comment><USER35> We are sudo scientists. Sorry.

<comment><USER36> I see what you did there!

</comment></comment><comment><USER37> Does anyone else feel like the font made it harder to read? It doesn't look like latex. :P I have no problem reading math formulas, but this particular one is harder to read than normal for some reason.

Who am I to argue with Leslie Lamport, but still I reject the premise. Computer scientists do learn math, regardless of whether they read Greek- letter math notation. Write a function with a for loop or array map, and you've used all the same math concepts as this example formula.

All the best math comes with pictures anyway. ;)

</comment><comment><USER38> For the same reason mathematicians don't learn computer science.

And that answer is: most do. The fields are very complementary.

Set theory? I personally don't have need for that right now. But I've been working my way through [https://pomax.github.io/bezierinfo/](https://pomax.github.io/bezierinfo/) which the most complete resource to bezier curves I've seen, including closed- form solutions, analytical methods, and interactive demos.

</comment><comment><USER39> Slightly off topic, but the video linked in the OP was worth watching for more context. However, he mentions at several points that the Virtuoso operating system for the Rosetta spacecraft was designed using TLA+. That is not the case: [http://research.microsoft.com/en- us/um/people/lamport/tla/co...](http://research.microsoft.com/en- us/um/people/lamport/tla/correction.html)

</comment><comment><USER40> Maybe the CS people don't know set notation for the same reason that Lamport dismisses Homotopy Type Theory and Galois Connections at the 2:00 minute mark.

</comment><comment> koga-ninja As far as I know, linear algebra and discrete math are Prerequisites for CS majors.

I didn't formally study math after grade 11. A lot of Math anxiety is simply being too young to have enough Knowledge or neuroconnections.

I'm 40, and while I do not understand Roger Penrose's Books, they don't intimidate me like they would have At age 20.

</comment><comment><USER41> At the University of Waterloo a CS degree was a Bmath degree with a CS major up until like 12 years ago, when a BCS was an option with slightly less Math courses. It was so much math I almost dropped out because I hated it, felt like no programming or real world stuff, I just kept waiting for it to get better until I finally realised this is it, it's mostly just math, that's what makes it "computer science". I grunted through it and got my degree and learned everything I use today mostly on my own. There was a good base but I've forgotten most of the math and notation now because it's mostly useless to me and I didn't like it or fully get it. Maybe that was just a UW experience as it was a highly touted math school.

TL;DR Comp Sci I took was all math so I don't get the title!

</comment><comment><USER42> This is entirely dependent on the program. My undergrad had few set-theoretic math classes. Sure we had to take discrete math and combinatorics, but this kind of notation was lacking. I learned it by way of double-majoring in mathematics.

Conversely, my master's program pretty much assumed you were comfortable with set theory. CS103 is a freshman/sophomore level class at Stanford and is a prerequisite/foundational course for the master's degree. I was out for five years before returning for my master's. It is 100% true that programming skills are more useful in industry, and re-learning the mathematics was the hardest part of returning to school after being out for five years.

With that said, machine learning is eating the world, and it requires a very good understanding of the underlying mathematics.

</comment><comment><USER43> I certainly learned enough math to understand this when doing my CS degree. The better question is "Why do people who don't use something every day forget the details of how it works?"

When phrased that way the answer is more obviously. I've learned plenty of things I have let myself forget.

</comment><comment><USER44> My reason:

Math is boring. Cryptic math is... cryptic.

CS is interesting because it's about logical expression. You have an idea, now figure out the steps to make that become reality. Sure, some higher maths may be required along the way, but almost always as an ancillary task.

<comment><USER45> > You have an idea, now figure out the steps to make that become reality.

A.K.A. writing a proof. Isn't that what mathematicians do all day?

<comment><USER44> i suppose, but one reason I had no interest in math in school was I saw no practical point to a formula, and less-so for a proof. It may be a personality issue with me, compounded by less-than-engaging math education techniques, but I think a good analogy would be: I always loved legos as a kid, and programming is like grown-up legos to me :)

</comment></comment></comment><comment><USER36> That kind of math was common on the whiteboards around the MIT AI lab in the early/mid 1980s when I was there. Then again, (to kapitza's comment) ∀, ∃, and ∈ were on the Lisp Machine keyboard (and the KTV keyboards on which it was based).

</comment><comment><USER46> This is _not_ about mathematical notation. It is about a lot of people working in computing, researchers even, not being able to follow what is going on at what may be the leading edge (cue the arguments that it is not relevant...)

On the other hand, what percentage of physicists understand string theory? I do not know where that figure lies, whether a low number would be a problem, or whether it would be relevant to the computer science case. I do suspect that I would be better at computing if I understood category theory or TLA+ (I would at least be better able to evaluate their prospects for advancing the field), and I am not going to make any excuses for my ignorance.

</comment><comment> j-pb I would argue that this formulation is outright confusing not because it is so dense but because it has so much unnecessary cruft to misguide the reader.

The entire formula of

{f ∈ [1..N ⟶ 1..N] : ∀ y ∈ 1..N : ∃ x ∈ 1..N : f[x]=y}

could actually be written as

[1..N ⟶ 1..N]

Most CS people myself included will not trust their own senses when confronted with such a tautological statement and continue to search for meaning where there is non because it is so common to encounter cases in your everyday code where something that you thought was dead code has actually semantic meaning.

<comment><USER47> If by [1..N ⟶ 1..N] you mean the set of functions from [1..N] that have values in [1..N], I think you are wrong. The formula in the post describes a subset, the set of such functions that are surjective.

<comment> j-pb Yeah I think your right, in this context I saw the case of [ A -> B ] as a function from coimage A to image B which are all bijective. But it is meant as the more standard domain A to codomain B.

His natural language description is somewhat lacking in that aspect

> I had already explained that [1..N ⟶ 1..N] is the set of functions that map > the set 1..N of integers from 1 through N into itself,

<comment><USER48> Well, he did say "into itself", not "onto itself".

</comment></comment></comment></comment><comment><USER49> This feels like naivete and arrogance of the question asker. Why should a group of computer scientists understand a particular equation? What does it mean if they don't?

<comment><USER10> > Why should a group of computer scientists understand a particular equation?

Because it's incredibly simple, and expresses concepts they should already be familiar with as they're both incredibly basic and plenty relevant to CS. The notion of "one-to-one" and "onto" functions is taught in high-school algebra!

> What does it mean if they don't?

It mostly means they've not been using this notation, which is a problem not because the notation is necessarily perfect (although I dispute those saying what's used here is particularly arcane - this is _super basic stuff_ ) but because there is a whole lot of relevant knowledge encoded that way (including plenty of CS papers!) and clearly they haven't been accessing it.

</comment></comment><comment><USER50> I took a few CS classes while studying engineering undergrad. I also have a grad degree in Industrial Engineering from Columbia U. Now-a-days, I develop software and apps.

The training in mathematics, operations research, and mathematical modeling has been extremely helpful in the way I approach and solve computer science problems. It has helped with everything from smart SQL queries to developing scalable software and enterprise architecture for software.

</comment><comment><USER51> This post requires some context. This is not about math, which is the field that studies things like stochastic PDEs and elliptic curves. It's about the notation of predicate calculus, which is a somewhat obscure field of logic that used to be in vogue in the early 20th century, and that programmers fixate on for some strange reason.

</comment><comment><USER52> I'm a computer scientist in France and I think it's weird not to know these symbols, don't you learn how to use them in other countries? I mean, I learnt how to read this kind of formula in high school and used them intensively during my scholarship

</comment><comment><USER53> Probably because some don't need to and don't want to spend more of their life on it.

</comment><comment><USER54> Wait. That's just the set of all functions from naturals to naturals whose image covers the entire codomain.

Mind, set-builder notation is a horrible crock, since you wind up not being able to say "image covers the entire codomain" in plain language.

<comment><USER27> We like having small sets of primitive notions ("exists", "for all", "set"). The reason we have words like "surjection" is to abbreviate things which are otherwise unwieldy to state precisely using our small set of primitives. It's analogous to the reason we might program in high-level languages and then compile down to machine code: because the low-level code is much easier to execute directly (analogously, the primitives "forall", "exists", "set" are extremely intuitive and we're nearly all sure that they are non- contradictory).

</comment></comment><comment><USER55> I wasn't a CS student, but the story at my college seemed to be that if you liked math then you were a CS major, if you didn't then you were an SE major.

<comment><USER56> I wish my college had SE <sigh>

</comment></comment><comment><USER57> Such an arrogant thing to say about computer scientists. It's like saying why don't mathematicians know how to write an app?

</comment><comment><USER58> My university teaches discrete math, which covers this formula, in the first semester of computer science. Is this not standard?

</comment><comment><USER59> I understood it. They covered this stuff in the discrete math class I took at community college.

</comment><comment><USER60> That's not testing for math, it's testing for notation.

</comment><comment><USER61> odd comment from lamport. He wasn't referring to learning math, just learning a specific type of math notation.

</comment><comment><USER62> Long story short : but they do.

</comment><comment><USER62> Long story short : they do.

</comment><comment><USER63> But why he decided to use f[x] instead of just the very common f x?

</comment><comment><USER64> LOL rrrright, why don't poly-sci majors learn math?

</comment><comment><USER65> We do

</comment><comment><USER66> I suspect most of the CS researchers in the room were, in a sense, lying. I'm going to guess (a) they could all understand the notation if they tried; (b) they were in fact taught the notation in some undergraduate class, math camp, etc, etc; and (c) what happened is that they _intentionally forgot it_.

At least, this is the case for me! I think one of the dirty secrets about the CS distaste for many areas of math, including conceptual areas like category theory that are in fact quite closely related to computing and directly applicable there, is that when judged as CS, they don't seem like very good CS.

For example, a programming-language designer who uses symbols that aren't on any keyboard deserves to be laughed out of the room. What are these weird 19th-century squiggles? I see what you're doing, sort of, but why are you doing it?

This is obviously a petty example. But computer scientists, at least ones with a certain kind of systems background, have put a lot of work into designing abstract logical structures for human beings to use. They've learned a lot of rules about how to do this well.

The corpus of pre-CS math that gets applied to CS doesn't seem to care about any of these rules. It takes a lot of work to come up with a CS aesthetic, and when you have one, your brain only has room for "good" systems that play by your rules. If a system doesn't map to your rules, it's almost physically painful to have to contemplate it.

Practicality is not quite the issue. TLA+ seems to be a very useful thing and Lamport has produced a large, large, body of extremely useful work. At the same time, I can't help feeling it would be neat if someone did for TLA+ what Ousterhout did for Paxos.

<comment><USER17> >east ones with a certain kind of systems background, have put a lot of work into designing abstract logical structures for human beings to use. They've learned a lot of rules about how to do this well.

This is very arrogant and wrong. The exact opposite is true. Mathematicians have worked hundreds of years and streamlined notations that can express complect things well.

<comment><USER67> I am a mathematics student working as a systems software engineer. I find mathematical notation excessively dense and tedious to interpret.

Given the expression:

{f ∈ [1..N ⟶ 1..N] : ∀ y ∈ 1..N : ∃ x ∈ 1..N : f[x]=y}

I can instantly read it in my head as:

The set of all f where f is a function mapping 1..N to 1..N such that for all Y in 1..N there exists an X in 1..N such that f[x] = y.

One might argue that the ability to express such a long definition in such a compact form is a benefit, but I don't think so. In this particular case the definition is so trivial that it's easy to understand what is being talked about. Anything more complicated than this quickly becomes tedious and boring. I would prefer that mathematicians simply used longer, more verbose, but more clear and explanatory names for quantities and concepts. Just my opinion, though.

<comment><USER68> The notation and its meaning are both pretty clear, but I don't see how it converts to "the set of all permutations from 1 to N". And permutations of what? The integers 1 to N?

<comment><USER22> I guess that's why he talks about applications and not functions, so that guarantees there is a single _x_ for each _y_.

<comment><USER46> I think he was just clarifying a point about the notation.

Given that each f is a function, mapping each member of its domain to one member of its range, and that for each member of the range, there is a member of the domain that the given function maps to it, and that the domain and range are the same size, then there can be no member of the domain not mapped to some member of the range, and each member of the domain must be mapped to a distinct member of the range (or else there would not be enough members of the domain to cover all the members of the range), so, with the domain and range being the same set, each of the given functions is a permutation of the domain, and collectively they must be all of them.

This is a verbose version of the argument for this being the set the author says it is. Arguably, it would be easier to read if I had used x for 'member of the domain', y for 'member of the range' and f for 'the given function'.

</comment></comment></comment></comment></comment></comment><comment><USER69> As a mathematician, I understood Lamport's notation, but that doesn't mean it's good notation.

For that audience, why do you even need it? Just say "the set of all permutations of N elements" or "the symmetric group S_N" if you're nasty.

</comment><comment><USER70> I think I remember this particular notation, but only because I beat it into my brain trying very hard to not tank my GPA in a ridiculously useless discrete mathematics class that was required for me to finish my CS minor.

</comment><comment><USER71> b/c any math I learned was long forgotten while was figuring out how to compile javascript...duh

<comment><USER72> You figured out how to compile JavaScript?

<comment><USER37> I figured out how to compile JavaScript [https://developers.google.com/closure/compiler/](https://developers.google.com/closure/compiler/)</comment></comment></comment>


Woman calls 911 for diabetic fiancé, cops shoot him dead - <AUTHOR> http://www.salon.com/2013/10/08/woman_calls_911_for_diabetic_fiancee_cops_arrive_shoot_him_dead/

<comment><USER2> While we don't know the truth of the story, the salon headline editorializes needlessly. It gives the impression that the shooting was the action immediately following the 911 call, without any mention that something could have happened in between. It's the family's version, but the cops version involves the victim brandishing knives in between.

The story itself mentions both sides, but it's unfortunate that the headline presents only the 'wtf' side of the story.

</comment><comment><USER3> Hmmm... Why does that site want me to download .apk files when I visit it with my android phone?

Is salon compromised?

</comment><comment><USER4> Terrible outcome.

Why is it NH?</comment>