Show HN: Solve Geometric Programs in the Browser - <AUTHOR> http://www.prandtl.design/sandbox <comment><USER2> [http://euclidthegame.com/](http://euclidthegame.com/)

<comment><USER3> Similar Android game I've been bashing my head against for a while: [https://play.google.com/store/apps/details?id=com.hil_hk.euc...](https://play.google.com/store/apps/details?id=com.hil_hk.euclidea)

</comment></comment><comment><USER4> The problem of solving angular constraints has interested me for a while. I want to be able to programmatically lay out an optical setup with SVG. Here is my work so far, but I've run up against the problem of dealing with cyclic graphs. The "rewrite" branch uses a different approach based on an academic paper.

[https://github.com/SeanDS/optivis/tree/rewrite](https://github.com/SeanDS/optivis/tree/rewrite)

</comment><comment><USER5> Wouldn't this be much more convenient in the form of, say, a Python library that the user can run on their local machine?

<comment><AUTHOR> You can already do this exact thing with a Python library on the user machine, see here for install instructions: [https://gpkit.readthedocs.io/en/latest/installation.html](https://gpkit.readthedocs.io/en/latest/installation.html)

The intent here is to make it easy for people to get started and quickly write models, without needing to go through installing a set of packages.

<comment><USER5> There are also services that let you run arbitrary Python code in the browser, e.g. [1].

[1] [https://trinket.io/](https://trinket.io/)

<comment><AUTHOR> For sure, but they have a limited range of packages installed, and can be tricky to tune towards a specific need.

</comment></comment></comment></comment><comment><USER6> I'm not quite able to run the code (too much load on the server probably). But is this something that can solve LPs in the browser (possibly more than just LPs, I think)? This would be incredibly helpful for many people I'm sure--all the existing online ones have arcane input reqs (and unhelpful errors) and standalone applications either cost money (Gurobi, cplex) or are not easy to use at all (gnu glpk).

<comment><AUTHOR> Yes, there was an issue with someone nuking the compiler box, and we're working on fixing the demo up.

This does more than LPs, it lets you formulate GPs, which are a way of doing non-linear analytical optimization. See here for more: [https://gpkit.readthedocs.io/en/latest/gp101.html#what- is-a-...](https://gpkit.readthedocs.io/en/latest/gp101.html#what-is-a-gp)

<comment><USER7> HN community should add an internet rule:

xx) If it's online, it will get nuked.

</comment></comment></comment><comment><USER8> Doesn't scale

<comment><USER9> I dont think that's fair to them. Having a GP solver in the bg is very hard and very computationally expensive -- their costs are way more than similar Show HN and saying "Doesn't scale" I don't believe acknowledges this well

<comment><USER8> No, it is not unfair. It is valid, concise, actionable feedback, without personal attacks based on empirical evidence.

If you are not comfortable with constructive feedback then don't post an open invitation for feedback.

Then, it can be implemented in a way that scales. Since this is python + gpkit, maybe it could be executed on the client-side using emscripten. Then if the traffic is too high you can serve it from a CDN.

<comment><USER10> No, that was valid, concise, actionable feedback. Your original post was flippant and was not actionable. Although since gpkit almost assuredly uses the cPython c abi, and there is no emscripten backend for cPython, even this (much less flippant and much more actionable and valid) feedback isn't actually actionable because you cannot execute python+some c module using emscripten.

<comment><USER8> I took the time to try the thing, and it did not work for me due to timeouts. Others reported the same. Therefore it was showing signs of not scaling. And I pointed it out through a concise comment in a post which was about _requesting for feedback_ (the objective of the Ask HN section). Could not provide more feedback since I could not use it.

"flippant" means "not showing a serious or respectful attitude". I do not know at which point noting that a system is not scaling as feedback in a request for feedback post suddenly is disrespectful.

But now read at your own post, with the ad hominem. Seems disrespectful, maybe even "flippant". What is the point of acting in the exact same way you so fiercely criticize?

Then, how sure are you about that exactly? you can run a functional Linux kernel through emscripten, there must be a way to get a Python extension to work.

<comment><USER10> >>Therefore it was showing signs of not scaling.

Perhaps, although it seems as though it was less "not scaling" and more "someone exploited our system to spin the CPU" from my reading of the thread.

>"flippant" means "not showing a serious or respectful attitude"

And I hold to the claim that a 2 word response to an ask HN is absolutely flippant. Please explain to me what is actionable about "Doesn't scale"? That is a problem. Or, well, it could be a problem, it might not be a worry for them, but lets assume it is. "Doesn't scale" isn't actionable. Had your second post been the only post you made here, I don't think we'd be having this discussion, because while in this case it turns out to be not very helpful, it is at least actionable. They can look into emscripten and python, see that it probably won't work in this case, and move on. "Doesn't scale" doesn't do that.

Its the difference between feedback that is "you have a lisp" and "you have a lisp, try practicing speaking lyrically or rhythmically and it might disappear." It might help, it might not, but its actionable. "you have a lisp" isn't actionable.

I'll quote the Show HN Guidelines:

>Instead of "you're doing it wrong", suggest alternatives. When someone is learning, help them learn more.

As for what you think of my comment, I have a few objections to your statement:

1\. I don't actually see an 'ad hominem' anywhere, I only commented on your original comment and how _your feedback_ was unhelpful. No commentary on the user, only the content. Please specify where I did, because I would prefer to not go around attacking people on HN, even unintentionally. 2\. I went so far as to complement your second post and say that it was an example of good feedback. 3\. You didn't post a Show HN, there are no guidelines on my feedback to you ;)

That said, if your emscripten suggestion was made in good faith and not just a CYA "suggestion", I apologize, I misread your tone.

<comment><USER8> When a system is not scaling you can increase capacity to mitigate the problem, to buy time while trying to root cause and fix the problem.

You can also take the site down and display an error page.

At no moment I said "you are doing it wrong". I pointed out "it doesn't scale". A factual statement similar to "it's 11:13 am" or "it's raining".

<comment><USER10> And like I said "you have a lisp" isn't actionable feedback. It is a factual statement, but it suggests no action, and in fact, the person with the lisp likely already knows.

Because "it doesn't scale" doesn't imply that you need to increase capacity right now. "It doesn't scale" could mean that "this will be problematic when you have 2,000,000 users", or as you used it, it could mean "I can't get to your site right now". Personally I don't consider "it doesn't scale" to mean "I can't use your app right now".

Which comes back to my core point, once again, that your original post, "Doesn't scale", isn't actionable feedback, it didn't clearly convey any immediate problem nor did it provide a clear action to follow. The fact that you've had to clarify your post to multiple other users should be evidence of that.

<comment><USER8> OK dude, I will concede you the 1st place in Monty Python Argument Clinic 2017. Because at this point I simply don't care. Have an excellent day.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER11>
      -- Result received at 14:30:3, response time of 24.714s --

      Execution Timed Out

Seems very interesting, will check it out and hopefully provide some feedback when it's back online

<comment><AUTHOR> It's online now! Sorry it had the usual HN flop.</comment></comment>


Show HN: Workmode – Find places to work from based on DL/UL speed - <AUTHOR> https://workmode.co <comment><AUTHOR> Hey HN, I've made this PWA called workmode.

The goal of this app is to help the user find the best place to work from, depending on the location or search query of the user. The workplaces are ranked by the download speed and workability of a workplace.

The initial idea of Workmode is to crowdsource the download speed of workplaces from all over the world, one speed test at a time. In addition to the internet speed, a questionnaire is also shown in order to review the workability of a workplace. The speedtest and questionnaire results are saved and shown to users when they are close by or do a search for the region where the workplace is located.

When the user opens the application, the system checks if the geolocation is accurate and if any workplaces are nearby. If this is the case, the system will show the workplaces that are available for testing. When no places can be found or when the accuracy is below par, a general speedtest will be executed without the data being saved to the server.

General information about the listed workplaces is sourced from Google and Foursquare. This information is merged with the crowdsourced data that is submitted by the users of Workmode.</comment>


Show HN: Termdiff – Diff the Outputs of Commands Run at Different Times - <AUTHOR> https://github.com/karagenit/termdiff <comment><USER2> Pretty neat</comment>


Chrome will start blocking resource-heavy ads in August - <AUTHOR> https://venturebeat.com/2020/05/14/chrome-will-start-blocking-resource-heavy-ads-in-august/ <comment><USER2> Proposed title:

From August, Chrome blocks ads using 4MB data, 15s CPU in any 30s, 60s CPU total</comment>


Google, Facebook may have to reveal deepest secrets - <AUTHOR> http://www.politico.com/story/2017/10/01/google-facebook-2016-probe-secrets-243319 <comment><USER2> $1.5 billion was spent in the federal election season. 100k was bought by Russian interests and were questioning those 100k when we spend much more destabilizing other governments we oppose.

Still, we should look into why a campaign season wastes 1.5 billion on one contest and no one bats an eye, or some do a little but the media couldn't care less. It's one of their cash cows.

<comment><USER3> Don't dismiss a (even much) smaller amount; if properly targeted it can be a lot more effective than the crop dusting approach that traditional advertising takes.

<comment><USER2> That's ridiculous.

There is no way that a crack Russian/Ukranian team understand or have better info on the American public than American "pundits" and campaign professionals.

Why couldn't Bernie buy 200k of highly targeted ads and beat Hillary or why couldn't a very well connected Hillary (who has good connections to Russia as well) not buy highly targeted and effective ads?

I don't buy that narrative. There is no way a rag-tag team with $100k beats a political machine with real connections in DC, Wall Street, etc. which happened to also spend over $1billion. It's a ridiculous assertion.

Why don't we, the US, buy these highly targeted ads in a place like Venezuela and get people to vote against Maduro (or any other gov't we don't like).

It just does not work that way. Or, if it were to, the likes of FB and Google are doomed. Whoever this band of propagandists are they can undercut Madison ave and rake in the money for pennies on the dollar from corporate America.

<comment><USER3> This argument seems to fly in the face of the startup ethos (which I guessed had some currency at HN). It is precisely a rag-tag team with $100k and _a different way of thinking_ that brings down a $1bn machine. I'm not saying that this is what happened in this case, but it could happen (or have happened), so don't dismiss it just because of the resourcing asymmetry.

<comment><USER4> But it's likely true that it wasn't all their doing if they do exist. They could handy fall guys for whomever did the real work.

</comment></comment></comment></comment></comment><comment><USER5> It was apparently $100k spent by RT to promote news stories. Why is it so unusual for a news company to spend money promoting news stories on social media sites?

This is nothing out of the ordinary (including if a government did try small actions to impact an election), and yet it has become such an intense witch hunt during the 2016 election.

<comment><USER6> > Why is it so unusual for a news company to spend money promoting news > stories on social media sites?

Because its not a "news company", it is a known propaganda arm of the Russian Govt. masquerading as a news company. If it was an independent news agency, it would be OK.

<comment><USER5> So where do you suggest we draw the line between what state-sponsored news is allowed vs forbidden to do? Should we only forbid them from buying advertising? Why not forbid their reporting of news altogether?

Also, I don't think people have similar complaints about Al Jazeera's reporting on Russian election campaigns?

Every major country does this, every election, to every other major country. It's something we live with and I don't get the overreaction.

<comment><USER6> > Every major country does this, every election, to every other major country. > It's something we live with and I don't get the overreaction.

Please don't normalize this kind of behavior. Every country does not do "this". There is no major news agency supported directly by US Federal Funds, except perhaps NPR, but that has been openly critical of the US all the time.

And that is perhaps the test of truly independent news outlet: if its willing to criticize its own Government, if its able to do so, even when the information paints the Govt. in a really bad light.

<comment><USER7> Pedantic, but Voice of America is basically a US "propaganda" outfit. But a lot of countries do not really have this.

RT is totally at a different scale. It's clearly being used as a political outfit. Other state-owned media in many countries have rules about editorial independence. RT clearly does not.

<comment><USER8> >Voice of America

Anecdotally, I've literally never heard of this before.

<comment><USER7> It's not allowed to target Americans, so its profile in the US is pretty low.

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> The "Russia, Russia, Russia" Democrats are the same ones who want to regulate everything _except_ silicon valley, this isn't even on the radar for the Republicans, and even Europe is somewhat in their thrall thanks to branch offices and the Dutch sandwich.

All of this just proves to me that my US public school education on communism and the eastern bloc was simple propaganda. We are perfectly OK with having an unaccountable surveillance state as long as it makes money.

</comment><comment><USER10> FB, Amazon and Google have to be split up. It is not in the interest of the society or safe to have such huge companies with such huge power.

For Google at the very least the search engine has to become a separate independent entity with restrictions on how and what information is exchanges with the rest.

<comment><USER11> Many of the valuable projects that we get from FB (AI Research), Amazon (Echo, Kindle, etc.), Google (Brain, Waymo, GMail, Android, etc.), are due to their strong market position and a product that throws off cash. They have this market position because they are the best at what they do. These companies don't have monopolies because of government mandate, they have them because they make the best products.

It's frightening to think that there are people out there who want to kill the goose that lays the golden eggs but comforting that they are nowhere near the majority opinion. I hope it stays that way. I would hate to see Google Brain, Waymo, and Deep Mind go the way of Bell Labs.

<comment><USER12> I generally agree with you that they are doing good things but the bigger question is what harm are they doing? We need to stop having these huge mergers. Think what a different landscape we'd have if Facebook didn't own Instagram and WhatsApp. Those companies had a choice, fight FB with limited money or cash out. (I'm not judging them...) Look at Snap. They've said no and so FB threw all their money at duplicating all their features in _all_ their own properties. This is the downside of the products that just throw off cash. All the money and time in the world they can devote to squashing all competition.

It reminds me of the same things that happened with the banks and Comcast. Most people who have Comcast got there because Comcast bought their provider and the investors wanted to cash out, not because people voted with their dollars. The banks got too big to fail, not because everyone rushed to switch all their money to bank X but because bank X bought up all the smaller players with money bet on the bubble.

I think they do need broken up but I would argue all we really need to do is "unmerge" these acquisitions and spin them back out separate. Absolute power has always corrupted absolutely. To be fair, this isn't new. Gates did a lot of the same things but now their foundation is doing wonderful things. However, it is easy to be a philanthropist with spare billions. What I would love to see from one of these founders is to attack one of the world's biggest problems personally and with the same ruthlessness they did their main companies. Musk is the only one who really seems to be "walking the walk".

<comment><USER13> You lost me at "Musk is the only one who really seems to be "walking the walk"", which is inconsistent with the rest of your theory, but luckily for you that was the last sentence. :)

It's clear Musk is also interested in consolidation and expansion of his empire, probably one day under X.com brand, but I guess since he is good at working on his fan base and talking about imaginary ideas, he should be treated differently than Larry Page or Jeff Bezos.

When you think about it from another perspective (playing devil's advocate here for the sake of illustration), SpaceX is not about going to Mars, it's just another satellite launching business working its underpaid employees 80-hour-weeks with that line; SolarCity was just another put solar panel on your roof business you see a ton of in Costco without any clear differentiation (how about "unmerging" that too, by the way?) Heck, look at Tesla "Autopilot", nothing but a joke.

If what Musk does is Good, I like to point out Larry Page's company had a self-driving car project since ages ago; they tried doing breakthrough work on life sciences, and a lot of other things. Perhaps Larry Page should have dated Hollywood actresses all-year-long to get more positive press coverage.

The point is, yes, there are pros and cons. And you basically agreed to the parent post's when you brought up Musk's example.

<comment><USER12> What you say is fair, I wasn't saying Musk is 100% altruistic. I think the push for solar and electric cars are good for the planet though even if they are good for his checkbook too. I was using him as an example of someone who is actively working on the projects not simply funding others to do good work. (Incidentally, I don't think self-driving cars is something that I'd call altruistic)

</comment></comment></comment></comment></comment><comment><USER4> Does anyone know how FB is planning to adhere to GDPR coming into force next year? Google are said to have stopped analysing peoples gmail. Could it be as simple as reducing the variables collected/predicted to a unashamed set that can be shown to users about themselves and could FB afford that?

</comment><comment><USER14> Well they are about to find out they are may be billions of features/factors that could involve those algorithms.</comment>


Live CERN Higgs Announcement in 20 Mins  - <AUTHOR> http://webcast.web.cern.ch/webcast/play_higgs.html <comment><USER3> So, the magic number here was 5σ, the generally accepted "gold standard" for discovery, which would mean a 1 in 1.74 million chance that the results occurred by chance rather than being a signal. As other commenters have pointed out, the presenter originally announced a 4.1σ observation, then continued to add data from other experiments until the combined result was 5.1σ. However, right at the end, he added in some additional data which actually brought the significance down to 4.9σ... That's science - you can't ignore data just because it ruins your big presentation.

IANAPhysicist, but I'd be interested to know how strict the 5-sigma discovery rule is considered - for example, could they still get a Nobel prize for a 4.9σ announcement? I suppose it's not that big a deal - the LHC is still running, and I'm sure they'll have enough data for a true 5σ announcement soon. Regardless, hats off to all involved, it must be exciting to be at the forefront of human knowledge :)

<comment><USER4> Atlas is still presenting. So let's wait and see what they came up with. 4.9σ was just from CMS.

Edit: It is worth noting that 125GeV fits well within Fermilab's recent announcement: [http://news.discovery.com/space/tevatron-data-detects- higgs-...](http://news.discovery.com/space/tevatron-data-detects-higgs-boson- existence-120703.html)

<comment><USER3> I think these physicists have been watching too many Steve Jobs presentations. "4.9σ... Oh, but one more thing!" ;)

In all seriousness, does anyone know how common it is to do this kind of gradual reveal during scientific presentations vs. stating your basic final results in the introduction? It's kind of fun, but you could cut the tension in that room with a knife!

<comment><USER4> The way they handled it was perfect. For over 20 minutes each, the presenters for CMS and Atlas explained their measurement capabilities, methods, recent improvements, and recorded measurements before stating their conclusion. They made sure to cover their bases and justify the conclusion before making a big announcement. I'm pretty sure the abstract for the papers will state the conclusion early on but the initial announcement for the greatest achievement in Particle Physics shouldn't be prefaced with "We found it!" just for the convenience of the impatient.

</comment></comment></comment></comment><comment><USER5> I've given up. Considering how this is supposed to be a big announcement which is probably important for a number of reasons that may affect a lot of people. I am surprised he didn't start with:

"I know a lot of people are tuning in without degree's in Physic's. Let me break it down for you in Leymens terms. We are fairly certain we have discovered this. It is important because of that. Now let me get onto why we think this."

I get that this talk is not meant for me. However, it is important - apparently. Its on the front page of Guardian.

If this is an announcement of great importance and it is 98% mumbo jumbo aimed at high end Physicists or whatever then.. I don't know. Its another chance to get people interested in science that has been missed.

Note: I am not saying the whole talk should be dumbed down. I am just saying a 2-3 minute prefix for those who do not understand a single word for the first 20 minutes of the presentation.

<comment><USER6> The ATLAS lady has what I think must be the _worst_ set of powerpoint slides I've ever seen. Epically bad. Pretty amazing.

Even if you are working at CERN running the equipment, there's no way you could absorb all the info on each of those slides in the 10 to 15 seconds she shows them. They might as well have pictures of frolicking kittens on them.

<comment><USER7> Bullshit. She has plenty of informative graphs and useful numbers.

The worst powerpoint presentations are ones that are content-free - this one could be accused of too much content.

<comment><USER8> I suspect the slides will be given to people afterwards. In this respect, they're not that bad.

</comment></comment></comment></comment><comment><USER9> Final (CMS) summary: We have observed a new boson with a mass of 125.3 +/- 0.6 GeV at 4.9σ significance!

Atlas comes in at ~126.5 GeV with 5.0σ. That would be a confirmed discovery!

Interesting that Atlas' mass is outside CMS's confidence range, though Atlas didn't have a range on theirs.

<comment><USER10> Hawking owes Kane $100!

<comment><USER11> I wouldn't think Hawking would be betting on such a result.

<comment><USER10> In 2000, Hawking bet Gordon Kane $100 that the Higgs Boson would never be found.

<comment><USER12> In December 2000, Hawking bet Gordon Kane $100 that the Higgs Boson will be discovered _at the Fermilab Tevatron_.

Since the funding dried up for the Tevatron and the first hints for the discovery of the Higgs boson come from LHC we can conclude that Hawking won the bet and Kane will be the one paying up.

<comment><USER12> This just in: "Stephen Hawking on Higgs: 'Discovery has lost me $100'"

<http://www.bbc.co.uk/news/science-environment-18708626>

<comment><USER11> That look he gives at the end really makes me tear up. What a great sentiment.

</comment></comment></comment></comment></comment></comment></comment><comment><USER13> The world's most cutting edge scientific results presented with comic sans. :)

(edit: The current ATLAS talk, not the first one on the CMS data)

<comment><USER14> It's certainly an incredibly readable font, even with the webcast being somewhat blurry. A good choice.

<comment><USER13> Twitter is full of bashing. I don't think it matters. The presentation is already unfriendly to anyone not in the scientific community, so presentation isn't really that important.

However, as everyone else has said, it would have been lovely to have a layman's TL;DR. Perhaps that's the press conference at 11:00, and expecting it beforehand is arrogant.

</comment></comment></comment><comment><USER15> I love how we're using Hacker News here -- this is definitely not what it was designed for. What we're really doing is something like a live chat room while watching a common talk, but unlike chat rooms it can be threaded and points can be allocated. Also unlike a chat room, HN does not automatically update when we get new discussion messages, but that's a constraint of the technologies at the time it was built.

It might be very interesting to try to use comet-casting or websockets to revolutionize chat in precisely that way, realtime threaded discussions. So, in addition to all of the chat constraints you have the ability to dynamically mark certain chat messages as replying to other messages, and as the noise in the chat room gets higher you can filter yourself to just "I want to follow this discussion."

<comment><USER3> This is why Google Wave got me so excited - and why I was so disappointed when it was botched and silently killed. I think an app like Wave could be great for many things, including discussing a live event like this.

<comment><USER16> My thoughts precisely. The code is still out there though - just waiting for someone to pick up where Google left off. . . <http://incubator.apache.org/wave/about.html> My plan is to try to rewrite this as a sharepoint add in, so that all those companies who install sharepoint as their "solution to everything" get something good with it; that could help grow the user base / promote belief in the technology. Then it could be openned out into allowing people to connect to hosted public services, and eventually get back to Google's original vision. ps. In honour of the subject matter, perhaps we should be calling it Google Duality?

<comment><USER17> This guys have picked up where Google left off:<http://rizzoma.com/>

in fact, many of my Waves were transferred to it

<comment><USER16> Awesome - thanks for the link :)

</comment></comment></comment></comment></comment><comment><USER18> Really striking what a large percentage of the words are jargon. Sometimes I understand less than 10% of the words in a sentence. I think I might now better understand how a non-programmer feels when seeing a talk related to programming.

<comment><USER19> That's true for almost every field of academic research and work; around 70-80% of the words are not in any dictionary (or, if they are, their standard definition has nothing to do with their professional meaning).

<comment><USER20> What always interested me is how the ratio of new words to repurposed words varies per field.

For example, in CS we use a whole bunch of words like "string", "thread", "class", "type", "object", "arrow", "map" and "macro" to denote CS-specific concepts related at best tangentially to the words' original meanings. On the other hand, biology seems to prefer to come up with new words for their technical terminology.

I wonder if this is a product of different cultures or something like that.

<comment><USER21> The worst is botany. Botanists use common culinary words to describe almost entirely non-overlapping sets of plants/fruit etc. The "Tomato a fruit?" question is nothing compared to the "berry" thing. According to the botanical definition cherries, raspberries, strawberries, boysenberries and blackberries are not berries, but bananas, watermelon, avocado and pumpkin _are_.

Nuts are worse. According botanists, peanuts, cashews, macadamias, pistachios, walnuts, almonds, pecans, pine-nuts and Brazil nuts are not nuts. According to most lay-people, though, botanists are nuts.

</comment></comment></comment></comment><comment><USER22> That's Joe Incandela speaking, he taught me graduate quantum physics at UCSB. I feel awesome now :-P

<comment><USER23> gaucho here too! :) Edit: Had David Stuart, (Cern -Compact Muon Solenoid (CMS))

<comment><USER11> UCSB Physics Alum checking in.

</comment></comment></comment><comment><USER24> I am having a lot of fun watching this, although I don't understand a single word of what he is saying :D

</comment><comment><USER25> Pedant here.

Can people please stop posting intervals in headlines i.e. "20 minutes!"

It expired a long time ago and was probably too late by the time the first people read it.

Please use at 12:00 UTC or something (a time).

</comment><comment><USER26> Why is the speaker in such a rush? He seems to be under a constant time- crunch. He keeps saying he's going to go over time and that he'll speed up.

Didn't he practice this before? Can't he just tell us what he wants to tell us, and skip over the rest?

<comment><USER27> If you're going to make an announcement that is going to be held up to the highest rigorous standards, figuring out exactly what to say is going to be a difficult issue. This presentation isn't for you, this is for the physics community.

<comment><USER26> Right now, he's presenting general stuff that everyone in the room already knows, including him. It's just a summary of the status of the project up to now.

He could have practiced this 6 months ago.

Aaaand... at this very second he's starting on the new stuff, I think.

</comment></comment></comment><comment><USER11> So I see a lot of people are frustrated about the impenetrable physics "jargon".

I'm not exactly sure how you'd expect some sort of tldr; of potentially one of the most important scientific announcements of the last 100 years.

<comment><USER28> Probably because the guy's presentation style is terrible, rushed, and his slides are a graphical disaster. He jumps from overload to overload, connecting with "obviously" and "as you can see". There is no overview, nothing connecting the endless series of slides. Everyone in the room is just waiting for the Higgs announcement.

I gather that they wanted to include last minute data, but given that they're livestreaming this and tons of people are watching, it was a huge chance to get a decent presentation done that would at least highlight the important results clearly rather than having them be throwaway lines between jargon.

</comment></comment><comment><USER29> The ATLAS presentation is set in Comic Sans. Monumental.

</comment><comment><USER30> The Monte Carlo method: <https://en.wikipedia.org/wiki/Monte_Carlo_method>

</comment><comment><USER31> "We have observed a new boson at 125.3 +/- 0.6 GeV at 4.9 signa significance"

</comment><comment><USER32> CMS is at 4.9 sigma. Soooooooo close.

<comment><USER18> 5 sigma is kind of arbitrary, isn't it? Just a nice "round" number. Obviously better than 4.9, but the line is fuzzy, if it even exists.

<comment><USER32> Correct. What really counts is independent verification, all at high sigmas: Tevatron, CMS, Atlas.

</comment></comment></comment><comment><USER33> This is basically lecturer giving lecture to lecturers. Pretty amazing.

</comment><comment><USER4> Peter Higgs just teared up. This is amazing.

<comment><USER34> I heard once that when Peter Higgs tears up, each teardrop is 126.5 GeV.

And now it has been confirmed to 5 sigma. :)

</comment></comment><comment><USER35> Is that comic sans?

<comment><USER36> Nothing says High Energy Physics like Comic Sans.

<comment><USER34> Designers vs physicists:

Designer sits in coffee shop wearing his hipster outfit drinking his hipster coffee, writing incensed blog post about the outrages of Comic Sans.

Physicist makes presentation on what is clearly a state-of-the-art advancement in the progress of high-energy particle physics (and thus, physics) to a world-wide community, live, and NOT a fuck was given as to what font is used. :P

Much respect to the latter folks.

<comment><USER37> Thank you! It seems very few people understand the immense pressure and intense atmosphere that surrounds work like this, especially in culminating times like these.

Fabiola would likely rather spend her time improving the quality of her analysis, which is undeniably more valuable to the scientific community than agonizing over the font.

</comment></comment></comment></comment><comment><USER6> Sean Carroll is liveblogging from the room and has some actual interpretation of what's being said: [http://blogs.discovermagazine.com/cosmicvariance/2012/07/03/...](http://blogs.discovermagazine.com/cosmicvariance/2012/07/03/live- blogging-the-higgs-seminar/)

</comment><comment><USER38> I'm in a place with single-bar wifi signal and the livestream is really choppy.

Does anyone have something like a buffered stream on a delay so I can be sure I don't miss anything, even if I have to stop to buffer more of the stream?

I have a vanilla, chrome browser, and a fairly recent VLC.

<comment><USER39> Try the RTMP stream: rtmp://cern.fc.llnwd.net/cern/cern1_900

If that's choppy, save it to disk with rtmpdump: rtmpdump -v -o cern1_900.flv -r rtmp://cern.fc.llnwd.net/cern/cern1_900

edit: alternate bitrates (thanks to Brajeshwar): cern1_900 cern1_600 cern1_300

</comment></comment><comment><USER40> Nothing to do with the science, but it looks suspiciously like they are using Squeak to produce their slides. Maybe they are using it in some capacity to collate data?

</comment><comment><USER41> Mr. Higgs just walked in.

<comment><USER42> Sorry, noob, who is this?

<comment><USER43> <http://en.wikipedia.org/wiki/Peter_Higgs>

</comment></comment></comment><comment><USER6> The magic number for CMS is 4.1 sigma. That was combined across all channels I think?

<comment><USER44> At the point you made the comment, the full number has not yet been shown. That's only the combined number for Higgs to gamma-gamma for 2011 and 2012 (so far).

<comment><USER6> Sorry about that. He _just_ said 5 sigma for the combined signals (I think? maybe I misunderstood again.)

Nobel prizes all round!

<comment><USER45> Can someone please explain what 5 sigma signifies?

Edit: "Evidence" usually means a 3-sigma signal, which existed last December, "Proof" would be a better way to describe a 5+ sigma signal, if that's what the combined CMS/ATLAS data shows - <http://www.math.columbia.edu/~woit/wordpress/?p=4809>

<comment><USER46> 99.999% confidence.

<comment><USER47> Actually, it's 99.99994% confidence (1 in 1.7 million chance of error).

</comment></comment></comment></comment></comment></comment><comment><USER48> TL;DR: New boson discovered!

</comment><comment><USER49> What they actually established except for mass and the fact that it's previously undetected particle?

Do they know that it's a boson not ferminon? Do they know that's elementary particle?

</comment><comment><USER50> Just announced 5 sigma.

</comment><comment><USER51> Sorry if this sounds ignorant, but were they doing some sort of regression analysis over large data sets?

</comment><comment><USER52> CERN: Makes you feel stupid since 1954

</comment><comment><USER53> Meta, but come on, "in 20 Mins"? The headline was wrong seconds after it was posted...

</comment><comment><USER54> OK, when can I order my bottle of Higgs bosons? ;-P

</comment><comment><USER55> Why is potentially the worlds finest discovery of the 21st century being communicated using the worst software to be cobbled together in the 20th? (Aka Flash)

<comment><USER56> It works. Flash Player is the only browser plugin yet that can do an actual streaming (not progressive download) using either Adobe's own Media Server or other similar Open Source at the back-end. If need be, that is the best form of protection against content theft so far.

It is not that difficult to setup the whole streaming with lots of free and open source solutions available today. It's just a good means to a useful end.

 _EDITS:_

Just as I suspected, it's using a Media Server Streaming Server. "rtmp://cern.fc.llnwd.net/cern/"

It is also automatically streaming corresponding quality depending on the user's bandwidth.

      { bitrate: '1000', width: '640', file: 'cern1_900' },
      { bitrate: '700', width: '640', file: 'cern1_600' },
      { bitrate: '400', width: '640', file: 'cern1_300' },

So far, I haven't found a decent way to do that in HTML5 without having to encode multiple video-streams for multiple bitrates.

<comment><USER55> _It works_

Unfortunately I was unable to listen in due to being on a mobile device....

</comment></comment></comment><comment><USER57> Anyone else getting no sound?

edit: Sound is working now!

<comment><USER42> They muting until it starts. ;)

<comment><USER58> you're right, I have sound now, thanks!=)

</comment></comment></comment><comment><USER59> The 404 page looks great.

</comment><comment><USER60> Cool - they just showed a quick shot of Peter Higgs in the audience - <USER2> looked a bit emotional

</comment><comment><USER34> TL;DR: "I think we have it."

</comment><comment><USER61> This guy is excited to get to the conclusion of the talk.

</comment><comment><USER62> Comic sans!

</comment><comment><USER63> They desperately need a designer. The color scheme,use of comic sans and broken composition make my eyes bleed.

<comment><USER11> They could care less about the presentation; these guys are all about content.

<comment><USER64> I am under the impression, that what you think is not entirely true:

"How should we make it attractive for them [young people] to spend 5,6,7 years in our field, be satisfied, learn about excitement, but finally be qualified to find other possibilities?" -- H. Schopper

Perhaps an answer to the naive question:

<http://cdsweb.cern.ch/record/1127343?ln=en>

[https://secure.wikimedia.org/wikipedia/en/wiki/Spin_(public_...](https://secure.wikimedia.org/wikipedia/en/wiki/Spin_\(public_relations\)#Techniques)

<comment><USER11> Ok, so how does that contradict my point about content over presentation?

</comment></comment></comment></comment><comment><USER64> The work at CERN is differentiated when it is performed by westerners or by people from the East:

"The cost [...] has been evaluated, taking into account realistic labor prices in different countries. The total cost is X (with a western equivalent value of Y)" [where Y>X]

source: LHCb calorimeters : Technical Design Report

ISBN: 9290831693 <http://cdsweb.cern.ch/record/494264>

Western discrimination is firmly in place there.

<comment><USER65> Really, I think this might take the cake as the _worst_ comment I've ever read on Hacker News.

<comment><USER6> He cited a source, so I don't think it can take that particular cake.

<comment><USER51> Except he is misusing a source to come to an absurd conclusion!

<comment><USER65> In an attempt (presumably, I can't really know) to distract from a truly historic scientific achievement. Don't forget that part.

<comment><USER64> No attempts, just plain facts: a reminder of those, who took their fair share in contributing to such a scientific achievement but were discriminated negatively compared to their "western equivalents" only for being born in a non-western country.

The cited document (did all the downvoters also take their time and actually read the TDRs and papers in detail??? Or are they just ignorant sheep?) is a rare case of putting the facts on the ground down in a written and approved document, despite being taboo in an organisation touting "equal opportunities" and such policies.

No downvotes will change the situation I warn about above, quite to the contrary: may my previous comment serve as a warning to all non-westerners at CERN for the time being.</comment></comment></comment></comment></comment></comment>


Ask HN: Why are developers paid so much more than system administrators? - <AUTHOR> I understand these are two different skill sets, but often you will find such people working in the same environment which is something I can observe for myself and the question begs itself: why are developers paid "so much" more than sys admins?
System administrators (or System engineers, titles have no meaning these days) have to make sure the entire infrastructure and all platforms are operational at all times and fix any unexpected problems on the spot. You need not just know how to restart Apache but know how to configure it, tune it, debug it and upgrade it without causing any downtime or as little as possible and that goes for databases, mail, storage, networking and not only superficially; you need to know these technologies inside out!
There is shift work, unpaid overtime, constant off-hours maintenance and the everyday stress of making sure everything is up and running and if it's not then "you need to fix it right now or fired". None of that concerns them (developers). The vastness of skills required is much larger than that of a developer so as I observe them not having to do half the stuff I have to do while getting paid 30-40% more on average (my observations in my company and by looking at jobs online) I can't help but ask why? Is their value really so much higher? I want to know what other people think about this. <comment><USER2> My general feeling is that front end developers are paid less than DevOps (which is what we call sysadmins these days, after all the 'pasting stuff from a Word doc into Solaris' people became managers at banks and the people who could actually automate shit took over). DevOps and back end engineers are paid about the same.

Frontend: 300-400ish GBP/day in London

Backend / DevOps: 600 GBP/day in London

Weird thing is, when I did backend the first time round, I had no idea of event loops and async (asides frm some theoretical knowledge since nginx uses them). I found frontend FAR more complex as a result.</comment>


Google Further Crapifies Search, Exploiting Both Users and Advertisers - <AUTHOR> http://www.nakedcapitalism.com/2014/12/google-further-crapifies-search-exploiting-both-users-and-advertisers.html

<comment><USER2> Google is going downhill for the past few years. Maybe a lack of focus on products that made them what they are? But exploiting both users and advertisers is not a new phenomenon for them. After all, everyone using Google knows this and accepts it. The main problem is that it is starting to affect their products significantly.

</comment><comment><USER3> [https://prism-break.org/en/all/](https://prism-break.org/en/all/)</comment>


MolyJam international Game Jam this weekend - <AUTHOR> http://www.whatwouldmolydeux.com/

<comment><AUTHOR> There are now 30 cities participating in this game jam that's been organized over the past 2 weeks. If you're interested, there may still be space in your local event.</comment>


New ransomware strain coded entirely in JavaScript - <AUTHOR> http://www.bbc.com/news/technology-36575687 <comment><USER2> actual description of the ransomware: [http://www.bleepingcomputer.com/news/security/ransom32-is- th...](http://www.bleepingcomputer.com/news/security/ransom32-is-the-first- ransomware-written-in-javascript/)

I thought it was going to be activex based, but actually it uses NW.js, interesting.

edit: actually the new ransomware in the article is this one: [http://www.bleepingcomputer.com/news/security/the-new-raa- ra...](http://www.bleepingcomputer.com/news/security/the-new-raa-ransomware- is-created-entirely-using-javascript/)

which does use WScript/ActiveX in its code so its windows only.

<comment><USER3> the URL should be changed to this, it is much more informative for this audience.

</comment></comment><comment><USER4> Previous discussion: [https://news.ycombinator.com/item?id=11934717](https://news.ycombinator.com/item?id=11934717)

<comment><AUTHOR> Thanks, missed that one</comment></comment>


USB drives with no phantom load - <AUTHOR> http://joeyh.name/blog/entry/usb_drives_with_no_phantom_load/ <comment><USER2> I share the author's concerns for off grid power use. 3 watts per drive (I assume a wall wart for a 3.5" drive) works out to 72watt hours per day. About 1/10th of a $200 solar panel. Double or triple that to cover batteries and electronics. Then you run into discontinuities in system sizing where you can't easily add just one more panel. Conserving energy suddenly makes a lot of sense.

USB hubs with per port power control are the flying unicorn of hardware. Once in a while some vendor slips up and makes one, but by the time people figure it out the vendor has ended the model or replaced it with a different model under the same model number. It's especially frustrating because many of the USB hub chipsets support the feature, but only if the manufacturer puts a switching transistor on each port. It literally would only cost pennies per port to have the feature.

<comment><USER3> Yepkit [1] makes these! They have 3 port hubs for USB 2 and 3, as well as single port "hubs" \-- all controlled through a simple command-line interface or Python API. They also have other good stuff like USB controlled relay boards and upstream USB hubs to switch devices between hosts.

I've used their products in a variety of automation projects for clients and at home, and have only good things to say.

[1] [https://www.yepkit.com/](https://www.yepkit.com/)

<comment><USER4> Where were you two months ago when I desperately needed this for a project?! Thank you so much, this is awesome.

</comment></comment></comment><comment><USER5> Tangentially, I'm curious on how OP monitors health of USB drives.

Getting SMART data from USB drives has been a pain on linux as the kernel rejects SAT ATA pass-through commands & so doesn't work with smartmontools[1].

I have tested across different USB 3.0 drives such as Seagate Backup Plus, MYDIGITALSSD|OTG, SAMSUNG Portable SSD T5 all of which use 'uas' driver under linux & if used with USB 3.0 hub like Tplink USB 3.0 port hub; it bridges using 'hub/4p' driver.

After trying out several other methods in vain, the only tool which I found to be helpful in checking for USB drive health on linux is discscan[2]; which tests for unreadable sectors & latency without using SMART values.

[1]: [https://www.smartmontools.org/wiki/USB](https://www.smartmontools.org/wiki/USB)

[2]: [https://github.com/baruch/diskscan](https://github.com/baruch/diskscan)

<comment><USER6> I have never any issues with USB HDDs with smartctl.

In the rare cases where autodetection did not work, smartctl -d <type> with trial and error works.

<comment><USER5> I see, I forgot to mention - d scsi gives only basic manufacturer info and tests fail.

Does your drive work in uas mode?

</comment></comment></comment><comment><USER7> 3 W per drive when shut down seems like huge amount. For reference, Raspberry Pi 3B+ consumes about 2 W when idle, and 2B 2.5 W under load.

[https://www.pidramble.com/wiki/benchmarks/power- consumption](https://www.pidramble.com/wiki/benchmarks/power-consumption)

</comment><comment><USER8> It's cool but I don't know if I would want additional latency (especially in the case where they are currently going to sleep) plus possibility of turning them off at the wrong moment to save $0.2 per month.

<comment><USER9> Why do you think this is about cost? The article says _"I 've not had any network attached storage at home, because it's offgrid"_, so I think it's about preventing the house from powering down.

<comment><USER10> I can't find a concise page to link, but he has a house that's off-the-grid, using solar panels and batteries. So he pays attention to power consumption.

<comment><USER11> Link this page. [https://lwn.net/Articles/672352/](https://lwn.net/Articles/672352/)

<comment><USER12> Thank you! The following quote resonates heavily with my mind:

> I'm fairly addicted to that point in development of a project where it's all > about exploring a vast solution space, and making countless little choices > that will hopefully add up to something coherent and well thought out and > useful. Or might fail gloriously.</comment></comment></comment></comment></comment>


Ask HN: Why managers make so much money? - <AUTHOR> Is there anything I could do to lower they salary? <comment><USER2> A good manager does more than just squash squabbles amongst developers he or she helps to convey business requirements to development, inspire the team, and meet other non-dev-y needs in the hope that a good manager helps the team accomplish more than it could without said manager, hence the salary. Or that's how I've always justified their salaries. There's also the experience that they often bring to the table that usually warrants a higher wage.

</comment><comment><USER3> Management is difficult and effective managers are rare. Really good ones can burn out quickly. Employees don't always appreciate how stressful the responsibility, long hours, and drudgery can be. My $0.02.

<comment><AUTHOR> > effective managers are rare.

Exactly. Why the others are paid though?</comment></comment>


What if you lost your computer just now? - <AUTHOR> https://ambrevar.xyz/reproducible-computing-environments/index.html <comment><USER2> encryption, back up and storage definitely needs to be made easier for the average computer user, and that doesn't just mean a single folder that syncs to some google or apple cloud!</comment>


A dumb reason computer vision apps aren't working: Exif Orientation - <AUTHOR> https://medium.com/@ageitgey/the-dumb-reason-your-fancy-computer-vision-app-isnt-working-exif-orientation-73166c7d39da <comment><USER2> Getting image and video orientation correct, which should be trivial, is decidedly not. In writing PhotoStructure [1], I discovered

1) Firefox respects the Orientation tag using a standard [2] CSS tag, but Chrome doesn't [3]

2) That videos sometimes use "Rotation", not "Orientation" (and Rotation is encoded in degrees, not the crazy EXIF rotation enum). Oh, and some manufacturers use "CameraOrientation" instead, just for the LOLs [4]

3) That the embedded images in JPEGs, RAW, and videos _sometimes_ are rotated correctly, and sometimes they are not, depending on the Make and Model of the camera that produced the file. If Orientation or Rotation say anything other than "not rotated," you can't trust what's in that bag of bits.

[1] [https://blog.photostructure.com/introducing- photostructure/](https://blog.photostructure.com/introducing-photostructure/)

[2] [https://www.w3.org/TR/css-images-4/#image- notation](https://www.w3.org/TR/css-images-4/#image-notation)

[3] [https://bugs.chromium.org/p/chromium/issues/detail?id=158753](https://bugs.chromium.org/p/chromium/issues/detail?id=158753)

[4] [https://exiftool- vendored.js.org/interfaces/makernotestags.h...](https://exiftool- vendored.js.org/interfaces/makernotestags.html#rotation) (caution, large page!)

<comment><USER3> They should just put a gravity vector in the image.

<comment><USER4> This would (maybe) help with a common thing my wife does when taking videos: Start recording in portrait mode, then realize you did that, and rotate the phone 90 degrees to get widescreen video (but without restarting the recording).

When you play it back on a phone (with auto-orientation mode on), starting from holding the phone in portrait mode (as you normally do):

* it starts playing back as portrait, which looks fine

* the video rotates (because the camera was physically rotated), so now you're watching a widescreen video that's 90 degrees off

* Your natural reaction is to flip the phone 90 degrees to make down "down" again, but this changes the phone into widescreen mode, and because it thinks it's playing a portrait-style video, it changes to portrait-in-widescreen mode, and now the video is again tilted 90 degrees but 1/3 the size with huge black bars on either side

If you play it back on a computer/TV, you get the same end result: a widescreen video that's rotated 90 degrees, and 1/3 the size with huge black bars on either side.

<comment><USER5> Can't help you with the video-taking technique but when playing back the videos, if you hold the phone so that the video matches the screen, then rotate it so the screen is upwards, you can then spin it so it looks the right way up as long as you keep the screen vertical enough.

</comment></comment></comment></comment><comment><USER6> One of my pet peeves in ML/stats/data science is people who hardly look at their data. Unless there are privacy reasons not to, then you really need to look at some data. You'll learn so much more from looking at a few hundred samples than you will from different metrics. You'll get a feel for how complex the problem is, or whether something simple will do. Check your assumptions. You might even realize that your images are sideways.

<comment><USER7> That's what my first numeric mentor taught me. You _have to look at raw data_. The first q he'd ask any programmer was "did you look at the data, the actual data?". He was a PhD in Physics and his approach really sticked with me.

But it's not always straightforward to "look at data"

<comment> barry-cotter Stuck. Everything else is perfect idiomatic English.

<comment><USER7> Thanks!!

</comment></comment></comment></comment><comment><USER8> I ran into this headache while writing a web app.

I made an image upload widget that provided a preview, and when users selected the "take a picture" option on their phones, I showed the preview with a blob link and CSS background-image property. The images were showing sideways on some phones.

I looked at the EXIF data of those photos and of course Orientation: 90 showed up.

It was easy to fix on the backend when processing the images but I struggled to do it in a performant way on the front-end. One solution involved reading the EXIF data with JS and rotating with canvas and .toBlob(), but proved too slow for large 10MB photos as it blocks the main UI thread.

One thing I thought of is just reading the orientation and the using CSS transforms to rotate the preview, but I never got around to trying it.

<comment><USER9> Try web workers! I've been doing all kinds of crazy expensive spatial data validation in many parallel threads. It's amazing. I think off screen canvas in workers is gaining browser support recently.

<comment><USER10> > _Try web workers!_

NO, please do not try web workers. I don't want any _more_ running on my device than absolutely necessary.

<comment><USER11> You don't want to use all your cores to run things faster?

<comment><USER10> Nope. I want things to look plain and simple. I want to use fewer cores for longer battery life.

<comment><USER11> The faster a CPU finishes, the faster the CPU can sleep, which is how you save battery life. The more cores you use the lower the CPU frequency can be, which saves power, since frequency increases do not use power linearly.

I think it goes without saying that javascript workers have nothing to do with the design and layout of a webpage.

<comment><USER10> > _The faster a CPU finishes, the faster the CPU can sleep, which is how you > save battery life._

Yup.

> _The more cores you use the lower the CPU frequency can be, which saves > power, since frequency increases do not use power linearly._

More cores in use has little to do with frequency and more to do with heat. More heat means more thermal throttling which lowers frequency. Lower frequency means that the CPU _doesn 't_ sleep sooner.

> _I think it goes without saying that javascript workers have nothing to do > with the design and layout of a webpage._

Yup. That's exactly why I don't want them. Why should I execute something which doesn't, and shouldn't, have anything to do with rendering page content?

Don't get me wrong, I'm _fine_ with using more cores if it's actually beneficial. But every use I've ever seen for a web/service/javascript worker has _always_ been user hostile by taking what should be done on a server and offloading it onto the user's device instead.

<comment><USER11> Using all your cores for the same workload would mean it finishes faster or finishes in the same time with significantly lower frequency. It saves power and heat. Your example would mean using more cores for the same amount of time, which makes no sense in this comparison.

Do you also buy single core computers to save power?

It is clear that what you are saying has nothing to do with javascript features at all and just boils down to not liking bloated web pages.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER12> ImageMagick will "apply" the exif rotation to the image data for you.

        convert input -auto-orient output

Or in place:

        mogrify -auto-orient *

</comment><comment><USER13> Even outside of machine vision this issue has caused me all sorts of headaches. Especially when switching between tools that honor or ignore the tag.

 _" But the tricky part is that your camera doesn't actually rotate the image data inside the file that it saves to disk."_

Cameraphones are so powerful these days. I don't understand why the app can't simply include a behavior setting to always flip the original pixels.

<comment><USER14> It might not be up to the app? If the phone has hardware-accelerated JPEG compression, then potentially the image will already be compressed in the 'wrong' orientation before the app gets its hands on it. So rotating the image data could involve re-compressing the image again, leading to quality loss. Or if you choose to get the raw sensor data instead, and rotate the data before doing the compression yourself, you might lose out on the hw acceleration entirely.

(I've not developed any camera apps, so this is just a guess!)

<comment><USER15> > So rotating the image data could involve re-compressing the image again, > leading to quality loss.

With JPEG, no, 90 degree rotations can be accomplished in a lossless manner.

See jpegtran from the libjpeg library. A version of its manpage is here:

[https://linux.die.net/man/1/jpegtran](https://linux.die.net/man/1/jpegtran)

Quoting:

"... It can also perform some rearrangements of the image data, for example turning an image from landscape to portrait format by rotation.

jpegtran works by rearranging the compressed data (DCT coefficients), without ever fully decoding the image. Therefore, its transformations are lossless: there is no image degradation at all, which would not be true if you used djpeg followed by cjpeg to accomplish the same conversion. ..."

</comment></comment></comment><comment><USER16> I'm not sure how good your algorithm is if it can only work in a specific orientation. A slightly tilted image can already cause problems for such an algorithm and many people have a hard time getting a picture with only a few degrees of rotation.

It would probably be better to deal with this in an elegant way, e.g. set up the algorithm to work regardless of orientation. This seems like a (mostly) solved problem: [https://d4nst.github.io/2017/01/12/image- orientation/](https://d4nst.github.io/2017/01/12/image-orientation/)

<comment><USER17> That's not an option if you're trying to detect left-arrows vs right-arrows, on street signs for ex.

<comment><USER16> Depends. Based on the linked article, the picture can be completely upside down if it was taken in landscape mode. The article I linked is capable of rotating it upright regardless. After rotating to the right orientation, left and right are suddenly perfectly workable.

Of course using exif data for such rotations is easier, but a tilted picture of a tilted sign can create a lot of tilt that human vision copes with fine but an orientation dependent network cannot.

</comment></comment></comment><comment><USER18> If the algoritm fails with a rotated image, then I would claim its a bad algorithm that is over-fit and not at all generalising what it has learnt. What about slight rotation? Where does it start failing, and would a human?

Also, making an algorithm for detecting rotated images should be easy if it affect the results so much.

<comment><USER19> Yea, there's some truth to that, but then we wouldn't get these gems:

Is it a duck or is it a rabbit?

[https://www.reddit.com/r/dataisbeautiful/comments/aydqig/is_...](https://www.reddit.com/r/dataisbeautiful/comments/aydqig/is_it_a_duck_or_a_rabbit_for_google_cloud_vision/)

</comment></comment><comment><USER20> Topic of image orientation always reminds me about this article: [https://www.daveperrett.com/articles/2012/07/28/exif- orienta...](https://www.daveperrett.com/articles/2012/07/28/exif-orientation- handling-is-a-ghetto/)

</comment><comment><USER21> One of the common image processing libraries _does_ take into account EXIF rotation: OpenCV [1] I would tend to use that over manually rotating using the code from the article. Although beware that OpenCV cannot open quite as many formats as Pillow, most notably it cannot open GIFs due to patent issues. You can get a prebuilt wheel of OpenCV by pip installing the package opencv-python [2]

[1] [https://docs.opencv.org/trunk/d4/da8/group__imgcodecs.html#g...](https://docs.opencv.org/trunk/d4/da8/group__imgcodecs.html#ga288b8b3da0892bd651fce07b3bbd3a56)

[2] [https://pypi.org/project/opencv-python/](https://pypi.org/project/opencv- python/)

</comment><comment> mark-r There's a big photography site I use that treats the EXIF inconsistently. I rotate the image in my editor to work on it, then save and upload. In some contexts it looks OK, but in other contexts the site rotates the image again and it's wrong. I don't want to strip the EXIF because it has interesting information such as the camera model and lens, and the exposure settings. My editor doesn't correct the EXIF rotation setting, so I have no choice but to use a utility to strip that single value from the file before I upload it.

</comment><comment><USER22> CNNs are translation and scale invariant thanks mostly to the pooling operation. Good data augmentation (rotating images for example) would have build a model more robust to this effect.

</comment><comment><USER23> This is functionally a coordinate system problem. Thankfully, it's pretty easy here. Just wait until we start getting more models for 3D data. I worked with 3D data for the longest time, and it was incredibly painful — different libraries can use wildly different coordinate systems (e.g. I've seen the up- direction be +z, -z, +y, and -y). At that point, it's nontrivially difficult to even figure out what the right way to convert between coordinate systems is.

</comment><comment><USER24> Train a model that recognizes L,R, or U side way images to reorient them all. Run it once.

</comment><comment><USER25> Some websites also strip EXIF data from user submitted content but do not rotate the image to match the now-missing information about which side is up.

</comment><comment><USER26> Why don't you train your classifiers to be orientation-agnostic? My brain certainly had no problem recognizing the geese on the sideways image...

<comment><USER6> Why make it harder than it has to be?

<comment><USER27> I'd say you're not making the problem "harder" \- rather, requiring that object detection be orietation-agnostic makes the problem exactly as hard as the problem actually is. Allowing the network to train only on images with a known, fixed, (correct) orientation makes the object detection too _easy_, so the network results will likely fail if you feed it any real-world data.

i.e. you should be training your image application with skew/stretch/shrink/rotation/color-pallete-shift/contrast-adjust/noise- addition/etc. applied to all training images if you want it to be useful for anything other than getting a high top-N score on the validation set.

</comment></comment></comment><comment><USER28> Bonus round:

(1) Find the ImageNet (ILSVRC2012) images possessing EXIF orientation metadata.

(2) Of those images, find which ones have the "correct" EXIF orientation.

<comment><USER29> Has anyone done this yet? I'd be curious to know if their dataset is "cleaned" or not.

<comment><USER28> Spoiler, ish:

The last time I measured ImageNet JPEGs with EXIF orientation metadata, the number of affected images was actually quite small (< 100, out of a dataset of 1.28M). There are also some duplicates, but altogether it seems fairly "clean."

</comment></comment></comment><comment><USER30> When I built a consumer site that processed tons of photos I ran into this all the time. Ended up doing it all myself by parsing the exif data and doing the rotation. Also ended up writing some pretty extensive resize code that worked much better than what was built-in and more like the great scaling effects you see in Preview.app.

<comment><USER31> It always bothers me that many libraries still use nearest-neighbor to resize images instead of some kind of Lanczos filtering.

</comment></comment><comment><USER32> Hi Adam, if you read this, you have a small mistake.

Your quote: "This tells the image viewer program that the image needs to be rotated 90 degrees counter-clockwise before being displayed on screen"

should be:

"This tells the image viewer program that the image needs to be rotated 90 degrees clockwise before being displayed on screen". Cheers.

<comment><AUTHOR> Thanks!

</comment></comment><comment><USER33> >Most Python libraries for working with image data like numpy, scipy, TensorFlow, Keras, etc, think of themselves as scientific tools for serious people who work with generic arrays of data. They don't concern themselves with consumer-level problems like automatic image rotation — even though basically every image in the world captured with a modern camera needs it.

What a snotty attitude. The tools are already complex enough to take on responsibilities of parsing the plethora of ways a JPEG can be "rotated". This thread is a testament to the non-triviality of the issue and I certainly don't want a matrix manipulation or machine learning library to bloat up and have opinions on how to load JPEGs just so someone careless out there can save a couple lines.

</comment><comment><USER34> If your computer vision application can't even recognize which way up a picture like the ones in the article is then surely you have bigger problems then EXIF orientation.

As others have said: what about pictures that are simply not aligned with the horizon?

<comment><USER35> All the top architectures are not rotation-invariant. I think some of the blame lies in how successful CNNs are (as Hinton claims).

</comment></comment><comment><USER36> I ran into this issue while developing [https://www.faceshapeapp.com](https://www.faceshapeapp.com) where user uploads their photo and face detector is run on top of the picture. Shortly after launching about 10% of users complained having rotated images, after some debugging, I discovered that it was due to exif rotation.

You could parse the exif and rotate the image using canvas, but thankfully, there's already a JS library which does it for you: [https://github.com/blueimp/JavaScript-Load- Image](https://github.com/blueimp/JavaScript-Load-Image).

</comment><comment><USER37> Would it really be too much of a burden for phones to just save photos at the correct orientation now? I understand the hardware limitations that were present in 2007, but surely these can't still be a factor?

<comment><USER38> Is there any good reason to save a photo in an orientation that does not match the orientation that the device is being held in? Shouldn't up be up? If that results in a NxM photo, save it NxM. If it results in a MxN photo save it that way!

The only edge case is a camera pointed straight up or straight down. Or a camera in space.

<comment><USER39> Correct orientation is relative to the photographer, not to the ground. Most of the times the photographer is in the usual, vertical orientation but sometimes you really want to take a shot at an angle, and you have to fight with your phone to do it correctly. I really dislike these kinds of "convenience" optimizations.

<comment><USER40> Coming back to ancient software design principles:

> _The user is always right_

Let them have a setting. It's really that easy.

</comment></comment></comment></comment><comment><USER41> Isn't it better to train the model that way though? In fact it might be good to load every image in different orientations to add to the training data.

</comment><comment><USER42> Only goes to show how far we have to go still when computers don't even tilt their heads automatically when given rotated input.

</comment><comment><USER43> Well, if you are using the input Image as JPEG. The information is stored in a tag, you can remove it with any kind of language. There's also a C++ library for it: [https://github.com/mayanklahiri/easyexif](https://github.com/mayanklahiri/easyexif)

</comment><comment><USER44> I should add that this very problem also exists with video. What makes it worse is that "smartphone" video apps started regularly using video orientation metadata years before desktop video apps even seemed to acknowledge that it was a thing.

<comment><USER45> It's the simplest way to do it and has so few downsides that it's not going to change until someone invents a googly eye camera that rotates with the phone.

</comment></comment><comment><USER46> As an alternative to the python code in the article, there's this command-line tool: [https://linux.die.net/man/1/exiftran](https://linux.die.net/man/1/exiftran)

</comment><comment><USER47> I just could not stop laughing reading this. It does remind me, that my professor once showed us a slide of the coastline of africa, which none of us recognized until he rotated it to the correct orientation.

</comment><comment><USER48> Who thought Exif Orientation was a good idea? It's a needless complication of the file format. It's not like iPhones (or any camera) lacks the computing power to rotate the image before saving it.

<comment><USER49> Wikipedia says EXIF was released in 1995 ([https://en.wikipedia.org/wiki/Exif](https://en.wikipedia.org/wiki/Exif)). If you were shooting with a DSLR, say 6 Mega pixel with 8 bits per pixel, the raw output would be 18MB in size ([https://en.wikipedia.org/wiki/Kodak_DCS_400_series](https://en.wikipedia.org/wiki/Kodak_DCS_400_series)). In order to rotate this raw 6Mp image you would need 36MB of RAM (input and output buffers of the same size, non-overlapping). Then, after the rotation you could perform JPEG, so that the rotation is lossless. Finally, you could store the JPEG image to disk.

36MB of RAM just for raw image buffers would have been quite expensive in 1995. Simply tagging some extra data onto the image to say which orientation it should be presented in takes almost no extra memory or processing within the camera, some big desktop PC could easily rotate the uncompressed JPEG to perform a "lossless" rotation after the fact (ie: uncompress JPEG in wrong orientation, rotate, present to user).

<comment><USER49> Technically, you wouldn't need a full 18MB for the output buffer so long as you perform the JPEG in-line with the rotation and are willing to deal with slicing the image into swaths. So in theory you could get away with like a 1MB output buffer but then your rotation time would depend on your JPEG timing and you couldn't take another picture with the main raw buffer until rotation and JPEG were both complete. It's a tradeoff, time versus memory.

</comment></comment></comment><comment><USER50> [https://docs.fast.ai/vision.transform.html](https://docs.fast.ai/vision.transform.html)

</comment><comment><USER51> Maybe the first step before doing image classification or object detection images is to do a image rotation detector ;)

</comment><comment><USER52> Sure, that would reduce the problem space by one, but that ain't the reason CV doesn't work.

</comment><comment><USER53> some of the object detection ai systems do actually rotate the images in 4 to 8 ways like in fast.ai. when trained with such input data, the ai detects the object in almost all orientations.

</comment><comment><USER54> Sounds like the training sets should include more rotated samples.

</comment><comment><USER55> that or train models to be rotationally invariant.

</comment><comment><USER56> Surely someone can create a neural network that reorients the image, even if the Exif orientation is wrong (JPEG lets you can do this without re-encoding). Sounds like it should be a very simple problem for the vast majority of "regular" images.

<comment><USER57> Or how about just use the damn exif information to orient it correctly as the article outlines? The actual article is far less interesting than what the title seems to imply. While the title suggests a problem with computer vision. This is more of a programmer logic error.

<comment><USER58> There are many times my phone detects I'm holding it horizontally while taking a picture, but I'm actually trying to take a vertical picture, and vice versa.

For those images, the exif information is technically correct, but actually wrong.

</comment></comment></comment><comment><USER57> Also known as "programmer error".

<comment><USER59> What value do you think this comment contributed? The entire article clearly describes it as a commonly mistake and is trying to raise awareness so people stop repeating it.

<comment><USER57> I think it contributed the warning that the title is clickbait. Its very clear based on the discussion in the thread that people who've just read the title are discussion computer vision and machine learning strategies to solve this problem when the article describes an almost elementary programming issue.

</comment></comment></comment><comment><USER60> Nonsense. Image recognition engines are very capable of detection in even at the most extreme angles. Sure it won't rotate the image for you but it will certainly tell you there is a goose in it. What tricks image recognition technology more then anything is lighting.

<comment><USER60> Let me clarify and say googles IR engine is capable. I actually ran the first set of tests developed around image recognition technology. I worked at Neven Vision which got acquired by google in 2006.

</comment></comment><comment><USER61> This article is all wrong.

At the core, there is something that is converting this jpeg or misc encoded data into raw encoded data, and this process MUST account for the orientation.

Either the app is reading the image, converting it before passing it to the CV/ML/AI library, and this conversion step _needs_ to respect this tag, and either transfer the tag or apply it to the transformed object; OR, the CV/ML/AI library is getting in encoded image data, and it needs to check for this tag.

Those are the two options, either the CV/ML/AI library sees the tag, and should consider it, or it doesn't, and the library that is stripping it away shouldn't be doing that

<comment><USER62> This article helps people use the libraries they have, and it does so correctly. If you want to fix the libraries, submit a PR, don't complain about this article.</comment></comment>


Price Manipulation in the Bitcoin Ecosystem - <AUTHOR> http://www.sciencedirect.com/science/article/pii/S0304393217301666 <comment><AUTHOR> Quote: A single actor likely drove the USD/BTC exchange rate from $150 to $1000 in 2 months.</comment>


Haskell in the Large [pdf] - <AUTHOR> http://code.haskell.org/~dons/talks/dons-google-2015-01-27.pdf <comment><USER2> _"Make illegal states unrepresentable"_

 _Types pay off the most on large systems. Architectural requirements captured formally._

This more than ANYTHING else is why I want to move enterprisey app code to Haskell. Having worked on numerous ginormous enterprisey systems -- which are usually doing pretty straightforward things, just at scale, and needing to be maintained by non-brilliant developers -- I can say pretty securely that north of 95% of the invariants could be lifted into the type system, making run-time errors a thing of the past.

Also, in most frameworky big systems, you WANT to stop devs from "just doing IO" or pretty much doing anything without a strong contract around it. Monad stacks do wonders for circumscribing your computational context in an app.

I wonder why they rewrote Aeson though ... perhaps before it was mature? Aeson's pretty awesome.

<comment><USER3> _invariants could be lifted into the type system_

Is there a reason this is only possible in Haskell, or does Haskell just make it super convenient / idiomatic?

<comment><USER4> Haskell/Scala/etc makes it easy to nudge other developers into avoiding mistakes. A concrete example:

I had a Scala system (build on Scalaz, which is a library providing Haskell for Scala), and one of our core types was DBTransaction[_] (a monad). A developer (a skeptic of the type system) was complaining to me about all the excess work he needed to go through, how he couldn't get properly construct a LazyStream[Foo] as a result of this.

He wanted to construct a DBTransaction[LazyStream[Foo]], call runTransaction on it, and get the LazyStream[Foo] out. Then he was going to call f(lazyStream). The compiler just wouldn't allow this, so his "workaround" was to instead call lazyStream.map(f).

Turns out this workaround prevented a runtime error. If he did get his LazyStream[Foo] out, generating the next element in the stream would have called resultSet.next() _after closing the connection_.

This sort of thing happened quite often. People would complain that the type system made it harder for them to do what they wanted. They'd ask the FP "guru" types how to fix it and the "guru" would point out that what they wanted to do was fundamentally unsafe.

<comment><USER3> So if I understand correctly, the real point is instead of programming defensively at runtime, you can do it in the type system.

My main question is the extent to which this is possible in more conventional languages.

<comment><USER5> Just imagine that every static constraint you want to encode has to be written in the language of the types, a subset of your chosen language.

C's language of types is incredibly primitive. Haskell's is quite nice. Agda/Idris/Coq's type language is technically equivalent to its value language so you can encode incredible things.

It turns out that due to people's general desire for compilation to always terminate that the type language behaves quite different from the value language. It also turns out that the type language operates differently because we're more interested in logical constraints than actual evaluation.

The major thing that the above change is that you no longer have the "it's always a Turing complete language" excuse. Type languages can actually significantly and meaningfully differ in power.

So it's meaningful to say that there are constraints that can be encoded statically in Haskell but cannot in C (no matter how you try). And it's also true that Coq can encode constraints that cannot be encoded in Haskell (though Haskell keeps making its type language stronger!).

<comment><USER6> "It turns out that due to people's general desire for compilation to always terminate that the type language behaves quite different from the value language. It also turns out that the type language operates differently because we're more interested in logical constraints than actual evaluation."

If I understand you correctly, if the type system behaves the same as the value system, then it is possible for the compilation to never terminate. Do I have that right?

<comment><USER7> Unrelated but you don't have contact information and this is the most related thread I could find. Here is context:

" I've been trying to get my mind around this kind of stuff for maybe a year. And I have to say that monads don't look like the solution to any of the problems that I actually face or have ever faced, in a thirty-year career." \- [https://news.ycombinator.com/item?id=8815973](https://news.ycombinator.com/item?id=8815973)

You might be interested in this link:

[http://haskellrescue.blogspot.com/2011/03/cooking- delicious-...](http://haskellrescue.blogspot.com/2011/03/cooking-delicious- fish.html)

If you respond quickly enough and I can delete this, I will ;)

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> I've toyed with Haskell, ultimately moving on to the Ocaml/F# camp. There are only two things that I miss from Haskell without an appropriate equivalent or easy workaround: Type Classes, and Higher Kinded Types.

This big roadblock that everyone claims with Haskell, Monads, didn't give me any problems at all...even if it didn't make any sense to resort to them to do something as trivial as IO. What really turned me off more than anything was the combination of the academic focus of the community combined with this weird culture that I could only describe as a cleverness competition.

I'm a pragmatist, and it is obvious that real software can be created with Haskell, but it doesn't really come through in the tutorials or books. There is a lot of "Look, this is really cool!", but rarely a follow up with "and this is why it matters!". Everything seemed to revolve around cool tricks with no practical concern behind them, and then in the comments you inevitably find comments from other Haskellers claiming to do it just a little bit more cleverly using <<lenses, GADTs, zippers, continuations, or some other obscure abstraction>>.

Ultimately it was Ocaml and F# that taught me all of the really important lessons of the ML family, despite the relative lack of learning resources out there. It was there that I found the benefits of making illegal states unrepresentable, expressive pattern matching, type inference, composition over inheritance, etc.

It is a shame, because as languages and runtimes, they probably are inferior to Haskell. Ocaml does fine with concurrency, but parallelism is a disaster. Its class system, its one major distinction from SML, is mostly considered a code smell. Its stance on operator overloading requires me to keep a table of operators handy, instead of the usual intuitive ones. And F# has the sane operators and parallelism story but doesn't have SML/Ocaml Functors, and is still a Windows-first ecosystem (Mono has gotten a lot better, but its still a kludge).

<comment><USER9> The Windows-first status of F# is changing. There have been major improvements in this recently, most notably, the whole compiler being open sourced and its development moved to github[1], and .NET is going to be available on Linux[2]. This is not reality yet, but it will be during this year.

[1] [https://github.com/microsoft/visualfsharp](https://github.com/microsoft/visualfsharp) [2] [http://www.hanselman.com/blog/AnnouncingNET2015NETasOpenSour...](http://www.hanselman.com/blog/AnnouncingNET2015NETasOpenSourceNETonMacandLinuxandVisualStudioCommunity.aspx)

<comment><USER10> It is indeed not bad on unix. The only major flaw left is the lack of higher- kinded types.

</comment></comment></comment><comment><USER11> Has anyone used both Haskell and OCaml (or F#?)? How do they compare in practice? I've been wanting to put some time into a functional language and I've been debating between Haskell and OCaml. Because of F#, OCaml seems like it might be the more practical language (i.e. direct job opportunities). However, excluding F#, Haskell does seem to much more popular than OCaml.

<comment><USER12> I tend to think of OCaml as a functional C. It's strict and not purely functional. You can write for-loops and while-loops if you want (but you shouldn't) and use refs to have mutable state (but you shouldn't). It has a better module system than Haskell, but doesn't have type classes. It has functors, which are equivalent-- OCaml's functor is an operation over modules and only very loosely connected (through type theory, which isn't essential to being proficient in either language) to Haskell's Functor type class-- and better in some ways and worse in others.

Haskell is more expressive and has a much more powerful type system, but it's probably harder to reason about performance.

OCaml's biggest issue (note: I may be out of date on this, since I haven't heavily used it since the late 2000s) is the GIL. This probably limits your ability to use it for multithreaded programming, but it can compile down to extremely fast single-threaded executables.

<comment><USER13> This book actually teaches C in relationship to previous assumed knowledge of Standard ML (not quite OCaml, but close).

[http://eprints.eemcs.utwente.nl/1077/02/book.pdf](http://eprints.eemcs.utwente.nl/1077/02/book.pdf)

I'm not sure I agree with all of the conventions, but it's interesting to see a deliberately functional approach applied to C code.

</comment></comment></comment><comment><USER14> I see. So all you need are compiler/interpreter experts that can turn any problem into a interpreter/compiler problem and you're golden.

I'm not saying the approach is not worthwhile but how exactly does this generalize to other workplaces where there is no critical mass of such experts? I mean they have their own compiler for Haskell for Pete's sake. I would also like to know how many of the core team members have PhDs and MScs. We can check off Don and Lennart. Maybe Don is really measuring the effects of PhDs in language/compiler design on how to manage complexity?

Alternatively, Facebook has been experimenting with Haskell and OCaml. Seeing their case studies would be valuable as well.

<comment><USER15> > I would also like to know how many of the core team members have PhDs and > MScs.

Don't forget the MDs! (Not joking, one of the people Don's team has an MD.)

I used to work for Don at Standard Chartered. Getting good Haskellers seemed way easier than the hiring efforts of my current employer (Google) focussing on more traditional languages.

But I guess, that's mostly a function of pent up demand for Haskell jobs.

<comment><USER14> Where is all this pent up demand? I mean I get what you're saying. Most academics know Haskell and Standard Chartered hires academics but there is a bit of circular thing going on there.

<comment><USER15> Oh, there are quite a lot of programmers working with more conventional languages in their day job, but are using Haskell as a hobby. They are easy to hire with the lure of Haskell.

Since moving away from Standard Chartered I have turned into one of them.

</comment></comment></comment></comment><comment><USER16> This

        An awful lot of data mining and analysis is best done with relational algebra

Is an interesting statement. Would anyone care to elaborate?

<comment><USER17> I think it means that a plethora operations you perform on sets, lists, maps, hash maps and indeed collections of all kinds are just specific implementations of the general "relational algebra" operations.

</comment></comment><comment><USER18> I wonder what's the primary reason for their "Mu" compiler adopting a "strict- ish" evaluation strategy.

<comment><USER19> I don't know, but in my limited experience, lazy evaluation makes memory use worse (usually not much), but more importantly makes performance (time and memory) harder to reason about, because you don't easily know when something will actually evaluate.

Besides that, there's also not much practical gain from it, IMO. One commonly cited benefit is a function that doesn't use all of it's arguments, therefore saving computation time when they're not evaluated. But realistically, an unused parameter should probably be removed.

<comment><USER20> > But realistically, an unused parameter should probably be removed.

Think about the function _if-then-else_ , which you may be familiar with from your favorite language :)

        if-then-else true branch1 branch2 = branch1
        if-then-else false branch1 branch2 = branch2

Obviously you don't want both branches evaluated in any given invocation, and obviously you cannot remove the unused parameter. Note that the purpose is not to "save computation", since for example _branch1_ may be undefined if _cond_ is false!

When using a language with support for lazy evaluation, you encounter this kind of functions _all the time_.

<comment><USER5> Of course, in OCaml that's just

        if_then_else c t e =
          match c with
          | true  -> t ()
          | false -> e ()

So the question sort of becomes one of how painful thunking or anonymous function syntax is.

</comment></comment></comment></comment><comment><USER21> Lazy vs strict evaluation: Lennart, the author of the Mu compiler, has written about it: [http://augustss.blogspot.co.uk/2011/05/more-points-for- lazy-...](http://augustss.blogspot.co.uk/2011/05/more-points-for-lazy- evaluation-in.html)

</comment><comment><USER22> I wonder why they don't just use GHC with some customization to make the default eval strategy less lazy. I understand why someone might prefer more predictable (strict) evals by default.

<comment><USER17> They were targeting an already existing runtime for on older in-house functional language, and the runtime only supported strict evaluation.

</comment></comment><comment><USER23> "Your choice of programming language can have a real effect on these results over time." Probably more accurate to say "Choice of programming team can have a real effect on these results over time."

I want to like Haskell. However, I have given up on wanting to dislike Java. To the point that it is painful to read such things as "you can write Java in any language."

<comment><USER20> To be fair, that's one sentence in the second to last slide of 42 slides. The presentation, at least what I can see in the slides, is hardly Java bashing :) There are 3 mentions of Java in the whole presentation, only one of which has negative connotations: the one you quoted.

<comment><USER23> Yeah, the Java bashing I could (and, admittedly, should) have ignored. It is more the crediting the language for the success that I would rather focus on. It is a fairly strong assertion at the end, that I feel needs more support. Back when fewer teams were writing Java applications, I feel similar advantages were felt for it.

Of course, I still pine for lisp, so I can not claim to have no biases. (Well, that and MMIX)

<comment><USER24> The entire Java community pines for lisp, whether they know it or not. That's why Apache Ant was invented, it's Java's manifestation of Greenspun's Tenth Rule.

<comment><USER23> Is it confined to the Java community? Seems a bit more widespread, honestly.

<comment><USER24> Well yeah, that's why the original Greenspun's tenth rule cited "Any sufficiently complicated C or Fortran program..."

Those who do not learn from history are doomed to repeat it. That is the only logical explanation for why XML even exists.

</comment></comment></comment></comment></comment></comment><comment><USER12> I'm really happy to hear about Standard Chartered's success with this, and I want to know more. This is really promising stuff.

My current company is looking into our "next generation" platform for when our datasets exceed what we can do in R. R may not be the best language, but it's great for exploratory data science, has the best or the only library out there for some ML purposes, and we've done a lot of things to make it production- worthy (on small- and medium-data). We'll probably need to involve something else, down the road, when our data sets get larger than what fits on one box. The leading candidates are Haskell, Clojure, and Scala (Scala because of Spark). I'll have to evaluate the languages fairly and relative to our needs, but I hope Haskell wins for a number of reasons, including the fact that Chicago + Haskell is an unfilled niche and we'd attract a ton of talent.

For those who've taken Haskell this far into production: have you encountered any negatives? Are there any times when you think it might be better not to have a strong type system?

To me, the biggest drawback of Haskell isn't anything intrinsic to the language, but the amount of stuff it forces a person to learn. For me, that's a fun challenge... but trying to convince 110 programmers to use a language that forces I/O into a set of types (loosely) called a monad seems like an epic task. Clojure has the advantage of being simple and beautiful once you get past the parentheses. Haskell is demanding and frustrating for the first 6 months (and pays off handsomely later on, but this can make it a hard sell).

Also, how does the Any type in Mu (if anyone familiar with it is here) differ from Data.Dynamic?

<comment><USER25> Not something I've used myself yet, but is there any particular reason Julia isn't on that list?

<comment><USER26> I haven't checked on Julia for like a year, but back then Julia didn't offer anything above and beyond R when it comes to "big" (really just not fitting into memory) data. As it is Spark with Scala is both faster and more convenient than R or Julia.

<comment><USER27> Spark has a python API and python has a bigger ecosystem for exploratory data analysis than spark.

Also python has a big data interface with out of core matrices and tables as well as a compiler than can speed numerical code, with a just a function decorator, to C like speeds. The former is an interface to the latter.

[http://blaze.pydata.org/docs/dev/index.html](http://blaze.pydata.org/docs/dev/index.html) [https://github.com/numba/numba](https://github.com/numba/numba)</comment></comment></comment></comment>