Rand Paul: 'I will force the expiration' of portions of Patriot Act - <AUTHOR> http://www.politico.com/story/2015/05/exclusive-rand-paul-i-will-force-the-expiration-of-the-patriot-act-118443.html <comment><USER2> I'm as liberal as they come but I will be voting for Rand Paul if he ends up with the Republican nomination. This is one issue where I will be a one issue voter.

Bernie Sanders seems like a great candidate, but I fear he is too reasonable and conciliatory to do what is necessary to properly reign in the entrenched interests of the military/intelligence industrial complex. At this point it seems like nothing short of a campaign of slash-and-burn against these agencies will get the job done, and it's going to take someone as "nutty" as a Paul to do it.

<comment><USER3> > This is one issue where I will be a one issue voter.

Consider all the other issues. For example, with Rand Paul as President, the GOP would certainly control the White House, and House of Representatives, very likely have a 6-3 majority on the Supreme Court within a few years (depending on Justice Ginsberg) ... they'd need only the Senate for one-party rule.

Many, many other things would happen that you probably would not like.

<comment><USER4> It seems the choice is between an Authoritarian left or a small-government right.

I'll take small government over monolithic Authoritarianism any day.

<comment><USER5> Just a reminder, the small government right led by Rand Paul would dramatically expand military spending..

Http://time.com/3759378/rand-paul-defense-spending/

<comment><USER4> But what president won't?

<comment><USER5> Many wouldn't but in the context of this discussion, Bernie Sanders is probably a good example.

</comment></comment></comment></comment></comment></comment><comment><USER6> Good for him. This "freedom act" bait and switch is nonsense IMOP. I don't care much about politics, nor about Paul, but on this issue I agree. They need to sit down and develop a comprehensive plan without the secrecy (except at operational levels), without the sensationalism and fear mongering and without the blatant and quickly revealed lies that have come out of NSA personal and Obama's mouths.

Most importantly, we need to be clear on the objectives. As it is there is a pervasive dirty feeling that the the ulterior motive is surveillance and control of US citizenry for purposes of retaining power. This might not be the case but with the amount of deceit that has recently occurred many people feel this way. So they need to start over in a transparent and trustworthy way.

</comment><comment><USER7> I've been waiting years to see someone like him running for presidency, but I lack experience in Politics to determine if he could have a shot.

<comment><USER8> He's got a shot in the way anyone who declares a candidacy and meets the legal requirements has a shot. If you're talking about odds of getting the nomination (let alone winning the general), then he's got basicly zero chance.

<comment><USER9> Over a year out, he only trails Clinton by a few points: [http://www.realclearpolitics.com/epolls/2016/president/us/ge...](http://www.realclearpolitics.com/epolls/2016/president/us/general_election_paul_vs_clinton-3825.html)

Consider that Clinton has been on the national stage for 30+ years, while Rand has only been on it for months.

That's way more than just "a shot", that's damn good.

<comment><USER10> It doesn't matter how he polls against Clinton, if he has no chance of winning the Republican nomination. Gingrich, Santorum, and RuPaul were similarly "a few points" behind Obama in 2012, and they had just as little chance of ever becoming president.

</comment></comment></comment></comment><comment><AUTHOR> I changed the original headline to be more accurate. Paul's saying he'll block votes on USA Freedom or any extension to the current laws, which means that several clauses in the Patriot Act will sunset (section 215 including the phone dragnet and business records, roving wiretap, and lone wolf).

<comment><USER4> Not questioning you, but could you provide a source? I'm genuinely interested.

Also is it possible to prevent those provisions from passing?

</comment></comment><comment><USER11> It is too bad Rand Paul is having problems fundraising from the large US billionaires that seem to be major determinants in the Republican primaries.

</comment><comment><USER12> "of portions" is like some pretty awful fine print. Death to the "Patriot" Act!

<comment><USER13> Some parts of the original Patriot Act were written to expire. It's easier to get rid of those parts than it is to get rid of the rest because it's easier to prevent something from happening in congress than to cause something to happen.

</comment></comment><comment><USER14> Anyone remember a certain president who was supposed to shut down guatanamo within a few months within being in office? This has the same 'smell' to it ...

<comment><USER15> He is stating intent to do a specific thing on a specific day in the very near future (tomorrow) without precondition or contingency on outcome of any other events. This is not even remotely the same thing as "if I am elected I will..."

</comment></comment><comment><USER16> Good man.

</comment><comment><USER17> Why is that I always confuse Rand Paul with Ron Paul?

<comment><USER18> I usually confuse RuPaul with Pope Paul II

<comment><USER8> You confuse a 6'4" black drag queen with a 15th century Italian priest?

<comment><USER19> You never see them in the same room together at the same time ...

<comment><USER8> I cannot deny that's true.

</comment></comment></comment></comment></comment><comment><USER20> Well, I can't source it via a link at the moment (I'm looking) but I have had multiple face-to-face conversations with people who have told me that Rand Paul has been invited to NSA 5-6 times, and refuses to visit.

Ignorance is truly bliss.

<comment><USER21> Because visiting the NSA would enlighten him in any way?

Critics of the organization would likely be granted zero visibility into their decision making process. Just look how they have treated their own high level employees who voiced concern ([http://en.wikipedia.org/wiki/Thomas_Andrews_Drake](http://en.wikipedia.org/wiki/Thomas_Andrews_Drake)).

It would be a waste of a day. Maybe he could have met with Clapper - _the man that perjured himself before Congress._ Or Keith Alexander - the profiteer who is making millions off _surveillance tech_ he was developing while head of the NSA. ( <\-- That's the guy that made policy decisions on how invasive surveillance should be. FML) If the cronies want his ear: they should come to _his_ office.

If anything, a visit to the NSA would bring negative connotations in the public's eye.

<comment><USER8> What harm is there in hearing what they've got to say? If it's bullshit, then it's bullshit.

Refusing to take a day to head down and see their presentation isn't a principled stand, it's being concerned with your brand.

<comment><USER21> If politicians don't care about their brand, they've pursued the wrong career.

The visible nature of a visit would be exploited. He'd be painted as guilty by association. Politics is petty... so much so that, in this case, a superPAC- funded negative campaign ad (running 24-7 in battleground states) would say: "Rand Paul visited the NSA 6 times since he's been a Senator, yet he preaches reform. So let's ask _you_ Senator: 'why are you in bed with the NSA?'"

Let's keep in mind: there's no way if OP's story or sources are true --- maybe he has met with NSA -- and if he has, I'd hope he wouldn't go around blabbing about it, for the above reason ^^

<comment><USER22> >So let's ask you Senator: 'why are you in bed with the NSA?

Despite what HN believes, the NSA isn't a criminal enterprise, and being associated with it isn't a scandal which would tarnish a presidential candidate to any degree worth being concerned about - associating with the NSA is part of a senator's job. It would _definitely_ be a president's job.

What he should be concerned about is giving the appearance of making principled stands based on willful ignorance. If he intends to run the country, he can't simply pretend the parts of the government he doesn't like don't exist.

<comment><USER23> > Despite what HN believes, the NSA isn't a criminal enterprise

Just curious, how much of the constitution would the NSA have to violate for you to consider its actions illegal? Maybe if its employees engaged in intimidation of journalists, or lying under oath? Or would they need to burn a flag and strangle a bald eagle?

<comment><USER22> I do consider its actions illegal, but I don't consider the agency illegal. I'm also not a member of the US government, though, so even if I wanted to see the NSA burned to the ground, it wouldn't really be relevant.

For a senator, much less a theoretical president, not having a close relationship with intelligence agencies really isn't an option, especially if he intends to change or reform them.

<comment><USER23> > I do consider its actions illegal, but I don't consider the agency illegal

So it's like a waste management company that's a front for Mafia activity like extortion and racketeering. The _company_ isn't illegal, just the activities of a tiny fraction of its employees.

<comment><USER22> Yes, probably. Which implies Rand Paul is running for Godfather.</comment></comment></comment></comment></comment></comment></comment></comment></comment>


Why aren't there any technologists on the NSA review panel? - <AUTHOR> http://www.washingtonpost.com/blogs/the-switch/wp/2013/08/28/why-arent-there-any-technologists-on-the-nsa-review-panel/?tid=rssfeed <comment><USER2> Because Obama doesn't see this as a technology issue. It's a security versus legal rights issue. Technology is involved merely incidentally. Hence a panel that involves two intelligence people (Morell and Clarke), and three law professors (Sunstein, Swire, and Stone).

The professors aren't ideologically diverse, but they're hardly intelligence community insiders like the article is trying to make them out to be. Swire was Chief Counselor for Privacy in the OMB under Clinton. Stone writes a lot on subjects like preserving free speech rights during wartime. None of these guys are anarcho-libertarians, but they're not John Woo "security first" guys either. They pretty much represent the views of the "mainstream left."

Hypothesis: what people want is not someone who knows "how to run a packet sniffer." There is nothing complicated about the underlying technology that can't be explained adequately to a bunch of intelligent people. What people are really mad about is the lack of any representation of the political views of technologists: people who put a very high ideological priority on free information and protecting communications online. Because _that_ is the thing you can't explain in a whitepaper.

<comment><USER3> "There is nothing complicated about the underlying technology that can't be explained adequately to a bunch of intelligent people."

Assuming the underlying technology and it's implications are explained adequately at all. We already know how they try to explain metadata, so how are they going to explain the stuff we still don't know about?

<comment><USER2> Metadata is actually a good example. I'd bet that everyone on that panel understands perfectly well what metadata is and is not. The relevant part of the metadata issue isn't technical, it's legal: can it be protected by the 4th amendment, when it's sitting on AT&T's servers? What sophisticated technical understanding is needed to answer this question? Indeed, arguably better technical understanding undermines the argument for protecting it. When you understand that the metadata is something that's generated by AT&T and not you or your phone, that's less of an argument for protecting it.

</comment></comment></comment><comment><USER4>
      Why aren't there any technologists on the NSA review panel?

Because they might ask sane questions of course.

</comment><comment><USER5> Because the review panel is a joke.

First, they wanted Clapper to do the independent review. [1] This is the man that openly lied to congress and remains scott-free to this day.

Next they picked Michael Morell. [2] This dude was the acting director for the CIA until March of this very year. Clearly he has the capacity to conduct an independent review of his NSA buddies.

Joining this luminary will be Cass Sunstein [3], author of such classics like "Democracy and the Problem of Free Speech", and the person who proposed the government should infiltrate what he deems "conspiracy theory groups":

 _However, our main policy idea is that government should engage in cognitive infiltration of the groups that produce conspiracy theories_ [4, page 14]

Supporting these brains is Richard Clarke, who built his personal career on pushing the "war on terror" after 9/11\. He also recently added "cyberwar" to his extensive portfolio of things he has absolutely no clue of. His views on privacy protections and large scale surveillance are well known:

 _If given the proper authorization, the United States government could stop files in the process of being stolen from getting to the Chinese hackers. If government agencies were authorized to create a major program to grab stolen data leaving the country, they could drastically reduce today's wholesale theft of American corporate secrets._ [5]

(It doesn't take a genius to realize this is the proposal of a person that probably doesn't even have internet access.)

Of course, all of these people work in some capacity for the Obama administration. It didn't even occur to the government morons running this show that maybe, just maybe, they should not pick people with an obvious and direct conflict of interest. They don't even bother to give the impression of caring.

[1]: [https://www.techdirt.com/articles/20130812/13512624147/presi...](https://www.techdirt.com/articles/20130812/13512624147/president- asks-confessed-liar-to-congerss-james-clapper-to-set-up-independent-review- committee-over-nsa-surveillance.shtml)

[2]: [http://abcnews.go.com/blogs/politics/2013/08/white-house- pic...](http://abcnews.go.com/blogs/politics/2013/08/white-house-picks-panel- to-review-nsa-programs/)

[3]: [http://en.wikipedia.org/wiki/Cass_Sunstein](http://en.wikipedia.org/wiki/Cass_Sunstein)

[4]: [http://papers.ssrn.com/sol3/papers.cfm?abstract_id=1084585](http://papers.ssrn.com/sol3/papers.cfm?abstract_id=1084585)

[5]: [http://www.nytimes.com/2012/04/03/opinion/how-china- steals-o...](http://www.nytimes.com/2012/04/03/opinion/how-china-steals-our- secrets.html)

<comment><USER6> Cass Sunstein is among the most famous living constitutional law scholars.

Richard Clarke built his post-government career (after being the most senior counterterrorism official in the Clinton administration) as a critic of the way the "war on terror" had been prosecuted, and has been working on "cyberwar" subjects for over a decade.

I don't like Clarke much and I don't agree with everything Cass Sunstein proposes but your dismissive tone harms your argument.

<comment><USER7> _Cass Sunstein is among the most famous living constitutional law scholars._

Obama himself graduated magna cum laude with a masters degree in law from Harvard and then lectured on constitutional law for 12 years at the University of Chicago Law School. Expertise in constitutional law doesn't necessarily translate to skepticism here. The constitution is not a moral authority on privacy.

 _Richard Clarke_

He wrote an interesting op-ed before he was named to this committee. It appears to be critical of the NSA's operation, but a closer reading suggests his problem is about the degree, he's fine with massive record keeping, he just wants it in the hands of the telcos.

[http://www.nydailynews.com/opinion/worry-nsa- article-1.13697...](http://www.nydailynews.com/opinion/worry-nsa- article-1.1369705)

<comment><USER6> Sunstein is a much more highly regarded legal scholar. Obama was a lecturer at UChicago. Sunstein was a professor. They're not in the same league. Sunstein is up there with Tribe.

I'm not sure where "moral authority on privacy" enters the picture. The question is how the program comports with the Constitution and the American system of governance.

<comment><USER8> Then why didn't they pick Tribe? The problem isn't that Sunstein doesn't have the legal chops. The problem is that Sunstein has gone on record (and written a book) supporting governmental overreach. You're hiring yes-men to do your "independent review".

<comment><USER6> This is the "purity test" theory of public policy. It's easy to be the kind of scholar that Obama (or Bush) can put on any panel; just shut up. Don't write anything ambitious or controversial.

The idea that Cass Sunstein is a "yes man" for Obama is laughable. If anything, it's the other way around.

You will also find in the work of _most_ constitutional scholars something to upset any message board anarcho-libertarian, because very few of them believe in the black-letter absolutism that anarcho-libertarians choose to evaluate the Constitution in. You think there's nothing in Tribe's record to argue with? He's a gun control supporter, for one. You think pundits wouldn't be calling _him_ an "Obama yes-man"?

<comment><USER8> You're right. I concede that Cass Sunstein is not the problem on the panel. And acknowledge the very troubling "shut up and say nothing" outcomes that my viewpoint has on anyone with any sort of ambition of public office.

But I'm still not convinced that the panel is anywhere near independent given the rest of the crew such as Morell and Richard Clarke.

<comment><USER6> I don't think the panel is ideologically independent at all, and rather doubt such independence was a goal of the panel to begin with. I don't think the panel is being run for "your" benefit.

(I appreciate how gracious your comment was. Thank you.)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> Because the goal isn't an unbiased review, but a stamp of political approval? Did you really think the government as a whole is self-critical?

Read Feynman's account of being on the Challenger review panel. He was the token scientist among politicians and PR people, and they tried to steer him away from doing any actual investigations. They tried to agree, before doing any investigation into why the shuttle blew up, not to blame NASA and to indeed give it vote of confidence.

The goal is to deflect blame from the government while making the status quo look hunky dory. Any actual investigation is counterproductive and I guarantee it won't actually happen to the NSA. This is a PR campaign, period.

</comment><comment><USER10> Why aren't there any technologists on the NSA review panel?

Because the last thing the NSA wants on a panel reviewing them is someone technically competent.

</comment><comment><USER6> Because no relevant technologist wants to sit on a panel that is inevitably going to conclude that some degree of SIGINT will need to impact Google. They've got to keep working in this industry, after all.

<comment><USER11> If having a technologist was important, there would be a technologist there. I'm sure there are many who would accept a position if it was offered. Much more likely is that it wasn't considered a technology matter at all. The technology is just there to do what its told after all.

<comment><USER6> That is, as a matter of fact, true.

</comment></comment></comment><comment><USER12> They should just put Snowden on the panel and be done with it :D

</comment><comment><USER13> _Having a technologist like Felten on the panel could provide much-needed insight into the broader technical implications of government surveillance practices. For example, the National Security Agency (NSA) has claimed a data collection practice later ruled unconstitutional by the Foreign Intelligence Surveillance Act (FISA) Court was the result of a complex technical problem rather than an overreach by the NSA during a press call. Someone with technical training would be well-positioned to evaluate the technical merits of this claim._

When the government is doing something bad, it's not relevant whether it came from technical problems rather than cultural.

All we need to know is that the government has been doing something bad. The evidence that this has occurred, _for any reason_ , should be sufficient to shut it down.

</comment><comment><USER14> Why are we even mentioning a "NSA review panel"?

Stating the obvious: This panel is not about solving the issue at hand.

Another example: Was anyone really satisfied with the "9/11 commission"?

<comment><USER15> > Was anyone really satisfied with the "9/11 commission"?

Actually, that commission produced a number of recommendations ([http://govinfo.library.unt.edu/911/report/index.htm](http://govinfo.library.unt.edu/911/report/index.htm)) which were welcomed by many in Congress and some of which were actually implemented. They included such issues as requiring government security agencies to share data with each other and reorganizing the reporting structure to ensure that would happen.

The analogy fails in this case though, because the 9/11 commission was independent and had members from various backgrounds.

</comment></comment><comment><USER16> Ignoring the 'they won't do anything so it doesn't matter who is on it' part of things -

> review government surveillance policies

Because they're not needed to review policy. You honestly don't need to understand technology, and therefore don't need a technology expert, for most things that happen in the world.

Do you expect a technology expert on a medical review board? The doctor is after all going to be using technology ...

<comment><USER17> Let's say that I work at a bank and that the bank policy is to put all the money in the vault and as a result, the money will not be stolen. Then one day, the money is stolen.

Turns out that the reason the money was stolen is because the vault has no door. Just because the bank has a "money in the vault can't be stolen" policy on paper doesn't cause that vision of how the world SHOULD be to become REALITY. In order to winnow out the truth in this situation the review panel would need to have someone who knows something about security and vault construction on it. Also who perhaps would be allowed to inspect said vault to verify it's intact.

This is 100% analogous to the NSA review panel as all the folks in government are crowing about how it's policy that you can't look at such-and-such without a reason, but in fact there's no technological enforcement of said policy. Analysts can look at whatever they want provided that they give (type into a text field) some kind of ostensible reason, but that reason is only for auditing purposes. A bad reason typed into a field doesn't prevent the search as there's no review of said reason prior to the search running.

It's a bank vault with a door where the "lock" is a "sign in, sign out" sheet taped to the wall near the handle. And no security guard ensuring that people do in fact sign in and sign out. And definitely not checking to see that the money everyone's leaving with is in fact for the regular operations of the bank and not for their own personal gain.

<comment><USER16> Those are handled by reports via required experts. Or did you also need an architect on the policy board because it involved a building? They probably plan to print the policy out, I guess we need the engineer who designed the printer on the board as well.

Just because it uses something does not mean a subject matter expert on that thing needs to be involved in every part of the policy surrounding it.

On top of that, this specific group is concerned with the legality of what the NSA is doing. This is the realm of lawyers and constitutional experts. The fact that they are using a computer instead of pads of paper doesn't change that.

Or did they need representatives from the paper mill before?

> in fact there's no technological enforcement of said policy

Oh, and policy writers are often not policy implementers and never are in government, a review board of the policy won't change that.

<comment><USER17> Do you really think that the NSA is going to allow non-NSA experts to review and audit their systems for what the access controls are? I'm not optimistic on the odds.

We've seen before that the NSA can't be trusted to tell the truth about their systems. That means that their experts, reporting on their systems, also can't be trusted.

Furthermore the legality does in fact hinge on the implementation. If the NSA records everything but encrypts it with something that they themselves can't crack and different judges are given the encryption keys for their respective regions of authority and better still there are multiple judges for each region and its randomly decided which judge gets the key on a given day, you might actually convince me that the NSA hasn't yet performed a search.

So let's suppose for a minute that the NSA would claim exactly that. And let's suppose that the panel decides that given the system described, it is in fact constitutional. We would still need an independent auditor to examine the systems in question and ascertain if in fact the NSA is telling the truth. Because what matters isn't the WRITTEN policy, it's the ENFORCED policy. If all we're doing is finding out the legality of the written policy, it's a total joke.</comment></comment></comment></comment>


Ask HN: web-based decision making software? - <AUTHOR>

In our team we occasionally have to discuss some applications and make approval decisions about them. We currently use ReSubj to keep track of it, but it gets really hard to keep discussion in one place, decision making conditions in another (which is our heads) and send responses through our mail client. Not talking about deadlines and replies from the applicants.
I've checked google for 'decision making software' and found some applications, none of which are fully web-based and none of which provide outside world integration (i'm talking about generating web-forms and automated actions on each decision making step - for example sending email responses constructed out of templates). To summ it up, what we need is: tools to receive the issues, a set of tools to host the discussion (not just stupid post/comment thing, we need it more like google wave), rules and conditions that trigger automated decisions and, finally, tools that talk to the outside world when decision has been made.
So, we are now thinking about implementing our own little software. The big question is if it's worth trying to make it more than just internal tool? Do you think businesses and teams would like to buy this sort of thing? <comment><USER2> To answer your last question, I think you are way-over-thinking the problem. But hey, I'm just one guy with an opinion.

Personally, I don't know why I would need all of the stuff you described just to make a decision. Think about it this way. If the decision was a significant one, it would be embedded in your thought process, you would not be able to forget about it. If it isn't, then there's no use spending all that time on it.

Anyway, Fogbugz comes to mind. It's not a decision maker per say, but its a tracker. I love fogbugz and actually the new version 7 allows you to easily add custom fields, so you can probably add some poll features. Fogbugz is good because the premise is simple. Track bugs so you don't forget about them, and collaborate with your team to manage the fix. Making decisions possibly has a similar worklflow. Check them out. Track bugs/Track decisions : Fogbugz!

<comment><AUTHOR> I didn't mean it's a tool to make one big decision. In that case, yes, it'd be natural to keep all the stuff you need in your mind. I meant that it's more like lots of small, but important decisions - as if you are approving YC applications. Imagine the flow of the applications they have and I guess it gets obvious that you need at least a set of rules to handle these.

<comment><USER3> bug tracker is indeed probably a solution for this kind of problem :)

<comment><AUTHOR> Don't forget that the tool we're using now is actually a lot like bug tracker. I am absolutely sure we don't need another one.

</comment></comment></comment></comment><comment><USER4> This is one hacker's way of decision making (as an example choosing a final employee from interviews):

1.0 Start with the first interview

2.0 If short-list keep CV on your desk

3.0 Second interview, if better than previous swap with first one. First one gets regret letter.

4.0 Next interview repeat steps 2 to 3.

Essentially you reduce the number of choices at any time to two. You can do the same for almost any problem where you are faced with more than two choices and at the same time you are disciplining your self to make quick decisions.

If you need to make decisions as a group you can still follow the same procedure as above, perhaps with each one giving a small talk as to why he is making a choice and then vote. Think you are determining MAX from a list! YOU are the software!

</comment><comment><USER5> Make your internal tool, and use it for a while. See how it works, and then decide if you can generalize it to a larger market.

No sense in putting the cart before the horse.

<comment><AUTHOR> I think it makes sense to just collect the opinions. What if there's also something we don't know about, that we should use instead?

<comment><USER6> For complicated stuff I use a regular outline editor and assign scores to the 'trees' and their leaves and then sort leaves and substrees by score.

I never got around to writing software to do it for me but the application is pretty narrow, and the question sets change with every job.

I know it sounds like overkill but it helps me to just shut out the view of the rest of the factors while weighing a smaller section. I've used this method with some success during complicated technical due dilligences. There are usually up to a few hundred questions from several categories that all come together in a single executive summary that should not run beyond a single page.

The 'recommendations and conclusions' section is the most important of this and lots of stuff doesn't make the cut in an explicit way but has to be represented somehow. Especially if the advise is not clear cut (this fortunately does not happen often but it has occurred).

Others than make the decision to go ahead or not in part on the information in this document, so it had better be weighted correctly.

I'm not sure if that is the kind of input you are looking for, but if it doesn't help I hope it doesn't hurt either :)

Best of luck with your search, if you find something outstanding please be sure to post it here.

<comment><AUTHOR> Thank you. Got a few questions though. Do you discuss questions with others? Do you make decisions yourself while others are just consultants?

<comment><USER6> The list of questions was compiled over the years, every time I do a dd for a company that is not comparable to one that I've done before I discuss what needs to be added with my employers to make sure that we don't miss something crucial. The actual questions are mine though, they guide the direction.

Another reason why the question sets are changed is because of changes in technology (for instance, the appearance of the 'cloud' phenomenon has caused a whole slew of questions to be added).

Most of this centers around the analysis of the risk an investor takes when buying all or part of a company, and how that risk can be mitigated, or at least reduced.

I do make decisions but on a much lower level (<50K) and of a much simpler nature, usually those are made by myself and my partner and we are much more informal, we also don't need to report our decisions to shareholders or such.</comment></comment></comment></comment></comment>


Show HN: Sakura Fly - Open source iOS game on App Store - <AUTHOR> https://github.com/l800891/Sakura-Fly <comment><USER2> Hey, is there an email address I could use to reach you?</comment>


ShowHN : online quizzing platform - <AUTHOR>

Hello. Quizr is an online quizzing platform to create, share and play quizzes. You can create any type of quiz, add questions to it, and invite users to play it. Earn points ( by browsing and playing quizzes ) to promote the quizzes you have made and earn extra points when other users play your quizzes.
Here's a beta key for HackerNews :
http://quizr.me/?beta_key=hackernews
Please let me know about any bugs you encounter. As we have just started, we would love some feedback or any tips.
Thank You! <comment><USER2> Fatal error: Call to undefined function getConnectionWithAccessToken() in /hermes/waloraweb002/b442/moo.aksdadcom/quizr_root/pub/leaderboard.php on line 20

<comment><AUTHOR> Fixed. Thanks!</comment></comment>


Apple promised an expansive health app, so why can't women track menstruation? - <AUTHOR> http://www.theverge.com/2014/9/25/6844021/apple-promised-an-expansive-health-app-so-why-cant-i-track <comment><USER2> While I (just like the vast majority of readers of this comment) am not menstruating myself, the small sample of my three sisters (and, as it were, many of their friends) seem to indicate that yes, tracking that information is more relevant to half of the human population than any other health metric is for men.

If the question is "Why is there no menstruation tracker", the answer (really, the elephant in the room) is somewhere here: [http://www.apple.com/pr/bios/](http://www.apple.com/pr/bios/).

Of course, the unreleased data about gender diversity amongst Apple engineers, which we will hopefully get within two years by emulation thanks to Google's own interest in the problem, can easily be guessed as well.

</comment><comment><USER3> I guess the answer is pretty simple, they didn't want to have a slice of the app that would be irrelevant for half of their customers. Of course most people won't use the dozen features of the app anyway, but they could/might regardless of their sex/age/race/ etc. Introducing a sex specific feature makes a distinction. Maybe they could have done it so you'd chose for the male or female version of the health app or something like that, not saying that doing it well was impossible but it would require focus and dedication for this particular problem. Maybe we will see it coming in the future, who knows? But it was certainly not their focus at the release!

<comment><USER4> "...irrelevant for half of their customers..."

To clarify: this is the same Apple that put a U2 album on everyone's iPhone? Tell me again about how they don't want to include something that's irrelevant for half their customers.

<comment><USER5> Yes, this. Excellent point.

Also: This is the same Apple that put the Stocks app on everyone's iPhone.

<comment><USER3> I think you are missing the point here. The health app itself won't get interest from 100% of their iPhone users either. I'm assuming they simply didn't want to introduce a gender specific function in their app that would fragment more the users of that app. If you take the number of iPhone owners, who would have an interest in the Health app and then you cut again to get only the women who would be interested in tracking their periods inside their phone, I think you look at a fraction of their users. Not that those users would be any less valuable or anything but they probably didn't represent a demographic big enough to justify a dedicated feature. Especially since they would probably still use the app anyway for all the other features it proposes.

</comment></comment></comment></comment><comment><USER6> What are you talking about this his been a feature on most phones since day one. I think they call it "calendar".

Also it's sexist to assume only women want to track menstruation isn't it?

<comment><USER7> I saw a web app aimed at guys for tracking menstruation a few years ago (before mobile was popular). The site implied that it would help guys know when their partner was mood was likely to change.

The site's comments section was full of very angry women, hating on the sites creators and any men that might want to track their partners cycle.

</comment></comment><comment><USER8> The app _could_ also be very helpful as an NFP-related tracker, e.g. per the Billings Ovulation Method:

[http://www.thebillingsovulationmethod.org](http://www.thebillingsovulationmethod.org)

</comment><comment><USER9> Is Apple the only one who makes a health app that doesn't do this?

</comment><comment><USER10> do engineers at Apple know what menstruation is?

<comment><USER11> No

</comment></comment><comment><USER12> HN's inability to handle the OP is adorable.

Using all of the same logic from the article, why is there no Poop Tracker? In fact, not only is it the most diverse, easiest to understand health indicator from the human body, but it is the same for all humans. It is The diagnostic report on literally everything you do.

The period tracker is a no brainer, but a poop tracker might actually make your life better. I think, though, that most people want a flashy looking chart and a conversational set piece. Health Care is treated more like an insurance policy and lesss like an habitual practice.

<comment><USER13> Most people aren't likely to shit themselves without a poop tracker, but most women keep track of their periods to keep from ending up with blood on their pants. Out of all this obnoxious quantified self stuff, this is the only thing I would actually use.

<comment><USER12> you miss the point; tracking your shit is not a way to avoid public embarrassment or hours in a sink [lads get blood on our clothes to, though some not as frequently as others].

tracking digestive data [doota?log log?] is a way to avoid the doctor's office and the emergency room, make informed decisions about diet on a progressive, as opposed to resolution, basis.

Hunters, medical forensic researchers, detectives, your mom; all of these professionals know that poop is a massive data dump of valuable info.</comment></comment></comment>


Show HN: The best maker videos - <AUTHOR> https://makerchans.xtat.net/ <comment><AUTHOR> Oh and apologies in advance for the design - I don't even want to know what it looks like on mobile :)</comment>


Show HN: Simon.Says.do – easy way to dispatch tasks to 1 to many - <AUTHOR> http://simon.says.do

<comment><USER2> Cool product and a nice start.

Few suggestions:

\- As Jeff pointed out, it wasn't immediately clear what this did. After playing around with it I got it, but stating it in plain words on the homepage would likely help your conversions.

\- Similarly the "Apply for a subdomain now!" heading would be better suited being used to tout the benefit to the customer. Meaning, your visitors don't care about applying for a subdomain. They care about collaboratively completing a task (maybe) so gear your headlines and copy towards that.

\- It wasn't clear that the logo leads you to a demo -- I had to read it here that that was the case.

\- When I hover over the "enter a task" field in the demo my cursor turns into a circle with a line through it and I can't click. I'm not sure if that's intentional because the functionality isn't there yet or a bug with the implementation in my browser.

I signed up and am looking to seeing where this goes.

Congrats on launching!

<comment><AUTHOR> Great feedback. Thx. The Subdomain is to see who could become a paying customer. We thought Matt.says.do and firstname.lastname@example.com could be simple way to communicate "on this channel (says.do) I need your help for these tasks".

</comment></comment><comment><USER3> While I appreciate a minimalist homepage/landing page/whatever, it would probably be a good idea to state what problem this product solves.

Or even what it does.

<comment><AUTHOR> To get thing done quickly by 1 or large groups of people. It's inspired by what I did as a firefighter dispatching trucks & teams to emergencies.

<comment><USER4> Explaining it on the homepage would be better :). I only figured it out through context of looking at the Android App's screen shots.

<comment><AUTHOR> New task assigned to ourselves, thx!

</comment></comment></comment></comment><comment><USER5> I like the design and the ux. Task management is a pain in the backside and I'm still searching for something that will actually work for me, for both my personal to-dos and the organizations and groups that I help manage. I do agree with jeffclark that it would be a great improvement to better communicate the pain it solves and who it's for like smack bang at the top of the frontpage e.g. "Awesome task distribution for teams" or something. And getting rid of the about in PDF form and make it html instead would probably also be a good thing.

<comment><AUTHOR> It's just the start. In any case cheers for your input. "Awesome task distribution for teams" is right on.

</comment></comment><comment><USER6> It's a task distribution infrastructure. Useful for teams!

You should also link to the PDF that explains a little more: <http://simon.says.do/assets/documents/simonsays.pdf>

<comment><USER7> Why is this a PDF? Why isn't this a page on your site?

<comment><AUTHOR> We'll fix this <http://www.sigwann.com/didthis/simonsays>

</comment></comment></comment><comment><USER8> I was confused. There should be a clearly visible video explaining it in 30 seconds.

Explaining why it exists, how it works and what it does; the problem, the solution.

The WHY is missing \- WHY do you offer it? Why does it exist? \- WHY should I care? \- WHY should I be a part of what you do? \- WHY do I need it?

Related: "Start With Why" <http://www.youtube.com/watch?v=qp0HIF3SfI4>

Besides that I wish your project all the best. It looks very interesting!

<comment><AUTHOR> The why is to give the internet muscles! Make us do stuff, rather than "retweet" & like...

</comment></comment><comment><USER9> After reading the PDF file and comments here I still don't get the advantage, except having the task management functionality as a cool URL . Isn't this a function of project management tools? Can't I even perform this function using generic tools such as twitter? Would you mind to provide a use case or a scenario to clarify? Thanks.

<comment><AUTHOR> Use case eg.: a Startup office is inundated by Sandy, I ask my team, friends (people I can ask for help in my contacts) to bring brooms + a pump +... now! and I want to have instant feedback if somebody takes care of it, who, or how many, and who can not do it. Them, just click yes or no.

<comment><USER9> This looks promising guys, good luck.

</comment></comment></comment><comment><AUTHOR> If you click on the big red logo you go to the demo. <http://demo.says.do>

<comment><USER8> It is not obvious that there is a demo behind the logo. I didn't find it and I would have never found it. It would be better if there was a message mentioning it, like:

"Curious? Check out our demo to learn more" <http://demo.says.do/>

</comment></comment><comment><USER10> link to android app: [https://play.google.com/store/apps/details?id=com.bliss.simo...](https://play.google.com/store/apps/details?id=com.bliss.simonsays)

</comment><comment><USER11> Quantified the right way. Excellent. +1

</comment><comment><AUTHOR> btw I am "Dens" on the app. Task me anything!

</comment><comment><USER12> really cool!

<comment><AUTHOR> Thx motivating</comment></comment>


Workers bought sugar from supermarket to slow cement flood on Victoria Line - <AUTHOR> http://www.standard.co.uk/news/transport/workers-bought-sugar-from-supermarket-to-slow-cement-flood-farce-on-victoria-line-9081168.html?origin=internalSearch <comment><USER3> Apparently sugar in cement is a thing: [https://duckduckgo.com/?q=sugar+concrete](https://duckduckgo.com/?q=sugar+concrete)

Sugar retards the setting process. Of course people who work with concrete would know this.

I think we've just been given a glimpse into the lore and practices of a foreign profession.

<comment><USER4> I remember my dad telling me about working on a site where the homeowners had decided they wanted a brown concrete driveway to match the house - <USER2> subsequently used a large amount of brown sugar to colourise their cement. It never set.

</comment></comment><comment><USER5> I took the tube instead of cycling that day and was kicking myself because I so rarely take the tube. When I saw the pictures I thought 10 to 1 they don't have it open by morning, but they did. They deserve credit for getting it cleaned up (or at least operational) in < 14 hours.

</comment><comment><USER6> For those like myself wondering why sugar was used and how it helped this situation then I found this URL most enlightening:-

[http://www.telegraph.co.uk/science/science- news/10594718/Why...](http://www.telegraph.co.uk/science/science- news/10594718/Why-sugar-helped-remove-Victoria-Line-concrete-flood.html)

"Concrete is made using cement, which is a combination of crushed and heated limestone, clay and gypsum; aggregate, such as gravel and sand; and water. Adding water causes a chemical reaction called hydration, where hydrogen from the water combines with calcium, sulphate, aluminium and silicon from the cement. This releases heat and depending on the proportions of each of these minerals, which hydrate at different rates, can set at varying speeds. Sugar, however, is composed of carbon, oxygen and hydrogen atoms which can interfere with the hydration process by binding with the minerals and slow down the reaction."

</comment><comment><USER7> The best bit of this is that the story of the cement flood was broken by viral clickbait site UsVsTh3m (a commercial thing from the people who run b3ta). They actually scooped everyone, and everyone used their photos.

[http://usvsth3m.com/post/74285062011/you-wont-believe-why- th...](http://usvsth3m.com/post/74285062011/you-wont-believe-why-the-victoria- line-is-currently)

(My loved one used to work for the Tube. She says those photos would have been the actual incident report photos.)

</comment><comment><USER8> That is pretty intense. I am not sure how you would know that your forms were going to leak that badly, but if you're pumping concrete from the street above its going to be under a lot of pressure when it gets down to the bottom.

If they hadn't caught it (and I assume it was actually a flood alarm that went off in the cabinet) you would have been faced with carving the equipment out of a solid block of concrete and _that_ would have been bloody expensive and slow.

</comment><comment><USER9> _" TfL today came under fire for initially informing commuters the line closure was due to "flooding""_

Technically they weren't lying, they just didn't say what material was doing the flooding.

<comment><USER10> "That is partly the truth, which is the same as a lie by omission." \- Jean Luc Picard

</comment></comment><comment><USER11> > The only word for it is a f∗∗∗ up of major proportions. Everyone was f-ing > and blinding when they realised what had happened.

It's certainly more fuck up than farce, but what does what does "f-ing" and "blinding" mean? (Australian here)

But the key issue - in everything - is not whether you make mistakes, but whether you fix them. This one was fixed.

<comment><USER10> Exactly what part of Australia do you live in? F-ing is a very common phrase here.

<comment><USER12> 'Fucking' is, but softening it to 'effing' isn't, and 'blinding' is archaic, mostly used as an intensifying word rather than on it's own ('he was in a blinding hurry'). More likely to use 'bloody'.

<comment><USER10> I hear it all the time. I live in Sydney.

<comment><USER12> Weird, I've never really heard it except in the context of someone trying to sanitise their language, such as when kids are around.

Then again, there are some weird regionalisms out there. I once met a pair of sandgropers that said "type of" where other people would say "sort of". They were siblings, so it may have even been family-specific. Haven't heard it elsewhere.

<comment><USER10> I was just interested. But there you go, regional dialects. I have no idea what a "sand groper" is!

<comment><USER13> A sand groper is a small insect: <p> [http://en.wikipedia.org/wiki/Sandgroper_%28insect%29](http://en.wikipedia.org/wiki/Sandgroper_%28insect%29) <p> A "sand groper" is also slang for a Western Australian. As a "sand groper", I have never heard anyone use "type of" instead of "sort of" so I'm going to guess it was family specific.

<comment><USER10> I know what a sand grower is, just never heard the slang :-)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER14> I'd imagine this works similarly to how a slice of bread in a bag of cookies keeps the cookies chewy, as the sugar attracts and holds the water from the bread, and keeps the cookies from drying out. Something to do with sugar being hygroscopic.

<comment><USER15> And now I know how to keep my cookies chewy, thank you jspiros.

</comment></comment><comment><USER16> What technology are they using for signaling? From the photos, it looks like a bunch of relays connected with a bunch of red wires, but it must be more advanced than that.

<comment><USER17> Indeed it is - the Victoria Line uses ATO (automatic train operation), so nearly all of the train operation is automated. The system has been running since the 60s, you can read more about it here:

[http://www.trainweb.org/tubeprune/Victoria%20Line%20ATO.htm](http://www.trainweb.org/tubeprune/Victoria%20Line%20ATO.htm)

</comment></comment><comment><USER18> _" It's stupid more than anything. I guess stupidity has ruled the day here."_

Gotta love people weighing in with their expert opinion.

</comment><comment><USER19> Luckily it wasn't racks of digital gear with fans.

I can imagine someone thinking they had underestimated the quantity of cement needed as it drained into this room.

</comment><comment><USER20> Wow, I had Ghostery paused and this web site loaded over 50 resources that would otherwise be blocked.

109 JS files clocking over 3MB.

</comment><comment><USER21> I don't understand Mike White's and Boris Watch's jokes.

<comment><USER22> London Underground lines have names. One of them is the Circle line. They are shown on the map in colours.

"Blue circle" is a brand of cement.

It's a week joke kludging these things together.

</comment></comment><comment><USER23> would have loved to be in the room when they realized what had happened

</comment><comment><USER24> That's enough humans. Robots! come over.

</comment><comment><USER25> The real question is how they just went pouring cement there without regards for what was in there.

<comment><USER26> They were pumping it into an escalator void and apparently it burst through into the room.</comment></comment>


Ryan Singer on creating forms that delight your users [video] - <AUTHOR> http://www.thinkvitamin.com/training/webapps/web-app-form-design/ <comment><USER2> I was fine with it until he said "Ajax Goodness". Makes my skin crawl.</comment>


23 Successful People Who Wake Up Really Early - <AUTHOR> http://www.businessinsider.com/successful-early-risers-2012-1?op=1

<comment><USER2> I don't know about you folks, but I find that I can be effective in a lot of professional contexts on relatively little sleep (decision-making, brainstorming, demanding technical meetings, project management tasks), but I rarely get into the zone enough to code anything of any value unless I'm well rested.</comment>


Chilean officials can't identify a strange IR signal seen by its Navy - <AUTHOR> http://arstechnica.com/science/2017/01/after-two-years-of-study-chilean-officials-cant-explain-ufo-sighting/ <comment><USER2> another analysis that suggests this might be airplanes. scroll to the comments, where they plug in GPS coordinates from the video into google early, and superimpose the location of various flights from public records.

[https://www.metabunk.org/explanation-for-chilean-navy-ufo- vi...](https://www.metabunk.org/explanation-for-chilean-navy-ufo-video- aerodynamic-contrail.t8306/)

<comment><USER3> > another analysis that suggests this might be airplanes

Then they'd have to be stealth airplanes and unwilling to communicate with the patrol. From the source [1] article:

 _Shortly thereafter, the pilot contacted two radar stations - one close by on the coast, and the other the main DGAC Control system (Ground Primary Radar) in Santiago - to report the unknown traffic. Neither station could detect it on radar, although both easily picked up the helicopter. (The object was well within the range of radar detection.) Air traffic controllers confirmed that no traffic, either civilian or military, had been reported in the area, and that no aircraft had been authorized to fly in the controlled air space where the object was located. The on-board radar was also unable to detect the object and the camera's radar could not lock onto it.

The pilot tried several times to communicate with the UAP, using the multi- national, civilian bandwidth designed for this purpose. He received no reply._

[1] [http://www.huffingtonpost.com/entry/groundbreaking-ufo- video...](http://www.huffingtonpost.com/entry/groundbreaking-ufo-video-just- released-from-chilean_us_586d37bce4b014e7c72ee56b)

<comment><USER4> I would argue that just because nobody answered doesn't mean it wasn't an airplane. Maybe the guy was just eating a sandwich and didn't feel like picking up his radio. I'd also have a hard time believing Chile keeps perfect flight records. Occam's razor and all that.

<comment><USER3> Fine, what about the lack of radar signature - unable to be detected either from nearby ground-based installations, the helicopter's dedicated radar or the additional radar on the IR sensor cluster? I think that was the more interesting point. Also remember the helicopter was travelling at reasonably low speeds of _132 knots, or 152 mph_ yet if we're looking at the turbofan exhausts/afterburner we should expect object to reduce in size accordingly.

</comment></comment></comment></comment><comment><USER5> I posted this yesterday, but the article references the huffington post, so I figured I'd drop it here too: [http://m.huffpost.com/us/entry/us_586d37bce4b014e7c72ee56b](http://m.huffpost.com/us/entry/us_586d37bce4b014e7c72ee56b)

</comment><comment><USER6> When the object first comes on screen I initially thought "CH-47 making a left turn."[1] It looks like there's two little "nubs" on the front and back at the first zoom. Don't have any explanation for the discharge out the back, however.

[1] [http://www.boeing.com/defense/ch-47-chinook/](http://www.boeing.com/defense/ch-47-chinook/)

</comment><comment><USER7> I'm not an expert on fighter thermal signatures, but this sort of looks like the rear output of two engines followed by usage of the afterburners maybe?

[http://i51.tinypic.com/20fs0pf.jpg](http://i51.tinypic.com/20fs0pf.jpg)

It may correspond to known aircraft configuration, or an unknown one, but it doesn't seem like there's anything anomalous about it...

<comment><USER8> This thing just hovers there, slowly moving.

Seeing noting in the visible spectrum is not anomalous?

<comment><USER9> Here my guess: \- It appears stationary as it is travelling towards the camera and very far away. \- It isn't apparent in the visible spectrum because of cloud/haze between it and the camera. \- The plume appears as it passes through a layer of cloud and heats the moisture therein.

<comment><USER10> Absolutely. It's a twin engined something, and we're seeing the heat signature. May not even be an unusual aircraft.

<comment><USER11> How come no radar signature. Is that not unusual for aircraft, or are most aircraft radar absorbing?

<comment><USER12> Most civilian ATC radars are 'Secondary' radars which depend on cooperative transponders on all aircraft. If you turn your transponder off, the system doesn't work.

US ATC uses 'Primary' radars as backup for locating aircraft that don't have transponders or don't have them on. Militaries use Primary radars for most of their activities. Other articles don't provide distinction on what type of radar was used.

</comment></comment></comment></comment></comment></comment><comment><USER13> The article says that the possibility that this was an object reentering the atmosphere was dismissed. Why? There is no sense of scale here. It could be something very fast and far away, like a bolide leaving a trail of debris.

</comment><comment><USER14> Could it be some kind of IR reflection of the helicopter itself due to the structure of the clouds? It would seem logical if there was no radar signal, it was on a linear path with the helicopter and did not show on normal camera. Any opinions?

<comment><USER15> What would the plume be? Would the helicopter produce a dumbell-shaped heat signature?

</comment></comment><comment><USER16> Right at the 0:46 mark (and again at 10 minutes) in the video you can see something that resembles a quad-copter with propellers on 4 sides of the flying object. Or am i just imagining things?

<comment><USER17> Definitely remarked that to myself as well, but the rotors look huge compared with the craft itself ... and extend above, below, left and right. Like a drone traveling sideways? Strange indeed.

</comment></comment><comment> awinter-py The chilean Very Large Telescope has a laser system that creates a 'virtual guide star' \-- presumably this isn't that.

<comment><USER18> They avoid looking low over the horizon.

</comment></comment><comment><USER19> A UFO releasing plumes of material in the atmosphere?

Just wait 'till the contrails community gets a whiff of this.

<comment><USER20> I think you actually mean "chemtrails". Contrails are perfectly unremarkable phenomena.

<comment><USER19> Dammit. _Chem_ trails. Thank you.

</comment></comment></comment><comment><USER21> Is temperature the only determinant of intensity, or could this also depend on something like opacity, emissivity or reflectance? Could these be ordinary contrails?

<comment><USER22> I'd heavily recommend the metabunk thread linked by rahimiali. Reflection off a perfectly ordinary contrail is a likely explanation..

<comment><USER21> Yes - I have just finished reading it. QED.

</comment></comment></comment><comment><USER23> Why did the article say it was a heat signature? I thought heat looked white to an IR sensor, and cold looked black.

EDIT: thank you to the informative replies below!

<comment><USER8> They usually invert it to have a better contrast against the background.

<comment><USER24> In fact the video shows the 'inverted' mode at some point. [https://youtu.be/NkUTGpegZN0?t=363](https://youtu.be/NkUTGpegZN0?t=363)

</comment></comment></comment><comment><USER8> > The significance of this sighting is that it was made by credible Navy > officers, lasted nearly 10 minutes, and involved observation in both the > visible and infrared portions of the spectrum.

Thanks, that's what all previous UFO disbelievers were crying about. I don't suggest any ET origin to be clear. If that footage is not faked (which doesn't seem to be case) it will going to be a hard puzzle to solve.

</comment><comment><USER25> So, the Chilean Navy has some strange footage, probably corresponding to some other country's secret aircraft, and they... get it published on Ars Technica and invite the literally-schizophrenic "UFO" community to take a look at it?

<comment><USER26> Where does it say that they went to Ars Technica? They published a press release [1].

[1] [http://www.cefaa.gob.cl/home/en-la- prensa/noticias/casoarmad...](http://www.cefaa.gob.cl/home/en-la- prensa/noticias/casoarmada)</comment></comment>


Show HN: 2100 signups and counting for being "site of the day" on design website - <AUTHOR> http://www.awwwards.com/

<comment><AUTHOR> This site has given us more signups than Product Hunt + Venture Beat combined - and this is only in the past few hours. Total traffic so far - 12k.</comment>


HTML5 Beat Machine - <AUTHOR> http://chromium.googlecode.com/svn/trunk/samples/audio/shiny-drum-machine.html Requires audio api. In Chrome go to about:flags and enable "Web Audio". <comment><USER2> Looks awesome! It does, however, seem to be stuck at loading in my Chrome (win, 12.0.742.112), so I was not been able to take it for a proper test- drive.</comment>


Naval on (Killer) Drones and Second Amendment - <AUTHOR> https://twitter.com/naval/status/1141017417620938752 <comment><USER2> Lmao!!! I love how the government focuses on miniaturized drones. I forgot that bigger drones HAVE to carry candy and flowers.</comment>


Versioned HDF5 - <AUTHOR> https://labs.quansight.org/blog/2020/08/introducing-versioned-hdf5/ <comment><USER2> I've always been a bit curious as to what use cases people have for HDF5 files that involve frequent changing of data.

I wonder how read/write performance scales with the _size_ of the dataset in question, in particular, the number of chunks, and hence the number of virtual dataset mappings. I never really explored how well the HDF5 library handles obscene numbers of VDS mappings, and one per chunk on a large dataset is probably more than the HDF Group had in mind.

</comment><comment><USER3> This is a huge shortcoming with HDF5 and I've personally been bitten by not understanding this, and in spite of telling others to not get bit by it, I've seen other people be bitten by it. Glad to see someone doing some harm prevention, I hope it gets adopted and mainlined.</comment>


The advantages of static typing, simply stated - <AUTHOR> http://pchiusano.github.io/2016-09-15/static-vs-dynamic.html <comment><USER2> Interestingly, most of these advantages are not specific to static typing, but derive from having a language that talks about types – even a dynamic one. For example, most of these advantages apply to Julia as well, a dynamic language that has type declarations, which:

\- Lets you create typed collections so that if you insert the wrong kind of value, you get an error immediately, albeit only when code runs, not before;

\- Has abstract types that serve the same function as Haskell's type classes, and allow you to inherit a huge amount of functionality for a very brief type definition;

\- Serve as documentation of APIs;

\- Allow performance similar to C/C++.

Another advantage that wasn't listed is that in languages that don't allow type annotations, you end up writing a lot of boilerplate type-checking code in libraries to give better error messages.

<comment><USER3> How can you define throwing an error at runtime instead of compile time an advantage?

<comment><USER2> I didn't claim it was. That's one of the tradeoffs you make in exchange for a simpler, more forgiving programming model (and the ability to do serious work in a REPL or notebook). However, given that Julia programs can be mostly type inferred before execution, it _is_ possible to check for this kind of error before running a program. There have been some projects to do exactly that [1] [2], and I suspect that once Julia reaches 1.0, we'll focus more effort on static analysis tools.

The point is that you don't need a static language to get many of the benefits of types, you just need your language that allows you to express type-based properties. One of the way to do that is to have a set of formal rules for deriving the type of every expression in a program, but that's not actually necessary.

[1] [https://github.com/astrieanna/TypeCheck.jl](https://github.com/astrieanna/TypeCheck.jl)

[2] [https://github.com/tonyhffong/Lint.jl](https://github.com/tonyhffong/Lint.jl)

<comment><USER4> Being able to get these errors without running the code is almost all the benefit.

It enables a whole class of highly effective program manipulations that are just unavailable to a non-statically-checked language.

<comment><USER2> The claimed benefit is getting the error earlier and "at the location the erroneous value is inserted." That's exactly what happens in a dynamic language with typed collections – but, as I admitted, not at compile time. Is it better to get an error at compile time? Sure, but most of the benefit comes from the error being raised _at_ the erroneous insertion and not later when the value is used by some completely unrelated code. Hence, my claim of getting _most_ of the benefit. Now there are certainly other arguments to be made about "highly effective program manipulations", but that's not the case being presented by the author here.

<comment><USER5> Those other "highly effective program manipulations" include refactoring and modifications which involve changing parameter and return types. While I understand what you're saying, to myself it's pretty clear that there's a wide gap between these two scenarios:

* Changing the collection's type and not knowing until runtime -- when your program crashes -- that it's being used wrong.

* Changing the collection's type and the program refusing to compile until all usage is corrected.

Because of this, I don't agree with the _most_ modifier you're attempting to apply. The difference to me is _confidence_. In the former, how confident am I that I didn't miss a use-case on some branch? Considering that the program will crash or otherwise fail to operate, that seems like something I want to be pretty confident about.

It's very useful to have something telling you that everything looks OK. That something can be testing, but why rely on writing good tests when we have formal proof systems available?

</comment></comment></comment></comment></comment></comment><comment><USER6> It's frustrating that this static vs dynamic 'battle' still goes on. The longer everyone thinks this is actually a problem, the longer we have to wait for innovations to happen. Look at the web in 2016, the technology is a complete disarray. Look at the game industry in 2016, where C++ is thrown around as the the cause and solution to all life's problems. A language created 33 years ago now with no intention of being used as it is today.

The advantage of static typing is obvious to me; the more my computer understands of my code, the _less_ work I have to do. I can offload my memory and instead think about things that are more interesting, not be looking up Python obscurities on Stackoverflow.

But static typing is not perfect, and there is still more the computer could be doing if it had more understanding. That is where we should be focusing, that is where the real problem is.

<comment><USER7> With static typing the computer doesn't "understand" your code. It just automatically checks the correctness proof you've presented to it. And the correctness is limited only to certain properties of the program, that a given type system supports.

<comment><USER6> We can argue about the definition of 'understand' all day, but it's a simple fact that the computer has _more_ of an understanding of the structure of your program with a type system, and thus can help out more.

<comment><USER8> I still wouldn't use 'understanding' in that context. It makes as if a static typing compiler sounds "magical".

I could say "python is better at understanding what the programmer wants to do". But I think you'd disagree with me.

The compiler is doing lexical analysis of the program being fed into it. That's it.

</comment></comment></comment></comment><comment><USER9> It's important to remember that the terms "statically typed" and "dynamically typed" cover a huge range of different language features. To have a good discussion about the tradeoffs, it's better to talk about individual features rather than "statically typed" or "dynamically typed".

For example,

 _Like puzzle pieces with shapes that we can observe fit together, we can think of types as specifying a grammar for programs that 'make sense'._

All programming languages have a grammar for programs that make sense (it's specified by the parser). Algebraic data types give you a grammar for _values_ that make sense. Separately, a type checker assigns types to expressions and checks that they're consistent. You can have algebraic data types without a type checker (e.g. Racket's 2htdp/abstraction), and you can have a type checker without algebraic data types.

You can also have constraints on values that are too complex to be easily checked at compile time (e.g. clojure.spec) or that can be checked at compile time but only incompletely (e.g. Erlang's -type and Dialyzer).

Anyway, I don't mean to be critical of the article: it does a good job covering the high-level tradeoffs. I just think people are too quick to generalize their experience with particular languages to entire classes of language features.

</comment><comment><USER10> I've recently joined a team writing primarily in Clojure, whose proponents often tout repl-driven programming as a unique benefit to the language.

In a statically typed language (the stronger the better), aided by a good IDE, I don't need to be constantly executing my code against data during development; My editor is constantly validating my code, and when it stops complaining, my code will work. And months later when I or someone else uses that code in another part of the system, they won't need to execute that code to see how it behaves, as the types themselves provide documentation and as- you-code feedback.

<comment><USER3> with F# you have a REPL, it is not only prerogative of dynamic typed languages.

<comment><USER5> You could argue that with PowerShell you have an entire .NET REPL. And I have actually used it that way, particularly when I run into some function that has bad MSDN documentation.

</comment></comment></comment><comment><USER11> I started programming with PHP and JavaScript (both dynamically typed) then I started writing games with ActionScript 2 (dynamically typed) then I switched to ActionScript 3 (statically typed), then I got into Java (statically typed) and later C/C++ (statically typed) - So I spent a lot of time with both.

For the past few years I've been coding almost exclusively in dynamically typed languages - I did some Python (dynamically typed) but mostly a lot of JavaScript/Node.js (dynamically typed). I understand all the pros and cons, but for me personally, I am much more productive with dynamically typed languages than statically typed ones.

It was a long time ago, but I still remember clearly when I switched from AS2 to AS3 - I was writing games for Flash at the time; I did feel an improvement and I really liked the additional structure which types brought to my code. There was a certain satisfaction that came with defining fixed classes and interfaces and making use of polymorphism and various formal 'design patterns'. It gave me extra 'confidence' in my code.

In retrospect, after having spent years praising statically-typed languages, and then later switching back to dynamically typed languages, I think a lot of the benefits that I felt during my static typing phase came down to one simple fact:

"Statically typed languages force you think more before you do things" \- This was really valuable early in my career when I had a tendency to rush things. However, now that I more fully appreciate how complex programming is (and how easy it is to break stuff), I am always very careful (regardless of the language).

Static typing for me has become a tedious process through which I no longer derive much value - Though it was really useful at a specific point in my career.

That said, I think there is some stuff (anything to do with low-level hardware/systems and optimizations) where statically typed languages cannot be avoided.

Also I wouldn't say that people who like statically typed languages are inexperienced - I know some very experienced engineers who are just addicted to that extra feeling of 'confidence' and structure which statically typed languages give you.

<comment><USER5> Forgive me, because I only have what you have said to work with. It sounds like this was a lot of smaller projects with smaller teams? If so, static typing increases value as project size and head count increases.

The more pieces of the project that you didn't write or otherwise have low knowledge of their inner workings, the more dangerous modifying code becomes. It's very useful to have _something_ telling you that everything looks OK. That something can be testing, but why rely on writing good tests when we have formal proof systems available?

</comment></comment><comment><USER12> "This is sort of a subtle point: when programming in a static language, you always have a choice about what information you encode in the types, and how you encode things. ... In a static language, you do always have the option of building a less typeful API, where less is enforced by the types, but it is often tempting to spend more time encoding things statically (and then proving things to the typechecker) than would be saved by avoidance of potential future bugs. With experience, you develop a good sense for what is worth tracking statically and what to keep dynamic, but newcomers to static languages can make bad tradeoffs here, which in turn contributes to needless complexity in the language's library ecosystem. "

This is a very important point that I've rarely seen talked about explicitly though I think all programmers develop a tacit sense of it.

<comment><USER5> It's an important point, but it can also be fairly well generalized to a lot of the "softer" points of program design. For instance, when to introduce an abstraction layer, and where the boundaries of the abstraction are. You could find-and-replace instances of "static typing" with "abstraction layer" into the quoted paragraph and it still makes perfect sense.

</comment></comment><comment><USER11> I think the concept of refactoring in dynamically typed vs statically typed languages is a double-edged sword comparison.

On one hand, refactoring code written in a statically typed languages is less error-prone - But on the other hand, such refactorings tend to affect more code than those of dynamically-typed code.

If your business requirements change often and refactorings are common, it can be a pain to keep having to rethink your code structure.

Dynamically-typed code is often easier to extend and modify. I find that with statically typed code, if you start messing with a small part of your code, sometimes you have to rethink your entire class hierarchy. With dynamic languages, your code can handle quite a few changes before it gets to a point were you need to rethink the overall structure.

<comment><USER13> However if you're dealing with a language with type inference, you can get a good chunk of the ease benefits of dynamic languages.

</comment></comment><comment><USER14> > Is it safe to call f(x)?

The author asserts that static typing allows the compiler to answer this question, but this only allows the compiler to spot type errors in advance. There are many other kinds of errors that are completely invisible to the compiler.

In a dynamically typed language, if I don't spot the error from reading the code, I must wait until runtime/testing to discover the error. This is also true for a statically typed language for every kind of error except type errors. Personally, type errors haven't been the kind of errors that haunt my dreams. I guess that's why I'm not enthusiastic about static typing.

<comment><USER15> You are right - in a tautalogical way - that type systems only catch type errors. However, in modern languages (including Haskell, Scala, as well as newer, more experimental languages like Idris), those type errors can be extremely powerful.

Many people assume that 'types' are simply primitives like Int and String, and that a type checker just makes sure you don't pass an Int to a function expecting String. However, it is possible to express far more powerful statements about your data using a good type system.

For example, you can express the idea of non-emptiness of a container, as mentioned in the article. Then you know that, say, taking the max element of a non-empty container is guaranteed to give you an element, whereas with a possibly-empty container you might not have any element at all, causing a null, or exception, or at least requiring an Optional type.

You can express safety properties such as a sanitized string vs. unsanitized. You can have a Sanitized type that can only be created by calling a sanitize function - which carefully escapes/handles any invalid characters - and then functions that might, say, pass a value into an SQL instruction can be typed to only take Sanitized strings. Now the representation in memory of Strings and Sanitized strings is identical, but by using different types and a certain set of allowed functions on those types, you can encode the invariant that a string cannot be inserted into an SQL query until it has been sanitized. Now your type checker can catch SQL insertion vulnerabilities for you. How's that for a type error?

<comment><USER14> You make a good point, so I'll answer in parts.

First, when most people talk about static typing, they're talking about the near-useless version -- just types like Int and String. I think we agree there, so I won't mention it further.

Second, a dynamically typed language like Python has more typing information than some folks first assume. Python's AttributeError is quite similar to a TypeError. In fact, with old-style classes (v2.1 and earlier), many errors that are now TypeErrors were AttributeErrors. Calling len() on an inappropriate object would raise "AttributeError: no __len__". In many cases where folks talk about wanting a static type system, they really just want interfaces.

The Sanitized string example is a good counter-point because the interface needs to be near-identical to a regular string. I'm not certain a more complex memory representation (caused by defining a different class) would cause noticeable inefficiency. We're probably not doing vectorized operations on strings.

This brings me to my third point, that Python 3 has a similar split between two types: bytes and str. The memory representation is slightly different, bytes vs unicode, but the interfaces are nearly identical. Two differences would be decode vs encode and that getting an element from bytes (annoyingly) gives an int. The distinction between the two types is enforced mostly inside builtin functions, implemented in C. This was a big deal, causing backwards incompatibility, many flamewars, and we're still resolving it, though I think it's clear to most people now that Python 3 is the future.

Is it possible that the Python 2/3 split could have been avoided if we had a static type system? Perhaps, if we had multiple dispatch, the function signatures could have remained the same, avoiding backwards incompatibility... I'm just speculating here. My guess is no, getting rigorous about unicode would cause incompatibility regardless of the type system. I'll get back to the main topic now.

> Now your type checker can catch SQL insertion vulnerabilities for you.

This sounds useful, but a good interface solves the problem just as well. I'm a Pythonista (if you haven't noticed), so my example is PEP 249 that specifies a DB API for all database wrapper implementers to follow. It states that it's the wrapper dev's responsibility to implement a sanitizing string interpolation for the cursor's execute method.

My conclusion is that designing a good interface is important whether you have dynamic or static typing. Static typing errs on the side of safety, dynamic typing errs on the side of flexibility. Both can mimic the other. Arguing that one is better is like saying linear regression is better/worse than k-nearest- neighbors.

<comment><USER16> > _First, when most people talk about static typing, they 're talking about > the near-useless version -- just types like Int and String. I think we agree > there, so I won't mention it further._

I don't agree. Who is "most people"? Certainly not PL designers and not most of what I've seen here in HN. More importantly, it's also not what the article under discussion is saying, either.

> _Static typing errs on the side of safety, dynamic typing errs on the side > of flexibility. Both can mimic the other. Arguing that one is better is like > saying linear regression is better /worse than k-nearest-neighbors._

In my experience, this isn't true. Modern statically typed languages have all the convenience of dynamically typed ones, such as REPLs and elegance, plus the safety of early warnings _and_ the guidance that static types give you while writing your code (if you've ever written code like this, you'll know the feeling of working with building blocks that "fit" with each other). So you can have your cake and eat it, too.

Also in my experience, not having experience with these languages is what leads some people to think their type systems can only state trivial things such as "this is a String". They can do more. They can say things such as "this expression/function doesn't write to disk as a hidden side effect", which is useful!

<comment><USER14> > you can have your cake and eat it, too.

Like a dynamic language with optional type hints? As I said, both techniques can mimic each other, with the corresponding tradeoffs. As you use more generics in a statically typed language, you're sacrificing safety. As you use more type hints in a dynamically typed language, you're increasing syntax clutter and decreasing flexibility.

<comment><USER17> > As you use more generics in a statically typed language, you're sacrificing > safety

Actually, in languages like Haskell, the more generic your type, the more "safe" you can expect it to be.

As an example, consider a function that gives you the first element of the tuple you pass to it.

The most generic type of this function is

        fst :: (a,b) -> a

However, it can also have the type

        fst1 :: (Int, Int) -> Int

Now, you can be sure of the behaviour of fst immediately by looking at its type, but that doesn't hold for fst1

Pretty much the only definition of fst that the compiler will accept is

        fst (x,y) = x

However, the compiler will accept all the following definitions of fst1

        fst1 (x,y) = x+y
        fst1 (x,y) = x*y
        fst1 (x,y) = 2^x
        fst1 (x,y) = 7
        ...

</comment></comment></comment></comment></comment></comment><comment><USER18> Why are we even still having this debate in 2016? The question is not if strong types are better but how to migrate existing codebases to those languages. I'm an OCaml guy myself but Swift looks pretty nice...

<comment><USER19> Partly because people still get mixed up between strong typing (something without any clear definition) and static typing...

<comment><USER7> I'm not aware of any universally accepted definition of "strong typing"

<comment><USER20> No implicit conversions?

</comment></comment></comment></comment><comment><USER21> One of my problems with static types in a lot of languages is that they're usually very limited in what they allow you to express.

For example: a function that takes an integer between 1 and 100. That's a straightforward constraint! Elixir is an example of a language that lets you express some of those kinds of constraints, by using guard clauses. Along with its powerful pattern matching, you end up with very nice code.

What are other languages that are known for these kinds of constraints?

<comment><USER22> Even though that may be factually correct, it doesn't seem to be related to static typing. Haskell has guards but they are slightly different.

<comment><USER21> I figured it was relevant, since it relates to types as a whole.

Consider the following: I have a "rating" type, which is a whole number from 0 to 5. If you try rendering a view with a number outside of that range, that's a bug! Which means you probably made a mistake somewhere.

I want software to help me catch bugs. If something can't be confirmed with a linter or compiler, getting a good error message during runtime is also fine. Once I've established that I expect some value, I don't want to write extra checks to confirm that my expectations are met.

<comment><USER22> It relates to typing as a method of encoding invariants, yes. I was trying to say that it is unrelated to which "type" of typing. That is, I can perfectly imagine a statically typed language where you could encode such restrictions as easily as you do with Elixir and you would get the same result, a runtime error.

Regarding your rating example, you could encode that restriction in a type (or class in OO) and have a guarantee that once you have an instance of that type you no longer need to check for it's validity. Rendering a Rating would never fail at runtime, you'd get a type error first.

</comment></comment></comment></comment><comment><USER23> > Some tasks, especially around generic programming, can be very easily > expressed in a dynamic language, but require more machinery in a static > language.

I think this is not generally true and not a point against static typing, but rather against statically typed languages with poor support for generics. Java stands out as the poorest implementation of generics I have ever seen.

> For instance, a generic serialization library can be written in a dynamic > language, without anything fancy, but providing the same thing in a static > language requires more machinery, and is sometimes more complicated to use.

As a counterexample, have a look at NimYAML (my work):

        http://flyx.github.io/NimYAML/

The examples there show how easy it is to provide the user with a generic interface for serialization in a statically typed language. The implementation does not differ much from what you'd do in a dynamic language: Provide a pair of serialization/deserialization handlers for each of [simple types (string, int, float, enums), array/sequence types, tuple/object/struct types, dict/map types, pointer/reference types].

<comment><USER5> Type-erasure was a crime against the Java community, perpetrated to make the JVM writers' job easier. Backwards compatibility was a poor excuse, as I can think of at least two ways to mitigate that without type-erasure:

* Introduce new generic types in a new namespace. .NET did this with `System.Collections` and `System.Collections.Generic`.

* Default unspecified generics to `Object`, including usage of generic types in bytecode tagged with pre-1.5 versions.

</comment></comment><comment><USER24> > the programmer ends up with less to specify

I don't see how this can be true. Wouldn't there be less to specify if the programmer didn't have to specify types at all?

<comment><USER25> Sometimes behavior follows from the types. Combined with inference you sometimes wind up writing substantially less code (because it's basically being generated for you by a prolog program).

</comment></comment><comment><USER7> My personal favorite blog post on this topic: [http://blogs.perl.org/users/ovid/2010/08/what-to-know- before...](http://blogs.perl.org/users/ovid/2010/08/what-to-know-before- debating-type-systems.html)

</comment><comment><USER26> tldr; knows haskell

</comment><comment><USER27> My disagreement starts with the beginning of this:

"A large class of errors are caught, earlier in the development process, closer to the location where they are introduced."

I would re-state this as:

"A large class of errors are introduced, which otherwise would not exist."

Consider dealing with JSON in Java. Every element, however deeply nested, needs to be cast, and miscasting leads to endless errors, elsewhere in the code. Given JSON whose structure changes (because you draw from an API which leaves out fields if they don't have data for that field) your only option is to cast to Object, and then you have to guess your way forward, figuring out what the Object might be.

Consider the Salesforce clone of Java, Apex, which I have had to work in this month.

The if() statements here are the same one's that I would have to write in Ruby or Python or PHP, but meanwhile I've had to do a bunch of other, useless work:

        public Object deserializeJson(String sandi_data) {
            System.debug(sandi_data);
            Object objResponse = JSON.deserializeUntyped(sandi_data);

            if (objResponse instanceof Map<String, Object>) {
                Map<String, Object> mapResponse = (Map<String, Object>)objResponse;
                List<Object> dataList = (List<Object>)mapResponse.get('data');
                if(dataList == null) {
                    String err = 'The Sandi API field for data was null';
                    System.debug(err);
                    ApexPages.Message msgErr = new ApexPages.Message(ApexPages.Severity.ERROR, err);
                    ApexPages.addmessage(msgErr);
                    return null;
                } else if (dataList.isEmpty()) {
                    String err = 'The Sandi API field for data was empty';
                    System.debug(err);
                    ApexPages.Message msgErr = new ApexPages.Message(ApexPages.Severity.ERROR, err);
                    ApexPages.addmessage(msgErr);
                    return null;
                } else {
                    System.debug('dataList:');
                    System.debug(dataList);
                    return dataList;
                }
            }
            return sandi_data;
        }

And then, downstream of this:

                List<Object> dataList = (List<Object>)deserializeJson(sandi_data);

                for(Integer i=0; i < dataList.size(); i++) {
                    Map<String, Object> dataMap = (Map<String, Object>)dataList[i];
                    System.debug('dataMap:');
                    System.debug(dataMap);
                    String response = fetchCompany(dataMap);
                    SearchResult__c profile = saveProfileResult(response);
                    cr.add(profile);
                }

I'm leaving out the code that is downstream of this function, but it is full of more of the same: guessing at fields, guessing at how they should be cast, using if() to guard against null or empty. Tons of unnecessary bloat. Lots of easy errors to make.

Again, some of the if() statements need to be made in Ruby or Python or PHP, but the rest of it is just pure bloat. Verbose, unneeded and unhelpful.

In a dynamic language I could simply work with a deeply nested data structure of maps and lists, and I'd handle the casting at the very end of the process. In a dynamic language, I could treat everything as a string till the very end, and then cast to integers or dates or floats or strings as needed. In a dynamic language, I could write the code faster, with less errors, and with less code.

Static typing does not live up to its promises.

[ Edit to add ]

We have no control over the API that we draw from. We are drawing from the API of a different company. I wish they didn't use JSON. If they have to use JSON, I wish they at least enforced a consistent schema. But they don't. And that is why static type checking fails: because the real world is chaotic, and when you have to interact with that real world, you are often forced to do so dynamically, because of the mistakes that other companies have made. The real world is dynamic.

The idea that you can know an external API perfectly is a fantasy. The real world is messy. The real world does not always conform to a strict schema.

The notion that An External API Is Reliable is as stupid as the notion The Network Is Reliable:

[https://blog.fogcreek.com/eight-fallacies-of-distributed- com...](https://blog.fogcreek.com/eight-fallacies-of-distributed-computing- tech-talk/)

[[ Further edit to add ]]

the_af wrote:

"Using dynamic typing will just hide the problems under the rug, and they will explode in your face later on. Static typing just made those problems explicit."

What I wrote was:

"In a dynamic language I could simply work with a deeply nested data structure of maps and lists, and I'd handle the casting at the very end of the process"

I'll simplify this: there are 3 times when we can enforce a schema:

1.) when the API call returns with a string

2.) on every line, scattered through dozens of functions

3.) at the end, when I have the data that I want

In my original comment, I advocated for #3. Here are the reasons I don't like the first 2 options:

#1 - the external API is bloated, so writing a schema for the whole thing would be difficult to justify in terms of business. We only need a tiny slice of the data.

#2 - having casting discovery information scattered through dozens of functions makes the code brittle and refactoring difficult.

With Ruby or Python or PHP or any dynamic language I have the option of #3: grab the data, cast everything as a string, grab the tiny sliver of data I actually need, and then enforce the schema on that tiny sliver. This is the data that I can cast to integers, floats, dates, etc -- whatever is actually needed.

In static-type languages such as Java, I'm forced to go with either #1 or #2, and they are both bad options.

About this, from tigershark:

"it is only the usage of an awful JSON library in a not so nice language"

Bad JSON is part of the real world. If your static-type language can not handle bad JSON, then it can not handle the real world. That is my point: static-type checking is too academic, too pure, for the real world.

As to "not so nice language", you are engaging in the No True Scotsman fallacy, which goes like this: no True statically typed language would be this bad! But following the No True Scotsman illogic, the rest of your unstated assumptions amount to: It's only the statically typed languages that most programmers actually use that are this bad! But somewhere there is a statically-typed language of such unbelievable purity, it overcomes all of these problems!

<comment><USER28> Have you considered the possibility instead that JSON is not an appropriate serialization protocol or storage mechanism for the problem to be solved? Or that it isn't being used effectively/correctly (that is, it isn't being parsed correctly, e.g. with a library or some other mechanism that makes checking underlying types less cumbersome)? I noted in a comment downstream from here that plenty of C and C++ JSON libraries offer very easy parsing (e.g. "json_get_int(element, key)") that fails early. I almost don't even think about JSON twice if I have to use it as a data format in a C++ program I'm working on. It's just another library to link against and use almost effortlessly. Doesn't Java, or this Salesforce implementation of it, have something similar?

Furthermore every dynamic language I've used has had tooling spring up, e.g. in the form of linters, that includes at least some basic checking for type mismatch where possible. I'm not so sure static typing leads to problems. It isn't problem free--no programming language or paradigm is--but I do think the lack of it leads to some problems that are easily avoided without too much extra overhead.

<comment><USER27> We have no control over the API that we draw from. We are drawing from the API of a different company. I wish they didn't use JSON. If they have to use JSON, I wish they at least enforced a consistent schema. But they don't. And that is why static type checking fails: because the real world is chaotic, and when you have to interact with that real world, you are often forced to do so dynamically, because of the mistakes that other companies have made. The real world is dynamic.

<comment><USER28> The real world being dynamic has almost literally nothing to do with this issue. The concepts are completely unrelated.

Although I'd agree that I find development with dynamically typed languages a bit more chaotic than static or strongly typed ones. And not necessarily in a fun, good way, either.</comment></comment></comment></comment>


Ask HN: Should I learn Python? - <AUTHOR> And what about Rust? <comment><USER2> [https://www.codecademy.com/learn/python](https://www.codecademy.com/learn/python)

[https://www.khanacademy.org/computer-programming/python- prog...](https://www.khanacademy.org/computer-programming/python- programming/4682027490082816)

Python is good because it works across different platforms. It has a lot of example code and libraries to use.

Rust is still a new language not as many people using it as Python does. I remember a startup tried to write a haunted house video game in Rust but ran out of money because Rust developers are rare and want a lot of money to work. If it was Java or C++ based they could have hired cheaper programmers and then sold it to raise money for a Rust remake.

Here is some Rust learning resources: [http://hackr.io/tutorials/rust](http://hackr.io/tutorials/rust)

<comment><USER3> Do you happen to remember what that startup's name was? I've never heard this story.

<comment><USER2> The startup name was never given. They posted on HN asking why they couldn't get their game finished in Rust and why Rust developers wanted more money than other developers. I don't have the link and HN is hard to search to find it. But I remembered it.

</comment></comment></comment><comment><USER4> Hard to say without context. I can speak for myself, after spending many years doing Perl based web dev work, I'm finding less and less of them and the ones I do get are not what I want. Got tired of seeing high paying python jobs going across my inbox...So yea I'm learning Python because I think it will double my job reach.

Oh and I don't know where you are, but pycon is coming up. If you are serious about learning, you should go: [https://us.pycon.org/](https://us.pycon.org/)

</comment><comment><USER5> Your productivity is not really tied to the language syntax as much as it's dependent on libraries. Python Standard Library as well as libraries outside of it are in many cases mature, stable and well-tested. Things like scikit, pandas, NLTK, Django have mature ecosystems of their own, so overall it's a very good general-purpose language to know.

</comment><comment><USER6> It's hard to answer this question without knowing what languages you already know and how experienced you are. I'd recommend Python regardless. It's very useful for writing small scripts sometimes and is used pretty widely I'd say. Can't say too much about Rust, but it looks interesting.

</comment><comment><USER7> If you want to make money, neither is your best bet, but Python is far better of a bet than Rust. If you want to learn about programming, Rust is a better bet. If you want to develop apps for your own use, Python will have more pre- written libraries and components for you to use.

</comment><comment><USER8> It depends on what you're trying to do.

</comment><comment><USER9> Where are you coming from, and where do you want to go?

</comment><comment><USER10> My answer: Yes

</comment><comment><USER11> If you are a beginner,then YES.</comment>