Engineer-to-Engineer Recruiting - <AUTHOR> http://blog.sourcing.io/engineer-to-engineer-recruiting

<comment><USER2> Here is an idea for getting useful responses back - give the candidate enough info to evaluate whether they are interested. This means info on the company, detailed description of the role, ballpark on the comp. You are even more likely to get a response if your email suggests you went as far as googling the candidate.

I truly don't understand why recruiters think "unspecified opportunity at top startup in technology industry, send me your resume since I'm too lazy to google it, I want a phone conversation" is actually useful.

<comment><USER3> I like the recruiters that tell you nothing other than a bit of the technology, and even that does nothing to distinguish it. "I have a great Java opportunity in (your area); call me if you're available and interested". Yeah, I don't think so.

It's like they're trying to prevent you from going straight to the company, to where they won't get their finder's fee, but all it does is ensure they only get responses from people who are desperate.

<comment><USER4> A lot of those recruiters are agency recruiters working on contingency. Meaning they don't actually work for the company they're recruiting for, they just get paid for successfully referring engineers to that company. The reason they're so vague is because they don't want you skipping over them and contacting the company directly, which would save you/the company a lot of money (and cause them to lose their recruiting fee).

<comment><USER3> Like I said, "to where they won't get their finder's fee"

I understand them wanting to protect their sources, but they have to give some details. "I have a Java backend position in the telecommunication sector, it would be on the client's (whatever team) that (does whatever). I'm looking for a developer with 3-5 years experience in Java or other static OO languages; the client uses (frameworks), and some knowledge of (tech, tech, and tech) would be helpful as well. Compensation is competitive, the pay is a bit better than average, standard benefits" would be the elevator pitch that might actually be worth paying attention to (well, no, because I don't want to go back to writing Java, but you get the idea).

In short, I want to know -something- about the job beyond "it's a bog standard development job". I can find a bajillion of those posted online, without having to call and actually -talk- to someone. Show me that you actually know what the position is about, and might be able to answer questions about it before I actually talk to the client, and I might respond.

<comment><USER4> We are in agreement.

</comment></comment></comment></comment></comment><comment><USER5> What's really frustrating is when I get a seemingly personalized email, and then six of my coworkers say that they got the same email. Do recruiters really think we don't talk to each other?

<comment><USER6> I try not to take it out on recruiters because from people I know who've done it, their bosses are constantly on their asses to make quota/reach a certain # of "connections" a day. The personal touch and relationship kind of goes out the window.

<comment><USER7> Very true, and unfortunate. However, its kind of bullshit when a company who would look down on me for "resume blasting" and not tailoring my resume for them thinks is OK to "lead blast" me with a fill-in-the-blank form letter.

</comment></comment></comment><comment><USER8> What gets me about recruiter spam is how similar to regular spam it is. I've received only a smattering of messages, but largely, they're entirely lowercase, they have almost no punctuation, and they frequently have patently obvious grammatical errors. I responded to one recruiter (she managed to contact me at a time I was looking at alternate employment), and on the phone she was well-spoken; something about sticking a keyboard between them and me apparently causes communication to devolve into a base form.

</comment><comment><USER9> I hear a lot about this, but never had any recruiter emails at all. I'm 20 years old so I suppose my name is just not known in the programmer world (?), but then how does that work? How do you get your name known? Day after day you hear about unemployment in the news, yet here everyone is complaining about receiving too many "please come work for us" emails?

It's not that I don't believe that many developers receive so much spam, but I don't understand why or how. How'd they even know if you're any good? According to some internship places, >50% of the developers is incompetent. Do recruiters just pull as many people as possible in for interviews and check everyone out, is that the goal? Or is it mostly just because the company wants to expand, or to compensate leaving/older people?

<comment><USER10> I didn't start getting a ton of recruiter spam until I had a linkedin profile and started "connecting" with recruiters on linkedin (to "get my name out"; not sure I'd use this method to get my name out again though). Before that I would only occasionally get anything. Now every time I update my profile I get a flood of recruiter spam.

<comment><USER3> You don't need to connect to recruiters, per se. But yes, having a LinkedIn profile will ensure you get a constant trickle of recruiters. Any time you touch your profile, expect the number to increase; LinkedIn's algorithm seems to promote newly updated profiles, likely due from the assumption that touching your LinkedIn profile is like updating your resume; you're more probable to be looking for a job than someone who has left it sitting there untouched for two years.

<comment><USER10> Well, it also made a big difference once I moved to the Valley

</comment></comment></comment></comment><comment><USER11> Engineer-to-engineer recruiting works to some extent, but only as long as your engineers are willing to tolerate it.

Airbnb, for example, has (had?) an "Always Be Recruiting" dogma: Get your engineers so _psyched_ about the company that they go forth and witness to every engineer they know. It seems to work–at least, until you dig deeper. The nigh-unto weekly "most recruiting recommendations" statistics single out the few who are willing to share the Kool-Aid, and–more importantly–the many hundred who are not. If your engineers are made to look bad because they're not proliferating their trade at every tech talk, it's a bad sign.

As an aside to my aside, this article seems to ignore the glaringly-obvious "Have the CEO do the recruiting" conclusion.

<comment><USER12> _> As an aside to my aside, this article seems to ignore the glaringly-obvious "Have the CEO do the recruiting" conclusion._

Comparative advantage. It's likely that the CEO's time is better spent elsewhere even if he's also the best at getting responses to recruiting.

Maybe the right answer is to have a recruiter recruit using the CEOs account, pretending to be the CEO and then handing people off to the recruiter version of themselves when they reply.

</comment></comment><comment><USER13> Good marketing spam about their product. Nothing for the end user here; just to sell to companies.

I wish recruiters would be:

a) honesty. Nothing good is built on a lie. b) personal. Get Feedback if you are not interested and actively engage in talking to your potential employee's as well as your potential clients. c) communication. Falls into b) but it also falls into a).

I immediately delete most recruiting spam that is not actually written to me. I realize this costs me jobs potentially but it also saves me face. Nothing worse than getting hyped up over a potential job that will never be.

</comment><comment><USER14> Interesting article and its small sampling echoes what I've long preached – keep HR and recruiters out of the hiring process.

The claim that HR/recruiters are the only ones that have "pipeline management" (translation: multitasking), "offer negotiation" (translation: requirements validation; this is farce as HR/recruiters work for the company and not the candidate, thus they all have a take-it-or-leave-it approach), and "brand recognition" skills are completely false. If HR/recruiters were such experts on brand recognition then there would have been responses to the limited sampling.

</comment><comment><USER15> If a recruiter is open to telling you the company name, I usually respond. If not, they're much more likely to be ignored.

</comment><comment><USER16> I think the article raises / highlights a great point. When you're trying to hire the most talented folks out there, making that effort of integrating the team, be it the CEO, VP R&D or any of the engineers in the process makes a strong statement in my mind that a company is really interested in you and that you're not being carpet bombed by email. That in itself creates a slightly stronger sense of good moral obligation from the side of the candidate to respond, as he feels that there's a "real" person on the other end, but also that this company is making a real effort. The fact that they incorporate engineers into this, is also something to would send a strong signal (at least to me) that this is a company worth checking. My two cents at least.

</comment><comment><USER17> I think spam is spam no matter who sends it (engineer or recruiter). If I send or receive a random message, it'll be just that: a random message in an inbox. Such messages are usually ignored. While recruiting for my startup, I've had the most success through introductions rather than sending random messages to people.

<comment><AUTHOR> Interesting, I think you highlight the point that the more personal the contact is, the more fruitful it will hopefully be (see purereason's reply). While you consider all recruitment email to be spam, it seems that not all do (according the results of the experiment shown...)

</comment></comment><comment><USER18> The best recruiters I've ever talked to have been from VC firms. I've actually ended up friends with recruiters working at VC firms that I've gotten calls from. With the better firms, they realize it's not all about placing people in one of their companies today, but rather fostering a positive relationship.

</comment><comment><USER19> This requires recruiters to actually do work, instead of keyword searching resumes and spamming candidates.</comment>


Client Wants Me To Support WordPress 2.7?? - <AUTHOR>

My client wants me to code WP plugins so that they support WordPress 2.7 and higher instead of WordPress 2.9.2 and higher. He tells me this on a very tight deadline after countless thousands of lines of code have been written.<p>Please help me deflect this. I need to show him just how vulnerable a WordPress 2.7 install is, and why 2.9.2 or higher is necessary. I need to show him that perhaps jQuery might not even work if we don't have greater than 2.7, and we rely a good bit on jQuery. <comment><AUTHOR> Here are some hard facts I have found out:

A query on "wordpress 2.7 vulnerability" shows 29,000 results while "wordpress 2.9.2 vulnerability" shows 11,800 results.

WordPress 2.7 was released back in February of 2009 -- we're a year and half practically away from that time.

There's nearly 3 times as many vulnerabilities with WordPress 2.7 as WordPress 2.9.2.

There were a total of 2,181 bugs/problems/issues/concerns that were closed between 2.7 and 2.9.2.

There were also several jQuery differences between 2.7 and 2.9.2 which could make jQuery functions fail.

Here are all the bug reports filed between versions 2.7 and 2.9.2:

Starting from 2/10/2009 when 2.7 was out:

[http://core.trac.wordpress.org/query?status=closed&group...](http://core.trac.wordpress.org/query?status=closed&group=resolution&milestone=2.7)

672 bugs/problems/issues/concerns

[http://core.trac.wordpress.org/query?status=closed&group...](http://core.trac.wordpress.org/query?status=closed&group=resolution&milestone=2.7.1)

74 bugs/problems/issues/concerns

[http://core.trac.wordpress.org/query?status=closed&group...](http://core.trac.wordpress.org/query?status=closed&group=resolution&milestone=2.7.2)

43 bugs/problems/issues/concerns

[http://core.trac.wordpress.org/query?status=closed&group...](http://core.trac.wordpress.org/query?status=closed&group=resolution&milestone=2.8)

786 bugs/problems/issues/concerns

[http://core.trac.wordpress.org/query?status=closed&group...](http://core.trac.wordpress.org/query?status=closed&group=resolution&milestone=2.8.1)

54 bugs/problems/issues/concerns

[http://core.trac.wordpress.org/query?status=closed&group...](http://core.trac.wordpress.org/query?status=closed&group=resolution&milestone=2.8.2)

1 bugs/problems/issues/concerns

[http://core.trac.wordpress.org/query?status=closed&group...](http://core.trac.wordpress.org/query?status=closed&group=resolution&milestone=2.8.3)

5 bugs/problems/issues/concerns

[http://core.trac.wordpress.org/query?status=closed&group...](http://core.trac.wordpress.org/query?status=closed&group=resolution&milestone=2.8.5)

14 bugs/problems/issues/concerns

[http://core.trac.wordpress.org/query?status=closed&group...](http://core.trac.wordpress.org/query?status=closed&group=resolution&milestone=2.8.6)

2 bugs/problems/issues/concerns

[http://core.trac.wordpress.org/query?status=closed&group...](http://core.trac.wordpress.org/query?status=closed&group=resolution&milestone=2.9)

505 bugs/problems/issues/concerns

[http://core.trac.wordpress.org/query?status=closed&group...](http://core.trac.wordpress.org/query?status=closed&group=resolution&milestone=2.9.1)

25 bugs/problems/issues/concerns

</comment><comment><USER2> Hey Mike,

That looks a little late in the process to start arguing with a client about something that should habe been part of the spec from the beginning. Funny, I _just_ posted a link about that: <http://news.ycombinator.com/item?id=1376083> , but that isn't going to help you much.

Khao advises you to google, I'd second that, with the addition that maybe it would be best if you confined your searches to reputable news sites, that usually carries a lot more weight than a few numbers.

That way you can let others with authority speak for you, and hopefully they'll make a more compelling case.

If there is a really good reason why the customer wants to do it their way on their servers, maybe you could offer to host it on your servers to get past the deadline, cut you some slack and then after the deadline you'll help analyzing the situation with respect to backwards migration.

In my experience, temporary solutions are amongst the most durable things in software.

best of luck!

<comment><AUTHOR> > "That looks a little late in the process"

I made some assumptions unfortunately. Now if he makes me also have to support PHP4, I'll hang myself. (Not really.)

<comment><USER2> > I made some assumptions unfortunately.

Yes, been there, done that, have several t-shirts.

Live and learn. That's one mistake you won't be making again (for a while, at least). But it still sucks to be in this situation.

> Now if he makes me also have to support PHP4, I'll hang myself.

Please don't do that. However if visual basic is mentioned then you might have to go through with that, but I'd suggest hanging the client instead. It's rude, not good for business but it drives home the point ;)

In my experience, with some man-to-man (or whatever the applicable genders) talks you should be able to work it out, if the customer can be brought to your side of the table then you've solved it. One way of achieving that is to move to their side of the table, and make a list of the consequences, and have them agree - preferably in writing, an email will do - that they take responsibility for any consequences of doing it 'their way', and that any work over and beyond the agreed upon will be billed separately.

That might make them a lot more amendable to reason.

</comment></comment></comment><comment><USER3> Search for "wordpress 2.7 vulnerability" on google : 369k results Search for "wordpress 2.9.2 vulnerability" on google : 11k results

It might show him how dangerous it is to use an old version of Wordpress. It's like using windows XP with Internet Explorer 6

</comment><comment><USER4> Firstly, explain that there is not enough time. Then, estimate the testing effort and show them. Then suggest a revised timeline. Be as professional as possible.

<comment><AUTHOR> Awesome idea. This one might work.</comment></comment>


iOS 8 WKWebView uses Nitro JavaScript Engine - <AUTHOR> http://9to5mac.com/2014/06/03/ios-8-webkit-changes-finally-allow-all-apps-to-have-the-same-performance-as-safari/

<comment><USER2> This is huge! Finally PhoneGap apps won't suck (as much).</comment>


E2E Automated Exploit Generationfor Validating the Security of Processor Designs [pdf] - <AUTHOR> https://cs.unc.edu/~rzhang/files/MICRO2018.pdf <comment><AUTHOR> see the USENIX Enigma 2019 talk:

Hardware Is the New Software: Finding Exploitable Bugs in Hardware Designs [https://www.youtube.com/watch?v=ojVGI2nH7NI](https://www.youtube.com/watch?v=ojVGI2nH7NI)</comment>


FB AI TransCoder converts code from one programming language into another - <AUTHOR> https://venturebeat.com/2020/06/08/facebooks-transcoder-ai-converts-code-from-one-programming-language-into-another/ <comment><USER2> Comment thread about the paper itself: [https://news.ycombinator.com/item?id=23463812](https://news.ycombinator.com/item?id=23463812)

</comment><comment><USER3> Very cool. I would love to see the python science stack translated into native typescript/js. Sometimes you just want something quick and easy that doesn't require sorting through virtual env hassles.

</comment><comment><AUTHOR> Original Paper - [https://arxiv.org/pdf/2006.03511.pdf](https://arxiv.org/pdf/2006.03511.pdf)

</comment><comment><USER4> I feel like this is the sort of thing that could make 30% of software jobs go away overnight. I'm not worried yet, but I think the clock is ticking. I don't know if I would encourage my children to persue a programming career if they were due to graduate in 5 years.

Yes, I'm old enough to remember all the other times we thought programming was a doomed profession. This feels like it could be different.

<comment><USER5> Im kind of curious, let's just say a programming career is doomed, what would you recommend your children to pursue then?

<comment><USER4> Depends on my kid. If they were mechanical, something like HVAC repair. It's the last thing that will ever be automated and last I checked it pays well.</comment></comment></comment>


Revisiting "Ranking the popularity of programming languages": creating tiers - <AUTHOR> http://www.drewconway.com/zia/?p=2892

<comment><USER2> This is very interesting stuff. What I'd like to know is how you could measure the size of each project. Otherwise this could be easily skewed by a user creating a ton of empty, unfinished, or even dummy projects once they have heard about this study. There isn't really anything stopping them on GitHub.

As a last comment: The descending grey bands represent the rank quartiles, e.g., the top band is the 100th percentiles, then 80th percentile, etc. If there are 5 of them, doesn't that make them quintiles (which my spellchecker claims isn't a word, haha)?</comment>


What's happening with Color? - <AUTHOR>

I haven't opened it for a couple months, mainly because I don't appear to have anybody near me using it. LinkedIn has taken Color's place on the HN Bubble Watch.<p>So...is there a raging Color community snapping mad pix daily and causing the recent drop in Facebook U.S. numbers? Or are Color about to reveal their (real) master plan? Or is that it? <comment><USER2> I'm with you: my use of Color is nearly non-existent, due to the apparent non- exisence of any other users, at least in the Center City Philadelphia area. Is this a foreseen and accounted-for part of the Color Master Plan? [Shrug.]

An app that I actually find mildly useful is Sonar. I can browse around local places and see if anyone has recently checked in. And then, if anyone has, I can see if I'm somehow connected to them. Or if they seem interesting. I haven't yet decided to get off my butt and go to a specific location because of Sonar, but I can _imagine_ doing so.

So it's not like you can't make at least mildly compelling, useful apps in this space. Color just doesn't seem like one.

</comment><comment><USER3> Enough people found out that they were the product, it just turned out differently. <http://boingboing.net/2011/03/27/best-iphone-app-revi.html></comment>


Economists puzzled about why incomes not rising, but workers have a good hunch - <AUTHOR> http://www.businessinsider.com/slow-wage-growth-from-demographics-and-employers-2017-5 <comment><USER2> They are puzzled, eh? They ought to be studying politics and not the economy in order to understand "why".

<comment><USER3> I don't think they are puzzled, it's Adam Smiths theory in practice.</comment></comment>


"Googler to Founder – 18 months in" - <AUTHOR> "Googler to Founder - 18 months in" https://medium.com/@lewish/googler-to-founder-18-months-in-cf3024a70199 <comment><USER2> Great read, I am trying to test out a startup idea myself. I realized that being a Software Eng sometimes we can get too focused on trying to architect and build the product, instead of knowing the nitty gritty details of the problem you are trying to solve. So I developed the mantra in my Steve Ballmer voice "Customers, Customers, Customers" :).

<comment><USER2> [https://www.youtube.com/watch?v=Vhh_GeBPOhs](https://www.youtube.com/watch?v=Vhh_GeBPOhs)</comment></comment>


Alexa now has over 3000 skills - <AUTHOR> http://www.businessinsider.com/amazons-alexa-now-has-more-than-3000-skills-2016-9 <comment><AUTHOR> I could see these devices going to $0 as the market grows. If competition heats up.

I imagine Google, Microsoft,Facebook, and Apple will offer one soon.

What better way to interact with an AI chat bot. And you should be able to make up the $10-$40 in cost through partnerships.</comment>


Why it's so hard to keep up with how the U.S. gov't is spying on its own people - <AUTHOR> https://www.washingtonpost.com/news/the-switch/wp/2015/11/20/why-its-so-hard-to-keep-up-with-how-the-u-s-government-is-spying-on-its-own-people/ <comment><USER2> This all makes a lot more sense if you just accept that the government isn't 'working for you' or however people think of it these days. They're working for them. They're playing a shell game to work around you. Not exactly breaking news when we have long-standing political families and parties. It's not a new thing. There is a political ruling class. We're not in it and the people who are like this ability so they're going to hoodwink us to keep it. It's just that simple.

<comment><USER3> Almost everyone I know outside the HN echo-chamber is more worried about terrorism (and dozens of other things) than they are about surveillance. In a nutshell, they saw "V for Vendetta" as a fun movie, but not any more of a plausible future outcome than any of those movies set in a post-nuclear winter.

I don't have any evidence that the government is doing anything other than what people want with regard to surveillance.

Keep in mind that the composite median voter is basically my mother: thinks the world would be chaos without authority; thinks drugs make people morally bankrupt; wants a big SUV; wants to ban guns; is nearing eligibility for Social Security and Medicare, etc. She _loves_ Hilary Clinton. And of course, she's going to vote. I'm not.

<comment><USER4> >she's going to vote. I'm not

And thus you admit to being part of the problem.

<comment><USER5> Not really. I would argue that I can realistically have a much greater impact on politics by contributing reasonable amounts of money to a campaign, by hiring a lobbyist, or by forming a vocal special interest group around my ideas which has a PAC. Why be a nameless voter who a candidate doesn't give a shit about when spending some money can literally buy me face time and legitimacy. Moreover, I can do this regardless of who is in power; I don't need to be constrained by political affiliation or a candidate's stated platform which may not mesh well with my ideals.

<comment><USER4> > I can realistically have a much greater impact on politics by contributing > reasonable amounts of money to a campaign, by hiring a lobbyist, or by > forming a vocal special interest group

I think that's pretty unambiguously true, but voting is free and relatively easy.

</comment></comment></comment></comment></comment><comment><USER6> From what I have witnessed, the average American I come into contact with still doesn't seem to care about the spying. I have recently had conversations in the past week since the Paris attacks with a few people that seemed to really believe Snowden's leaks were a big reason this happened and anyone who has "nothing to hide" should support the dragnet NSA policies.

The sad thing is that the US intelligence community apparently notified the French spooks about the possibility of an impending ISIS attack(s) (which seems ambiguous, after all, an attack could occur anywhere) and a few of the attackers were on fundamentalist watch lists, and yet the attacks still happened. Yet no major media outlet has (at least that I have seen) identified this as an example of a failure of the US/EU ICs. Glenn Greenwald was on CNN yesterday throwing CNN's anchor under the bus for allowing all these major IC talking heads to come on and blame snowden, talk up dragnet, etc. - it was pretty interesting.

Terrorist attacks, which are black swan events, are not preventable. So if I have to deal with them, I would rather deal with them without the dragnet than with it. I also cant think of a single example of the NSA/CIA preventing a major terrorist attack in the US (at lets face it, if they had one, they would have used this as a shining example by now). All of the attacks that were thwarted were just by luck: shoe bomber, underwear bomber, time square bomber, etc.

<comment><USER7> I am in no way, shape, or form advocating for more surveillance. But I can recall at least one event recently where a terrorist threat was thwarted: the 2010 Portland, Oregon Christmas car bomb: [https://en.m.wikipedia.org/wiki/2010_Portland_car_bomb_plot](https://en.m.wikipedia.org/wiki/2010_Portland_car_bomb_plot)

<comment><USER8> That plot wasn't discovered from mass surveillance. That was where the FBI makes themselves look like they're solving terror plots by finding mentally unstable socially isolated people and providing all the resources and planning for a 'terror plot' they can then bust.

</comment></comment></comment><comment><USER9> I've said it before and I'll say it again: when law enforcement compromises the security of a network without a warrant, they need to be prosecuted and jailed under the same law that any other hackers breaking the law would be. As long as there are no consequences for breaking the law, the NSA will continue breaking the law.

<comment><USER10> The US has a long tradition of not jailing its political lawbreakers, though. The way they pitch immunity in this case is to claim that a prosecution of an NSA official that broke the law would cause the remaining NSA employees to be on-guard for lawbreaking, and too busy to watching their ass to do their job at the NSA effectively, leading to terrorist attacks against the US.

In effect, they say that it is unreasonable for us to expect the NSA to both obey the law and do their jobs.

Nevermind that they've re-written the laws to make their invasive surveillance completely legal.

<comment><USER9> > The way they pitch immunity in this case is to claim that a prosecution of > an NSA official that broke the law would cause the remaining NSA employees > to be on-guard for lawbreaking,

Good. Government officials should be on guard for lawbreaking.

</comment></comment></comment><comment><USER10> FTA: ""This is yet another trick move in the never-ending shell game that the NSA is playing with the American people, and apparently with the secret court whose oversight it is trying to evade," said Kevin Bankston, the director of New America's Open Technology Institute. "New rule: if the NSA claims that a particular surveillance program has ended, or that a particular type of surveillance has halted 'under this program,' assume that it is still going on in another program.""

It's hard to keep up with the latest abuses because, as the article mentions explicitly, the government is perpetually playing a shell game with its surveillance programs in order to deceive the public and its other enemies which the programs target. The government works from the assumption that an outed surveillance program is a surveillance program rendered ineffective, meaning that there's consistent internal pressure to reorganize, rename, and reconfigure existing programs that get hit with daylight. In order to kneecap oversight, regulatory questions are answered as literally as possible, using the most deceptive and narrow terms as possible. The terms that they use are typically internally defined in bizarre and obtuse ways for the purposes of propaganda, and these definitions are never made explicitly clear to the public or regulators. This is how we get to the point of a very straightforward, unambiguous term such as "collection" actually being defined by the NSA as "processing data for intelligence purposes after it has been found, categorized, scraped via algorithm, and stored."

In summary: it's hard to keep up because the surveillance agencies are intentionally being evasive of public and political oversight, because they are engaged in immoral programs which are perpetually extralegal.

EDIT:

An additional bonus of this maskirovka-style strategy is that the press will be bungled up habitually by reporting in the government's desired terms. This means that if the press even does understand the true meanings of the propaganda terms used, the public will be getting a confusing and often inconsistent narrative that is hard to make sense of. The press will also typically publish articles detailing the denial of wrongdoing from the government, and will rarely publish the highly detailed and factual accusations of wrongdoing in the first place.

<comment><USER11> Some illegal activities of IC may happen. I consider it acceptable as long as it is really small scale. In order to fight terrorism efficiently, we may need some large scale monitoring of phones (and/ot car movements). These large scale monitoring should be unambigously regulated. The principle of separation of powers (I am french) should apply.

</comment></comment><comment><USER12> The shell game is as much for the courts as it is for the people. The courts have demonstrated a de facto inability to enforce judgments and subpoenas against the US intelligence community, and part of the trick is obfuscating responsibility.

</comment><comment><USER13> Because the so called "oversight" committees are acting like the NSA's biggest cheerleaders, instead of making sure they don't exceed their legal powers.

Feinstein even admitted after the Snowden revelations that she wasn't even aware of many of the leaked programs NSA uses. A failure to punish the abuses only increases the number of abuses, as they learn that they can "get away with it" with no accountability.

</comment><comment><USER14> Most people want to be able to subdue and/or kill other human beings which disturb their daily lives, but they do not want to have to cope with the moral and religious issues which such an overt act on their part might raise. Therefore, they assign the dirty work to others (including their own children) so as to keep the blood off their hands. They rave about the humane treatment of animals and then sit down to a delicious hamburger from a whitewashed slaughterhouse down the street and out of sight. But even more hypocritical, they pay taxes to finance a professional association of hit men collectively called politicians, and then complain about corruption in government.

[http://www.lawfulpath.com/ref/sw4qw/index.shtml#twentyfour](http://www.lawfulpath.com/ref/sw4qw/index.shtml#twentyfour)

</comment><comment><USER15> _" There is a reason for all the secrecy: The government argues it has a vested interest in keeping capabilities secret so that terrorists and other targets aren't able to figure out how to evade surveillance. That's one of the reasons some intelligence officials were quick to blame Snowden in the wake of the recent Paris attacks, arguing his revelations may have given terrorists a road map for how evade detection."_

Didn't they use unencrypted SMS messages to coordinate?

<comment><USER16> _" But no evidence has yet emerged that the attacks were coordinated using tools that protected communications through encryption, a security tool Snowden often recommends to everyday users looking to ensure their digital privacy. In fact, the information available so far suggests that the attackers sent an unencrypted text to coordinate the launch of the attack, and several of them had been known to Belgian investigators."_

<comment><USER15> Oh. Thanks. Seems I misunderstood "text" in this context... In our country we're used to calling this SMS messages and I can never get used to "text messages". Hat tip to you.

</comment></comment></comment><comment><USER17> If your email account is hosted on the Cloud on US soil, and the email provider decides to migrate that part of their Cloud to the Philippines, for example, would that email come under the purview of the new program and be considered "outside" the US?

</comment><comment><USER18> [https://en.wikipedia.org/wiki/Dominant_minority](https://en.wikipedia.org/wiki/Dominant_minority)</comment>


Math That May Have Mapped the Brain in 11 Dimensions - <AUTHOR> https://www.wired.com/story/the-mind-boggling-math-that-maybe-mapped-the-brain-in-11-dimensions/ <comment><USER2> Hess and Markram didn't invent topological analysis of neuronal networks. They are not mapping the brain. This is a fluff piece that didn't bother to check with anyone else in the field if this paper is as groundbreaking as it's being presented, which is the absolute minimum of journalistic rigor.

The claim this ended up in Frontiers because no one else in neuro theory has heard of algebraic topology is laughable.

e: To be clear, I don't think this rises to the level of "Sokal hoax" \-- it looks like an interesting result. I also have an interest in the role massive simulation can play in discovery. But to misrepresent topological analysis as an entirely novel approach or package it with phys.org-press-release nonsense like "mapping the brain in 11 dimensions" is both a disservice to the rich field on which it's building and adds noise to public communication about neuroscience, which is already plagued with bullshit.

<comment><USER3> Tells:

* site=wired.com * "may have" weasel wording

The unfortunate pattern in pop science is the hero complex: the journalist learns about a field and feels a need to give all the credit to one person or small team, and to five them an adversary, to make the story seem dramatic, revolutionary, yet accessible. The real stories are too large and complex to make exciting in a quick read to a layperson.

</comment></comment><comment><USER4> Hmmmm. "Hess says they tried to shop around the idea to other neuroscience journals first, to avoid the conflict of interest—but didn't have much luck, since most editors they spoke to had never heard of algebraic topology".

Neuroscience as a field is quite comfortable with 'n-dimensions', given the importance of matrices to data. Let alone the relationship between topology and graph/network theory... It seems highly unlikely that editors would not be at least roughly familiar with algebraic topology. It reads (to me), "Our research is not marketable, because it lacks prescriptive insight, so we published it in our own journal". The conflict of interest statement in the paper is suspect, as the article roughly mentions.

From the abstract: "We propose that the brain processes stimuli by forming increasingly complex functional cliques and cavities". I can't see how this says anything not already well-established, though perhaps differently described - that biological structures in the brain support the use of hierarchical network models at the neuronal IP level.

Anecdotally, I find the 'jargonification' of neuroscience a little disturbing. This reads like false progress. I'm simply an interested lay-person, so I'm open to correction on all the above - but as I see it, additional ways of describing 'what' does not necessarily give a 'how'.

<comment><USER5> > I can't see how this says anything not already well-established

I am not a neuroscientist. It sounds like the cavities are orderly in 11 dimensions, whereas previously they seemed chaotic - the "shape of the activity" (i.e. something akin to a fMRI) is structured. This is different to the mathematical model of a neuron (being the matrix you mentioned).

I could also be reading this incorrectly.

</comment></comment><comment><USER6> This article about mapping the brain used the expression 'lol' in the first paragraph. I don't think it's nitpicking to say that significantly undercuts the seriousness with which I read the article.

<comment><USER7> The lol is perfectly appropriate in the context it is used:

 _KATHRYN HESS CAN'T tell the difference between a coffee mug and a bagel. That's the old joke anyway. Hess, a researcher at the Swiss Federal Institute of Technology, is one of the world's leading thinkers in the field of algebraic topology—in super simplified terms, the mathematics of rubbery shapes. It uses algebra to attack the following question: If given two geometric objects, can you deform one to another without making any cuts? The answer, when it comes to bagels and coffee mugs, is yes, yes you can. (They only have one hole apiece, lol.)_

I'm not sure what the people who are taken aback by it usually read -- or what did they expect to find here.

<comment><USER8> > I'm not sure what the people who are taken aback by it usually read -- or > what did they expect to find here.

They don't understand what they're reading, so instead of asking for an explanation, they attack the lowest hanging fruit (the 'lol').

It's just a form of position signalling, basically they assume everyone else understands it and they want to be in that 'in-group', so they try and look smart by tearing it down by attacking nothings.

</comment></comment></comment><comment><USER9> Only distantly related, but the title reminds me of line from AI (pseudo-?) researcher Chris McKinstry[1]'s web suicide note:

>Oh and BTW, the mind is a maximum hypersurface and thought a trajectory on it and the amygdala and hippocampus are Hopf maps of it. No one knew this before me, and it seems no one care. So be it. My time will come in a hundred or a thousand years when the idea again returns.

[1] [https://en.wikipedia.org/wiki/Chris_McKinstry](https://en.wikipedia.org/wiki/Chris_McKinstry)

</comment><comment><USER10> It is waste of time to build telescope. What is the point. See the ship up there. I know it is there.

What is the point of big data. What is the point of neural network. Waste of time.

Until some point the telescope to what it is forbidden and said the forbidden by a guy called ... what are those things around Jupiter. It can't exist as it is not revolve around the earth

What is go? Silly game?

What is car drinking we can do it

... I guess to this silly scientific community it is just do not see beyond the present paradigm.

This may provide a way to understand the upcoming AI via ... understanding. What a waste of time!</comment>


"I wrote this film, and I am doing everything I can to prevent its release" - <AUTHOR> http://www.imdb.com/user/ur13063707/comments

<comment><USER2> Isn't this one of those cases when the credits of a movie mention "Alan Smithee"?

<comment><USER3> Ha, you got to that pseudonym before I could.

It could well possibly would have years ago but that name is now no longer a secret known pretty much only in the industry, so slapping it on the credits gives the impression that the movie is not worth watching.

[http://articles.latimes.com/2000/jan/15/entertainment/ca-542...](http://articles.latimes.com/2000/jan/15/entertainment/ca-54271/3)

</comment></comment><comment><USER4> Ouch. In retrospect, "Falling Sky Entertainment" was a good name choice for the production company.

</comment><comment><USER5> I wonder is this the kind of statement that will generate a cult following.

<comment><USER6> That's what they're hoping for. This is definitely part of the promotion for the movie.

 _In their place; five minutes of a woman dancing in slow motion, a four- minute Dominatrix dance (by the female lead, who, for reasons I cannot comprehend, is constantly snapping a whip and gyrating against other characters in pseudo-sexual positions), and a four minute "Moonwalking" scene (no, this was never intended as a Dance Movie)._

Sounds like standard fare for a writer known for (according to IMDB) "Disturbed," "Bikini Island," and "Last Dance" ("Someone is killing off contestants of a skimpy dance off.") His lost thirty-three pages of dialog (which never existed) would have been painful to watch, much more painful than women dancing in slow motion, and he is aware and at peace with this.

</comment></comment><comment><USER7> Why is this at the top of HN?

<comment><USER8> Because people here thought it was interesting. Is there a better reason?

<comment><USER9> Yes: better would be interesting AND relevant to HN.

These reminders are a good thing.

<comment><USER10> If people with accounts at HN vote it up, isn't it de facto relevant?

<comment><USER9> No. Because of the huge influx of new people who are used to general purpose versions of HN.</comment></comment></comment></comment></comment>


FBI Gets Evidence in Student Webcam Scandal - <AUTHOR> http://www.wired.com/threatlevel/2010/05/webcam-scandal-evidence/

<comment><USER2> Excellent. I hope criminal charges come out of this investigation -- if someone who orders "obscene" manga from Japan faces 15 years in prison for doing so, someone who covertly installs photographic equipment in the bedrooms of minors should get at least 1000.

(As a tangent, the message I take away from these trumped-up sentences is that if you hate someone, never hack their email account. Just get drunk and flatten them with your car. Much less prison time, and much less of a social stigma...)

<comment><USER3> "someone who covertly installs photographic equipment in the bedrooms of minors should get at least 1000."

Why?

They should spend the rest of their life in jail for invading someone's privacy? Is this to protect society or for revenge? Do you feel it's not possible to teach the person why you think their actions were wrong and release them back into society so they can continue to contribute positive things? What if there really was no ill-intent? What if the software was legitimately installed only for the purpose of recovering stolen property and the images that were archived were done so only for that purpose or accidently? Does the person responsible only have to serve a life sentence if they had voyeuristic motivations?

<comment><USER4> Personally I think they should spend the rest of their lives in jail for systematically and repeatedly abusing the power they have over the minors placed in their custody by society. Whether by ill intent or truly staggering incompetence and poor judgment means little to me personally.</comment></comment></comment>


Show HN: FutureList – a list of the most exciting products shaping our future - <AUTHOR> https://www.futurelist.xyz <comment><AUTHOR> Hey HN!

FutureList is meant to provide a place for anyone [on the internet...] to put the future. The 'future' can be a subjective idea, but we define it as something that few people know about or have access to, and has the potential to change many lives for the better.

Keeping track of all these futures is an arguably impossible task for any one person or centralized group. By leveraging submissions of the future from anyone, FutureList might be able to keep up with the breakneck pace of creation.

This list spawned out of another project I work on called Worlds Fair Nano ([https://www.worldsfairnano.com](https://www.worldsfairnano.com)), which is an attempt to get the future in the same physical space for people to experience. Our long-term goal with the fair is to bring a 6-month Worlds Fair back to the U.S.

I am obsessed with organizing the future and making it accessible to everyone because having knowledge of 'the future' enables a person to think creatively about how to affect it. I hope you enjoy FutureList and add a cool future or two!

We'd love feedback!

\- Matt & Michael</comment>


Ask HN: Hacker stuff to do in Philadelphia? - <AUTHOR>

I'm wandering around in the University City area in Philadelphia today and tomorrow during the days. Anyone have any suggestions of where I should go to hang out and hack, or of geeky sites to see? <comment><USER2> I work in University City and don't really have any suggestions, except to take a trip to 33rd and Walnut and find the remaining pieces of ENIAC. I _think_ it's on display in the Moore building.

Other than that, there are some hackers in old city at Indy Hall, who are probably nice to visit with, but that's a subway ride away (only $2.60 round trip, get off at 2nd st, get on at 34th and market).

<comment><AUTHOR> Good suggestion, thanks!

<http://somanyschemes.com/2008/12/01/me-iphone-eniac/></comment></comment>


Tale of two Kindles - <AUTHOR> http://objectmag.com/amazon-kindle-4-kindle-touch

<comment><USER2> I have a first generation Kindle. I have not played with the new ones, but based on the photos and descriptions, they seem a step backward in an important respect.

For those who don't recall the original, it had large buttons along the edges for page turning.

On a cold night, snuggled under a blanket, you could easily hold your Kindle through your blanket and read. When it was time to change the page, you could just tilt the Kindle to hit the "next page" button against your torso, or hit it with your other hand through the blanket.

Net result: you could read while staying warm.

How is snuggled blanket reading on the new Kindles?</comment>


Why is C++ still a very popular language in quantitative finance? - <AUTHOR> http://quant.stackexchange.com/q/1764/1275/ <comment><USER2> One reason that I know of is that you can get better performance.

Now I know that there are claims that C# and Java are performance competitive with C++. You see some of that in the benchmark game at <http://shootout.alioth.debian.org> for simple problems a wide variety of results. One interesting one, the n-body problem, which involves a lot of hard-core computation, is the winner C++ or Java or .net? Well, [http://shootout.alioth.debian.org/u32/performance.php?test=n...](http://shootout.alioth.debian.org/u32/performance.php?test=nbody) says that the winner is . . . Fortran!! (Not my favorite language either). g++ comes out at a factor of 1.3, the best Java at 1.5, and the best C# comes out at 2.1. That is, it takes the best C# program 2.1 times as long to compute this problem than the fastest program.

The stackexchange post said _But in this era, the performance of a program written in a language based on frameworks such as C# and Java can be pretty close to that of C++_ A factor of 1.6 is not pretty close, in my book. If you are in high speed markets and all other things being equal, placing your order at 1.6 ms when the other guy places it at 1.0 ms means what? It means you are further down in the order book. You lose.

So we all know that these toy benchmarks don't really represent what happens in a large, useful program. It would be interesting to build a more extensive benchmark set, don't you think?

Having worked on a very high-performance stock options feed, I can share some of my experience. The development goes something like this. You start out in C++, cause you get objects, and other useful stuff. You see that during peaks of the day, say around 0900 cst that you are beginning to fall behind. So you begin to tune.

See, lots of people decry the C++/C combination saying that they are different languages. Well, sort of. If you are on a theoretical or dogmatic bent, sure. But if you have a C++ program that is taking too long, you can relatively easily, bit-by-bit, turn it into a C program. So I am fine with the C/C++ designation in practice.

You tune this thing, making sure that you allocate your objects, say, at 0829 in the day and tend to leave them there until 1500. Then you up the -O count, hoping you are not pulling a Heisenberg. If you still need a little headroom, you learn that you can turn off exceptions in g++. Yes, even thought you don't ever throw an exception, having that not disabled costs you CPU. (What were they thinking?). So while the compile flags and the source program extension says C++, what you are executing more closely resembles C.

But there are those who fervently say that in such an environment that Java is competitive with C/C++. If you look at the cost to build the program, I am likely to agree that that part of the effort is faster with Java. But can you tune Java as much as C++? Or .net? I am suspecting not.

I think we should have a more broad-based real-life example. I am thinking that a simulated financial exchange repeatedly implemented in competing languages might be a more interesting example. In fact, I think I will go off and give that a try. Say maybe Lisp (note that it whips Java server in some examples, take that!), Java, C++ and certainly not Fortran (due to personal prejudices).

I'll let you know how that turns out.

<comment><USER3> I'm not a quant, and quite removed from the field. The transaction systems I work with are much slower, and most likely deal with significantly less information.

But, is the end all be all the execution speed? Does flexibility and robust recovery not matter?

Everything I'm hearing is that, it's better to gut the car down to the frame with no safety measures then even a little bit of coverage. If that program crashes or cross wires some data, how much damage can it do to your financial position?

From what I understand, billions of dollars are on the line everyday, but everyone is racing towards the bottom of that nanosecond mark, generally at the expense of risking instability etc.

Things that would never fly in other high-risk environments seem to fly in the stock system, and I'm going out on a limb, but it seems that's because if there was there is an adult watching the kids play in the stock market sand box and a fuse will blow if an HFT feedback loop triggers some real idiocy. ([http://www.zerohedge.com/article/hft-fat-digital-finger- brea...](http://www.zerohedge.com/article/hft-fat-digital-finger-breaks-citi- stock-shares-halted-circuitbreaker-triggered-stock-plungi) )

<comment><USER4> I was only peripherally involved in trade systems. My understanding is that the amounts of money to be made, and lost if you're second, completely drown the arguable maintenance and personnel costs of C++.

<comment><USER5> That is true for a small subset of the stuff quants do. For a lot of other stuff an hour this way or that makes hardly any difference at all. A normal day for one of my quant friends basically looks like, get into the office and spend the morning putting together some calculations, run them and got to lunch, get back from lunch and discuss the results with some colleagues, if you decided to trade based on the numbers, call a broker. Seconds and minutes are totally irrelevant to her.

</comment></comment></comment></comment><comment><USER6> I am a _pro tem_ moderator on the Quant Finance Stack Exchange.

This question was pretty contentious when it was asked. Worse still is that the current accepted answer came from someone who doesn't even work in quantitive finance.

Any argument about _performance_ is totally incorrect. There are indeed a few areas of quant finance that require performance, but those are in the minority. Really, C++ is the top language because of culture. Ie, _it's what everyone knows_.

Just about every major programming language is used in finance, and each firm has its own preferences. But almost all of them will still interview in C++ because it's so widespread.

<comment><USER7> We were developing data stream processing software for companies in financial sector. We were unable to get performances and controllability/measurability of the system our customer wanted using java. So we end up with C/C++.

<comment><USER6> I do high-frequency trading. My feed handling and order routing logic is in C++ for the performance benefits. But my backtesting is in q/kdb+, my loading scripts are in Python, and my administrative tasks are in bash.

Some of my co-workers use Java because their models aren't as sensitive to latency as mine. My best friend does options pricing in VB/Excel. And I know tons of competitors who use R, MATLAB, OCaml, and Haskell.

There are _tons_ of languages used in finance.

<comment><USER8> Could you please give me a specific example of how you use Q (something more towards the language side, rather than the database side)? Also: How did you learn Q? I've been playing with it, and I've read "Q for Mortals", but I'd like to do more, although not in the field of finance. I find Arthur Whitney's journey from APL to J to A+ to K/Q quite interesting, and I'm trying to figure out just how powerful Q really is. Thanks in advance.

<comment><USER6> > I find Arthur Whitney's journey from APL to J to A+ to K/Q quite interesting

Arthur Whitney didn't do APL or J; those were from Kenneth Iverson with Roger Hui helping out on the later. A+ was Arthur's implementation of APL, from what I understand. K is entirely ASCII (none of the special APL characters) and q added reserved words plus the integrated kdb+ database.

> How did you learn Q?

I learned q as a quant for a trading desk that used it for most tasks. I've been using it ever since because it's very expressive and has great performance.

<comment><USER8> "Arthur Whitney didn't do APL or J; those were from Kenneth Iverson with Roger Hui helping out on the later."

I am familiar with the history. I meant "journey" as in "progression through APL and APL-like languages". Iverson showed APL to Whitney when he was only 11 years old. Whitney created the first version of J, but then moved on, leaving it to Hui.

"Work began in the summer of 1989 when I [Ken Iverson] first discussed my desires with Arthur Whitney. He proposed the use of C for implementation, and produced (on one page and in one afternoon) a working fragment that provided only one function (+), one operator (/), one-letter names, and arrays limited to ranks 0 and 1, but did provide for boxed arrays and for the use of the copula for assigning names to any entity. I showed this fragment to others in the hope of interesting someone competent in both C and APL to take up the work, and soon recruited Roger Hui, who was attracted in part by the unusual style of C programming used by Arthur, a style that made heavy use of preprocessing facilities to permit writing further C in a distinctly APL style. Roger and I then began collaboration on the design and implementation of a dialect of APL (later named J by Roger) ..." - from Hui's "Remembering Ken Iverson", referencing Iverson's "A Personal View of APL" (<http://keiapl.org/rhui>)

In Appendix A, on that same page, you can find Whitney's code. It shows how differently he thinks about coding, and is likely a good example of Q's roots.

</comment></comment></comment></comment></comment></comment><comment><USER9> There are many reasons.

* quantlib: aside from (proprietary, very expensive, and damn slow) Matlab, no other language has a library of quant-related functionality that is so vast

* A lot of 3rd party libraries and APIs that do not have .NET, Python, Ruby, R (you name it) wrappers and you do not have time, expertise or resources to write them

* Like wglb mentioned, quants are obsessed with performance. Even aside from obvious things like high-frequency trading where you try to squeeze out every milliseconds. Let's say in middle office you run risk measurement calculation daily and it finishes in 9 hours for your portfolio. Well, if you happen to triple your portfolio (not unheard of in boom times), you cannot run it daily anymore, so a factor of 1.6 gets in your way here too.

* .NET programmers (on average, of course) tend to have less experience in dealing with algorithms and data structures

</comment><comment><USER10> I don't know why everyone is so quick to dismiss the simple explanation, "That's just the current culture of the industry."

Personally, I find this idea very compelling. The quantitive finance profession isn't exactly open and taking a constant influx of new ideas from the rest of the industry. They're a much more secretive bunch. Is it any surprise, then, that their tools stagnate somewhat because of their reluctance to engage openly with the rest of the industry?

I know that some people are engaged in high-speed trading applications where they require a language with a close analogue to machine instructions for the purposes of performance. I haven't seen any evidence that this is all quants everywhere, or that these suites of quantlibs actually provide all their functionality to that segment of the community.

Meanwhile, the CLR and JVM actually generate remarkably fast code from remarkably high-level specifications and LLVM is a real thing. Haskell and Ocaml take functional definitions and often generate better code than longer C++ definitions. I suspect that there is an under-served market here that is reluctant to adopt new tools for social reasons rather than for technical reasons.

<comment><USER11> I find it hard to use the term "stagnate" to describe an industry that is developing its own specialized languages/systems (see Q/KDB) and is currently in the process of exploring FPGA technology to improve performance. The secretive nature of the industry means that people outside it don't know what's happening on the inside, not that participants lack awareness of developments in more open industries.

Just to answer your point about CLR/JVM code performance: one early comment in the original article that stood out for me was "Pure computational performance (ignoring memory allocation/deallocation) under .NET runtime (ignoring vectorization) is pretty close to the performance of raw C++", which is all well and good except for the fact that you are going to end up with worse code than someone who doesn't ignore memory allocation and vectorization.

<comment><USER10> > I find it hard to use the term "stagnate" to describe an industry that is > developing its own specialized languages/systems (see Q/KDB) and is > currently in the process of exploring FPGA technology to improve > performance.

That's fine. We disagree on what's the right direction for software engineering. I welcome debate on the subject. I don't consider migrating to customized hardware a cutting edge technique.

It seems like every second justification I hear for the toolchains I see seems to revolve around performance complaints that are only reasonable in a hard- realtime situations or 2001.

> which is all well and good except for the fact that you are going to end up > with worse code than someone who doesn't ignore memory allocation and > vectorization.

Actually, that's exactly not what happens. Modern GC is good, man, really good. The vectorization scene is even better for the FP world.

</comment></comment></comment><comment><USER12> I think discussions on performance go south because we all instinctively use Big-Oh ideas, but there are times when constant multipliers really matter: when the computation is really, really long (big scientific computations), or when microseconds matter (interactivity and real time stuff).

As an example, for big scientific computations, Fortran seems to be about 30% faster than C, its next fastest competitor (at least this is what some physicists who did huge jobs to process imagery data to look for planets told me once). If you are running a job that takes 15 minutes in C, this doesn't matter, but if you are running a job that takes 10 days it matters immensely, especially when you consider that you still have to debug. 30% is three more days you have to wait for output before tweaking your stuff and trying to beat the other guys to publication.

With interactive programming, performance means you either get under the perceived instantaneous threshold or not, which is often the difference between "this app is cool" or "this app sucks". If you can get a 2 fold gain using C versus Java or C#, you can do a LOT of stuff "instantaneously" that otherwise make the user tap their fingers impatiently. Not too mention the high speed work of quants.

In the work I do -- processing moderately large datasets into summaries on 12 hour deadlines -- 20% here or there doesn't really matter. I think this is kind of interesting

</comment><comment><USER13> I think that the strongest indicator for the choice of C++ as language for a new project is the prior existence of a C++ project in the development organization.

<comment><USER14> Don't forget the existing codebase.

</comment></comment><comment><USER15> I built high-performance (~1ms) trading/pricing systems in Java and while Java performance is comparable most of the time there are key areas where it's non- competitive, for example garbage collection and socket I/O.

I used various techniques to get around these such as forcing GCs to happen during quiet periods and making kernel modifications to default socket parameters, but it's definitely non-trivial.

<comment><USER11> So basically, you start with Java, and then you rip out a lot of the features, such as GC, which differentiate it from C++ in order to make it faster. Why not just start with C++?

<comment><USER16> C++ has failure modes that should horrify anyone who can conceivably use anything else. The slightest mistake is likely to make even correct parts of your program fail in non-deterministic ways. Worst case in a managed runtime like the JVM is an exception and/or a big performance problem, and even those are a lot more likely to happen reproducibly during QA.

<comment><USER11> I agree that C++, like C before it, has some dangerous failure modes, but Java has them as well. I've been trying literally for years to get some of the people that I work with to understand how dangerous it is to have a runtime exception outright kill one (or many) of the threads in your program if it reaches the top of the stack while leaving the rest of the program limping along as best as it can. The safe default behavior in this case should be the Java equivalent of abort, and I push people to use factories that produce this behavior as much as possible, but I can't count the number of times that I've been trying to make sense of bizarre behavior while testing a program only to suddenly come to my senses and go to the log file where stderr has been redirected and see a ton of stack traces. It's only recently that I've gotten into the habit of checking for that first before I try to make sense of anything else.

With that said, the sort of C++ failure modes that you're talking about tend to mostly occur when working in optimizations, and if you program with a bunch of STL containers and shared pointers (i.e. program C++ like it was Java) then you don't tend to see these problems very much.

</comment></comment></comment></comment><comment><USER5> For what it's worth, all three of my friends whom are quants (at three different companies) spend most their time in SAS and some proprietary in house language.

</comment><comment><USER17> everyone likes to say speed -- but it's not just that -- it's memory management as well

<comment><USER7> Exactly. All these claim memory is "cheap" are misguided. The hardest thing is optimizing your program for appropriate usage of non-CPU resources (inter- processor communication, memory, disk, etc.).

</comment></comment><comment><USER18> I think there is also a bit of "I work too much to learn new things" going on.

</comment><comment><USER7> The C/C++ is just faster. You can tune it. You know what is happening. Also very important thing with C is that you can have a clear control how much of resources your program uses. And the _most_ important resource is memory.

<comment><USER19> Memory? Really? At ~$7 per Gigabyte of RAM I doubt that.

<comment><USER20> I don't know how relevant this is to computational finance, but in scientific computing you can use up an arbitrary amount of RAM in dimensionality-cursed fields. For instance, in neutron transport theory, the governing equation is in 7 continuous variables (or 6 in steady state), so that if you want your mesh to be twice as fine, your memory usage increases by 2^7 (or 2^6).

And, just so we're clear, that's _multiplicative_ , not additive. So you're using 2^7 _times_ as much memory as you were using before.

</comment></comment></comment><comment><USER21> The question is about quantitative finance, which is much larger than just HFT. In those spaces, the actual language is almost irrelevant. Hell, you can eek out sub-100 microseconds tick-to-trade times using perl, 150 using python and 200 using awk. And when your strategy has a 10-day horizon and predicts returns of 5% on an asset, missing a few cents due to the system is almost negligible.

That being said, the development performance (speed, iterative ability) become more important, and most quants are fluent with C++ or Java.

</comment><comment><USER22> >Performance compared to .Net or Java. When each array element access checks the bounds and throws exceptions, you know you're leaking CPU cycles there.

/facepalm

Has this person worked with modern JVM runtimes? JIT compilers? Does he know that they don't actually need to test the access each time but are able to move the test out of the loops? Or use the Unix signaling system to avoid having to create an exception, except when something goes wrong?

</comment><comment><USER23> Let's not forget the education angle here. Most quants these days come through similar sausage machines, and C++ is de rigueur.

<comment><USER24> I agree. If you look at the curriculum of any MFE (Masters in Financial Engineering) program (CMU being the most _reputed_ from what I hear), you will find C++ there. Most quants I work with have used C++ while they were at University. Even shorter courses like Wilmott's CQF (Certificate in Quantitative Finance) offer courses in C++.

</comment></comment><comment><USER25> For better or worse, many things happen in Wall Street as a continuation of market convention.

Why do people use Bloomberg rather than email?

Why is Sybase the standard?

Why is so much done in Excel?

There are a half dozen reasons for each of these (and a dozen more that they shouldn't be) but the common link is, "It's the market standard, and it's hard to change the standard."

</comment><comment><USER26> I'm familiar only with C++. Does Java or C# have libraries that are similar in concept to the C++ Standard Template Library (STL)? Error messages can be inscrutable, but it is very powerful.

<comment><USER27> Yes. The Java and C# standard libraries are actually much larger and broader than the C++ standard library + STL (and possibly including Boost).

(fyi, I mostly program in C and C++ these days, but used a lot of Java when I worked in telecommunications)

</comment></comment><comment><USER28> This has been answered million times: besides the historical reasons (which are extremely powerful), it's performance. Performance not as in how fast would it take to calculate this, but performance as in what is the worst case scenario for calculating this. Think Garbage Collector, mostly. But also think ability to control exactly how the data represented and stored in memory. Tighter storage == fewer cache misses. Market moves away while fluffy managed data travels from RAM -> cache -> CPU.

</comment><comment><USER29> Are libraries reasons? If so, then I'd say Boost deserves at least a nod.

Edit: I wanted to add some evidence, but the job looks to have been filled. The current opening lists C++ but doesn't mention Boost. Last week though...

[http://tbe.taleo.net/NA11/ats/careers/requisition.jsp;jsessi...](http://tbe.taleo.net/NA11/ats/careers/requisition.jsp;jsessionid=0DE3BBE908622D1C3B9989549E3E6D65.NA11_primary_jvm?org=QUANTLAB&cws=1&rid=196)

(these guys are across the street from my old office - good people, from what I hear)</comment>


94% of the Fortune 1000 are seeing supply chain disruptions - <AUTHOR> https://fortune.com/2020/02/21/fortune-1000-coronavirus-china-supply-chain-impact/ <comment><USER2> If we keep overreacting it will only get worse. So far the ratio is 1000 news articles per death. The consequences of the self induced panic will be worse than the virus it seems.</comment>


I hate the C++ keyword auto - <AUTHOR> http://www.randygaul.net/2015/12/06/i-hate-the-c-keyword-auto/ <comment><USER2> Well, the first bug is at

        for ( auto i = results.begin( ); i < results.end( ); ++i )

which should be

        for ( auto i = results.begin( ); i != results.end( ); ++i )

This will work on all the standard collection types. If "results" is some non- ordered type, such as a list, the first form won't work.

The reason for "auto" is that writing the type expression for an iterator is bulky, and quite messy in some situations involving generics. There were some situations where you needed "decltype". That was just too obscure.

Newer languages offer auto-type implicit type declaration by default. Both Go and Rust do this. It makes programs easier to write, but harder to read.

When this idea was first being kicked around on the C++ standards newsgroup, I proposed that the keyword "let" should be used. But adding a new keyword might break existing code, so "auto", which wasn't used much, was repurposed.

<comment> Ono-Sendai let is traditionally used for expressions, not types.

<comment><USER3> What do you mean? Here, "auto" is being used to define a variable, just like the way "let" does in other languages.

        for (let i = results.begin( ); i != results.end( ); ++i)

This matches the use of "let" in Haskell, Lisp, Rust, ES6, etc.

(Note that when I say "variable" in this context, I am using it as the hypernym, not in the sense where it denotes only mutable variables.)

<comment> Ono-Sendai What I mean is that for me, 'auto' in C++ means something like 'automatic type', e.g. it stands in for the actual type, whereas let x = some_expr means something else - it doesn't really say anything directly about the type of x.

</comment></comment></comment></comment><comment><USER4> As I just posted to his blog:

How about instead you use proper names? "Results" is a terrible name. So is "i". That is why you can't understand that code. Your 'fix' is still unreadable - the struct is rarely near the for loop, so you are going to have to go searching anyway to figure out what the hell is going on.

This is completely readable, IMO:

        for (auto employee : sorted_employees) {
            StoreEmpoyeeInFoo(employee);
        }

<comment><USER5> There is still no indication what "employee" is, or what will happen when it is passed to the "StoreEmpoyeeInFoo" function.

<comment><USER6> Agreed - but this is why modern features should be paired with modern tools. A simple hover-over or click through in an IDE to show what the function signature looks like is pretty basic these days. Autocomplete on what that auto variable's API offers getting better and better as well.

<comment><USER7> How does autocomplete and tooltips help you when diffing/merging code? It doesn't.

Relying on IDEs to give you insight into what should be obvious by just looking at the code show's that something's wrong IMO.

<comment><USER8> > How does autocomplete and tooltips help you when diffing/merging code? It > doesn't.

Sounds like there's an opportunity for better diff tools.

<comment><USER9> There really is... diff tools that point to the compiler (or a parse tree for dynamically-typed languages) could be so much smarter than what we have now.

</comment></comment></comment></comment></comment></comment><comment><USER10> I think the problem is the apparent lack of familiarity with STL containers, and the ubiquitous prevalence of .begin(). end() and knowing that ++ against an iterator will advance it. I looked at the for loop and it was obvious that it was a container of some sort that offered a ForwardIterator.

The replacement code is a struct that uses a pointer to a char array with no constructor or destructor. That is far more dangerous.

What the heck is "char * *" meant to be? Who owns the data inside it? How does it get cleaned up? What is its initial value? (clue: absolute garbage).

eg. Results x;

then read x.entries - KABOOM.

This is horrible C-style code. The problem is nothing to do with auto. The problem is no obviously-defined lifetimes of data and throwing pointers around as a solution.

EDIT: I heartily recommend the first couple of chapters of Stroustrup's C++ Programming Language Fourth Edition, where suddenly everything makes sense and you never want to see naked new, delete or double pointers ever again. Use references everywhere, and ensure you have sensible constructors and destructors.

I have to deal with crappy code like this all day in a brand-new C++ project where my superior pulls confused faces when expressions like RAII, copy- constructor, iterator, const-correctness, references etc. are used. I am pretty cheesed off with it and hate seeing code like this any more, particularly in brand new code (littered with uninitialised variables, double- lists with new items pushed onto them so nobody has a clue who owns items, C-style casts etc. etc. I weep).

Life in C++ land is now simple: Use the STL. Don't cast unless you have to. Use references. Use const correctness. Let the compiler do the work for you. Let it check for you. Don't make life hard for yourself.

<comment><USER11> _I heartily recommend the first couple of chapters of Stroustrup 's C++ Programming Language Fourth Edition, where suddenly everything makes sense and you never want to see naked new, delete or double pointers ever again. Use references everywhere, and ensure you have sensible constructors and destructors._

That is essentially the content of his short book, A Tour of C++:

[http://www.amazon.com/A-Tour-C-In- Depth/dp/0321958314/ref=pd...](http://www.amazon.com/A-Tour-C-In- Depth/dp/0321958314/ref=pd_sim_14_7?ie=UTF8&dpID=51xVLzxX4vL&dpSrc=sims&preST=_AC_UL160_SR119%2C160_&refRID=0MZ49N2C37W2JJ7E4179)

<comment><USER10> Ah yes but with the full book you get to look up the various concepts further on in the book if you don't "get it" within the intro section. There are times where ideas are introduced within the intro section but are tersely explained, where reading a section in the later chapter will make lightbulbs turn on in my head and it made sense.

Of course, the "Tour of C++" book is great as well. But the full thick book is fantastic. Nice font in it compared to the Third Edition too (kiss goodbye to serif fonts).

</comment></comment></comment><comment><USER12>
        struct Results
        {
            char** entries;
            int entryCount;
        };

        Results results = SortByName( input );

        for ( int i = 0; i < results.entryCount; ++i )
        {
            char* entry = results.entries[ i ];
            // ...
        }

Really? You're going to use bare double pointers? Did I miss the DeLorean?

And why do you need to know the kind of assembly being generated? How much smarter than the compiler are you?

If you want to find poorly performant code, use a profiler.

<comment><USER13> > And why do you need to know the kind of assembly being generated? How much > smarter than the compiler are you?

The compilers are actually quite stupid in the end. One has to know what kind of constructs the compiler can work well with and then change the problematic code to such that the compiler can produce efficient code out of.

This step comes after the profiler has pointed out the problematic spot.

Personally I find C++ code written in the modern style far more difficult to optimize than one that's closer to C. And yeah, in soft realtime this does matter. It's the difference between 20 and 60fps. It can easily be even the difference between 0.1 and 60fps.

<comment><USER12> > One has to know what kind of constructs the compiler can work well with and > then change the problematic code to such that the compiler can produce > efficient code out of.

Great! And luckily C++ allows you to do this. Once you've profiled and found the bottlenecks, you can get as low level as you need to solve it.

Far better to remain idiomatic until you find a problem rather than painting yourself into a bunch of low level architectural corners with no justification other than "it might be slow".

</comment></comment></comment><comment><USER14> > since this code is operating on purely opaque data.

Not opaque, generic. Genericity is good.

This rant is typical from someone who's still thinking very low level and who hasn't spent any time upgrading his tools to embrace the new level of abstraction that modern language concepts offer.

Not sure what type an expression is? Ask your IDE. This is the kind of things that tools are very good at, so let them take care of this while you focus on writing clean, generic and reusable code.

<comment><USER15> > This rant is typical from someone who's still thinking very low level and > who hasn't spent any time upgrading his tools to embrace the new level of > abstraction that modern language concepts offer.

OP is an undergrad whose public projects look like vanilla reimplementations of Box2D, so this isn't too surprising in that light.

</comment></comment><comment><USER16> Pop Quiz, what's the difference between

        auto x = y;

and

        ConcreteClass x = y;

The difference, of course, is that y wasn't actually of type ConcreteClass and you've just performed a potentially incorrect or inefficient cast.

auto isn't perfect in this regard, though. auto x = y where y is ConcreteClass& makes x ConcreteClass, not ConcreteClass& (there are reasons for this, but it's still a potential source of nasty perf bugs).

And yeah, you're going to have to relearn how to reason about code. This isn't a bad thing.

</comment><comment><USER17> > compile-time "surprises" ... bugs the crap out of me .. . No unanticipated > code.

s/I hate the C++ keyword auto/I hate C++/

<comment><USER18> This

The problem is not the auto keyword. The problem is C++

And auto is a very welcome improvement. No I don't want to type SomeCollection<MyStuff> items = new SomeCollection<MyStuff>();

The compiler _already knows_ what 'items' should be, I don't need to repeat myself.

<comment><USER17> Sorry, "this" is a reserved word. ;)

<comment><USER18> this;

should do nothing (inside a class method) ;)

</comment></comment></comment></comment><comment><USER19> It's funny, none of his examples point out the simplest problem with "auto": it is _not_ a reference and in fact it strips references out. Therefore, if something non-trivial is being used, _most_ programmers might say "auto var = value" (as his examples do) and incur costs or unexpected behavior that would not be seen with the expression "const auto &var = value".

And that is the real problem with C++: its defaults are downright stupid in many situations and the only real way to produce code without pitfalls is to know all the tricks.

I don't think "auto" is meant to be overused. It makes no sense to use it in place of an "int". It is fantastic for eliminating redundancy in expressions where the type already exists in multiple places and the "auto" serves to eliminate one of the pointless type expressions. It is also good when using objects that you _really shouldn 't_ depend on the types of, such as lambdas and possibly magical object types in certain template libraries that exist primarily as a means to an end.

Current compilers appear to generate very confusing error messages for "auto" variables, too. For instance, if you've forgotten to include "Xyz.h" which defines the class "Xyz", and the type of your "auto x = f()" _happens to be Xyz_ , and class Xyz hasn't been used anywhere else in your code, it may take quite awhile to figure out that this is the problem. Therefore, resist the urge to blindly remove all type information from your code; keep as many hints around as you can.

<comment><USER20> Good point! OP here, and this was one of the worst things (imo) when dealing with auto. Why the hell would it strip off reference qualifiers??? No clue man, no clue.

<comment><USER21> Probably because otherwise you cannot choose between stripping out references, or not doing that (by using auto& for instance)?

</comment></comment></comment><comment><USER22> Stroustrop explains his reasoning for the auto keyword here:

[http://www.stroustrup.com/C++11FAQ.html#auto](http://www.stroustrup.com/C++11FAQ.html#auto)

      The use of auto to deduce the type of a variable from its initializer is
      obviously most useful when that type is either hard to know exactly or hard to
      write. Consider:

      template<class T> void printall(const vector<T>& v)
      {
         for (auto p = v.begin(); p!=v.end(); ++p)
            cout << *p << "\n";
      }

      In C++98, we'd have to write

      template<class T> void printall(const vector<T>& v)
      {
          for (typename vector<T>::const_iterator p = v.begin(); p!=v.end(); ++p)
              cout << *p << "\n";
      }

      When the type of a variable depends critically on template argument it can be
      really hard to write code without auto. For example:

      template<class T, class U> void multiply(const vector<T>& vt, const vector<U>& vu)
      {
          // ...
          auto tmp = vt[i]*vu[i];
          // ...
      }

</comment><comment><USER23> I don't think that `auto` is what you hate; what you hate is operator overloading.

It's impossible to tell what all those operators are doing because operators are endlessly overloadable in C++. If you make all type declarations manually then that's still only part of the issue solved: the next step is that you have to go look at the class to find out what the overloaded operators do.

Auto without overloading has none of those same faults.

<comment><USER24> I don't find operators to be any different than regular functions. Usually I can tell what they do based on their name. Occasionally I do need to look at the class to see what they do.

Vector math in C++ would really suck without operator overloading, so I'm glad it exists.

</comment></comment><comment><USER7> +1 on this - it's _really_ annoying when overused.

It's great when _writing_ code, but really annoying when trying to understand code written by someone else using it and then having to bounce round code to work out what a function's actually returning.

Well named TypeDefs are much better IMO.

<comment><USER25> Don't you have to bounce around code to figure out what the TypeDef refers to anyway? Instead of using a well named TypeDef, wouldn't you get the same effect with a well named variable?

<comment><USER7> Sometimes, but PassengerVec at least gives you a lot more indication (including whether it's a pointer or reference as they have to be declared along with it) than:

auto passengers = getPassengers();

<comment><USER26> Woah, that line immediately reminds me of JavaScript at work, and one of the reasons why I don't like it.

</comment></comment></comment></comment><comment><USER27> I wonder what degree of a butt-burn will this guy get from a typical Haskell or ML code.

</comment><comment><USER28> Isn't this just a guy that has nearly no experience in C++? It is evident that the for() loop uses iterators.

Advocating for bare pointers and C-style solution is premature optimisation and blatantly wrong when using C++..

Finally, what is this post doing here? What do we learn from this?

</comment><comment><USER6> He acknowledges its real power when talking about templates. That's what this feature is about: make template metaprogramming accessible, and the regular developers of the world will be more inclined to make use of the features.

</comment><comment><USER29> This is dangerous advice. The same rant could be made about named structs, overloaded operators, or virtual functions. "With these stupid named structs now I can't know the offsets of the members I'm using!" "Now I don't know anymore which function is being called!" These are abstraction tools, allowing yourself to emancipate from low-level details, like memory layout and generated code. If you need fine-grained low-level control over the code generation, why use a C++11 compiler at all?

<comment><USER30> named structs and overloaded operators are very similar to auto in terms of poor benefit to risk ratio. Virtual functions are more intuitive and solve a problem.

</comment></comment><comment><USER31> What are some good debug practices to track auto type deduction? I know this trick:

       template<class... Args>
       struct check_type; //Don't define it!
       ...
       auto x=something();
       checktype<decltype(x)>(); // Compiler: "error: invalid use of incomplete type 'struct check_type<actual type of x>'"

Also there is a nice boost type pretty print runtime library. Else?

</comment><comment><USER32> It's all fun and games until the type of the thing you're iterating becomes 'unsigned int' (because you finally ran into a case where you overflowed 2^31-1) and suddenly need to track down all the places you sinned.

Been there. It sucks, especially when customers are down and people are yelling at you.

</comment><comment><USER33> I guess he wouldn't get along with members of the "almost always auto" religion.

</comment><comment><USER34> auto is bad? Auto helps to reduce the amount of typing on repeating the type declaration for the left hand side of an assignment, that can't be bad. Assignment to left hand side declared with auto doesn't do anything wicked like implicit type conversion - so its ok in my book.

</comment><comment><USER35> I try to avoid auto because it robs me of autocomplete.

<comment><USER36> get a real IDE</comment></comment>


Alphabet CEO says there is 'no question' that AI needs to be regulated - <AUTHOR> https://www.theverge.com/2020/1/20/21073682/ai-regulation-google-alphabet-ceo-sundar-pichai <comment><USER2> > For example, the CEO notes that the company's internal principles ban > certain uses of the technology, "such as to support mass surveillance or > violate human rights." It's because of concerns like this that Google > doesn't sell facial recognition technology.

Extremely rich from a corporation that sponsors CAPE Productions and Cogniac. Google doesn't sell this technology directly, but lets its Gradient Ventures VC firm do it instead.

</comment><comment><USER3> "since we can afford to pay off regulators, we welcome regulation."

> such as to support mass surveillance or violate human rights."

But older non-"AI" tech for that is fine.

</comment><comment><USER4> ABC wants the monopoly.</comment>