Court Rules That Yelp Must Unmask the Identities of Seven Anonymous Reviewers - <AUTHOR> http://www.theatlantic.com/technology/archive/2014/01/court-rules-that-yelp-must-unmask-the-identities-of-seven-anonymous-reviewers/282959/ <comment><USER2> To me, this sounds like the court overstepped their bounds. I'd be surprised if a carpet cleaning company didn't have at least a few negative reviews, but looking at the reviews on Yelp that did have their names, I'm a bit shocked this company is still in business. Now that they've sued to find anonymous customers, the reviews are filling up with dis-satisfied non-customers (fun to read):

[http://www.yelp.com/biz/hadeed-carpet- alexandria?nb=1](http://www.yelp.com/biz/hadeed-carpet-alexandria?nb=1)

P.S. It also seems like most people are unhappy with both their business practice (holding "finished" rugs hostage unless an increased price is paid) _AND_ with the quality of their work.

</comment><comment><USER3> Perhaps an unpopular opinion, but _it 's high time_... TripAdvisor, Yelp and several other sites all have the same issue.

In the competitive NYC hotel biz, competitors and people with post-stay expenditure remorse have been posting false/fake reviews of encountering bedbugs/mice/ants, blood/semen stains, pubic hair (can it ever anything else?) and prostitutes.

Since reviewers have no obligation to prove they actually stayed at a property, they can say whatever they want. Property owners meanwhile have zero recourse other than a management response and without reservation details they can't even investigate claims.

Competitors can usually be detected by references to their own hotels as better alternatives. 'Remorsees' are trickier, but there are patterns as well. For instance, they do not address issues during their stay, as indicated in post-stay surveys, but once they read the credit card statement, they send in complaints and post negative reviews thinking the "squeaky wheel gets the grease" (spoiler: they rarely do).

I have even seen negative reviews posted which are promptly followed up on with a "settlement offer" email to the hotel ("Just give me back 50% and I will remove my review. If you don't, I will post this review on every trip review site on the planet.")

The worst thing I've seen is a claim of bedbugs crawling from the mattress (impossible, they're tempurpedic and bedbug sniffing dogs visit the rooms at least once a month) where the reviewer had uploaded an image from Wikipedia, claiming it was a bedbug he'd caught in his room... We traced that one back to a self-proclaimed journalist/blogger miffed at not getting free nights in return for an article... In this particular case, reservations for this hotel dropped by 20% overnight and we had to threaten a lawsuit for the site in question to get it removed when they remained unresponsive.

After analyzing 5+ years of customer feedback and surveys, I can tell you than a lot of visitors should have just thought twice before going on a trip...

<comment><USER4> Makes sense to me, and I say this as one who has posted several negative reviews on Yelp under the same name that's on his driver's license. Yelp's primacy in its field means that a negative review on the site can substantially depress the business of the company so disfavored. Given that potential impact, why shouldn't I be prepared to stand behind my words? Why shouldn't anyone?

Anonymous speech on the Internet is of enormous value, but I fail to see why the protection of anonymity should be extended to outright slander. Such permissiveness can only dilute the perceived value of anonymous speech as a whole, with potentially disastrous effects on those who cannot speak in safety otherwise.

</comment></comment><comment><USER5> This is Yelp - don't they have a track record of leaving fabricated negative reviews for companies that refuse to do business with them? They probably don't want to reveal the identities of the anonymous reviewers because they're not actually real people.

<comment><USER6> I don't think I've ever heard of Yelp _fabricating negative reviews_ , though there have indeed been numerous allegations of their downplaying positive reviews of businesses that don't pay their Yelp Tax.

<comment><USER7> That said, the more we hear about their business practices, the easier I find it becomes to wonder if we will indeed one day discover Yelp-fabricated negative reviews.

</comment></comment></comment><comment><USER8> This is an important issue that has not yet been tackled in regards to doctor- patient interactions. This relationship has a lot of legal doctrine and is very much 'one-way' in the information control--in a nutshell, HIPAA (law) prevents a physician from releasing information about a patient without their consent. Yet, there are review sites that allow people to anonymously review their physician. But now imagine that the patient's name is visible, the physician STILL CAN'T defend themselves because the information would be protected from release. So, consider this situation--you can neither confront the accuser nor answer with rebuttal.

And yes, the comments may be defamatory if there are statements of fact that are not true. I'm really shocked by the number of people in that site's comments that are comparing this to revolution in Syria or Egypt. I mean, really people? That is almost farcical to the point of Poe's law.

The summary of this whole legal shenanigans seems to be that a business got bad reviews and wants to confirm if these people leaving reviews were actual customers. I think it's hard to make an argument against this stance, especially if this can be done in a way that doesn't reveal the reviewer's identities to the carpet company--say a neutral third party mediator. It would cost a lot less than an appeal.

If you want to know why Yelp is fighting this, it's not about your civil liberties. Look at the bad precedent it would set for their business model--if that case won, any business in VA could force Yelp to respond to inquiries regarding any anonymous reviews. Sounds like a cumbersome and expensive reason to keep fighting.

<comment><USER9> > I'm really shocked by the number of people in that site's comments that are > comparing this to revolution in Syria or Egypt.

Welcome to America, land of the wish-we-were-as-brave-as-them.

<comment><USER10> Here's how you recognize "brave" people : they don't exist. There's 2 groups of people in Syria : those who have no choice, on both sides, and criminals hiding behind religion.

Now why both sides have no choice is simple, but distressing. There's no real solution.

First the real "revolutionaries". They fight because the cost of living in Syria has risen beyond their capacity and they can't leave. They are not brave, except insofar as they choose to fight now rather than wait until they're dead.

Second the "government". They are a minority religious group in a strict islamic country. To sunni muslims they are worse than the Jews. They can't fix the economy any more than Barack Obama can (or for that matter Bush, or whoever). They also cannot give up their position : sunnis will exterminate them in Syria just like they've done in Iraq, just like they're trying to do to the Jews in Israel. Sunnis are not making a secret of this. In short : they can't give in to terror, because giving in to terror escalates terror (for obvious reasons). What's weird here is that they have the support of other minority religious groups, like Syrian Druze muslims, who fight for them (just like they fight for the Jews in Israel, despite having the choice).

And thirdly you have the criminals, the "real believers" _, the mujahideen ( "swords of faith"), who fight to exterminate any non-wahhabi. Do NOT look at this link unless you know what you're getting into [http://www.youtube.com/watch?v=QVLZPxCEggw](http://www.youtube.com/watch?v=QVLZPxCEggw) . This is what saudi arabia is paying for, mostly with US oil money.

_ note that obviously these people don't believe. They rape, they gamble, they drink, and they know this perfectly well. Now you can try to make an argument that islam only demands you enforce islamic law on others, you don't actually have to follow it yourself. But these people do not really believe in any meaningful sense. They want to do this, and they're given the chance to get away with it. That's how they're recruited, those are the promises. (Of course you could -correctly- point out that that's the promise the paedophile prophet made to the first muslim converts : that they would get to rape, pillage and raid).

<comment><USER9> Yes, but this requires that people understand what's going on in Syria/Egypt. That's not the case with the people who compare their situation to the Arab Spring and the like. They make the comparison because it lionizes their identification as underdogs in an oppressive governmental regime, not because it has a whit of accuracy. They see the press praise the revolutionaries are brave people, so they compare it to themselves.

</comment></comment></comment></comment><comment><USER11> ... On the one hand, that is pretty messed up.

On the other, I'm not OK with Yelp the extortion racket getting advertising.

<comment><USER12> What extortion racket?

<comment><USER11> Well, it really kicked off in ~2009 when this story popped: [http://www.eastbayexpress.com/oakland/yelp-and-the- business-...](http://www.eastbayexpress.com/oakland/yelp-and-the-business-of- extortion-20/Content?oid=1176635)

Many owners alleged that they received cold calls from Yelp about negative reviews, offering refuge in exchange for buying advertising on yelp.

Yelp didn't have much to say short of denials, but rumours of it ran pretty rampant. Here's a recent response to them by yelp: [http://officialblog.yelp.com/2013/05/no-yelp-doesnt- extort-s...](http://officialblog.yelp.com/2013/05/no-yelp-doesnt-extort-small- businesses-see-for-yourself.html)

Of course, business owners are alleging foul play in the black box filtering algorithm, not the deletion per say, but that's sort of how the rumour evolved anyway.

Too much shit has being thrown at yelp, and admittingly not all of it has stuck, but I wouldn't trust anything on there. I don't trust their black box.

<comment><USER13> How is that different from Google putting bought links at the top for search results?

I guess, one could argue that Google do not _call_ companies and say: "You've had a really good website for key words "foo and bar", but the few first one at the top goes elsewhere. Pay us $299 a month and your website will be at the top".

<comment><USER14> Google puts bought links above and to the side of their search results. These links are clearly separated labelled advertisements and are thus no different to any other online/print advertisements

That is not by a very long stretch of the imagination the same as what Yelp does.

Yelp offer to bury negative reviews in exchange for payment. That's the very definition of extortion.

<comment><USER15> I think the point was that Yelp's algorithm is not clear and is >rumored< to be biased to raise their own income.

While google is higher profile and would not keep an intentional practice secret for long, it is also not an entirely neutral party.

For example, changing it's algorithms to move businesses lower than other sites (review, blog, forum, etc) may make sense from the user perspective to a degree. But taking that even further works against both the customer and businesses to google's monetary benefit. Then the businesses must purchase SEM from google for searches that were directed at finding the business.

Dropping organic list algorithm changes whenever they hurt SEM profit combined with A/B testing to raise conversion rates/revenue on the advertising could end up with an effective extortion racket simply because that is optimal when you have a monopoly.

<comment><USER14> I appreciate your viewpoint, but I'll argue that were Google to do that, it still wouldn't be extortion.

There is a ethically a world of difference between:

a.) Having the option of paying to appear higher in the rankings (IIRC Yahoo used to do this way back when) and...

b.) Getting a call from Yelp informing you of some "anonymous" negative review posted about your business, with the offer of "making it go away" in exchange for cash.

</comment></comment></comment></comment></comment></comment></comment><comment><USER16> I dunno, I'm ok with anonymous reviews, but not _false_ reviews. That's what's being claimed here: that the people leaving the negative reviews were never clients of the carpet cleaning company.

I can't think of a way to weed out the false ones, though, other than to reveal their names and allow them to be sued.

<comment><USER6> I'm not sure if there's an entity that could be trusted to do this, but if there were, the court could simply have Yelp release the identities of Hadeed's reviewers, and Hadeed's release its customer list, to the same (bonded, or otherwise contractually/legally obligated to maintain privacy) third party. That third party could then LEFT OUTER JOIN the lists, and release to Hadeed's the identities of any parties that have reviewed, but aren't actual customers, without also disclosing the identities of actual customers who've left legitimate negative reviews.

Of course, that might risk revealing the existence of any _positive_ non- customer reviews, and with a company of the sort this one seems to be, I'm not willing to bet that's the empty set.

EDIT: phrasing.

<comment><USER17> Sounds reasonable. I'm not sure how you prove that Hadeed is giving them the complete list, though.

<comment><USER18> Yeah, that's the problem. Hadeed could just strip out customers that had negative experiences from their list, and then sue those customers for defamation.

<comment><USER19> Sorta, IANAL but that would put them into perjury territory which is a huge deal if they get caught. How likely that is depends on how smart they are, but its quite possible. For example, if any of the customers didn't pay in cash thats going to leave a paper trail.

<comment><USER20> Or has a receipt, or knows some people who could be witnesses for it, or lots of other possibilities. Filing bogus lawsuits is a tried and true intimidation tactic, but perjury is just dumb.

</comment></comment></comment></comment></comment></comment><comment><USER21> Yelp's response: [http://officialblog.yelp.com](http://officialblog.yelp.com)

<comment><USER22> Thank you, but to be precise it is:

[http://officialblog.yelp.com/2014/01/protecting-consumer- fre...](http://officialblog.yelp.com/2014/01/protecting-consumer-free-speech- in-virginia-a-fight-well-continue.html)

</comment></comment><comment><USER23> On the free speech issue, the majority is clearly wrong, and the dissent is clearly right. I expect either en banc or a higher court to fix this.

Past that, i'm not sure why yelp continues the jurisdictional argument (that VA has no jurisdiction over them).

They have a registered agent in VA, yet claim this does not give VA jurisdiction over them. While there is a split of authority over this across states (with most federal courts holding the states can do this), this is unlikely to be one of the close cases these splits represent.

Yet they continue to press the jurisdictional argument, pissing off every court along the way, while they have 0% chance of winning a jurisdictional challenge at any level (even if the registered agent issue was resolved in their favor, the court would _still_ have jurisdiction over them under other tests).

I have serious trouble understanding this strategy. All it does is make you seem unreasonable, which, for better or worse, increases your chances of losing on the real argument.

<comment><USER24> Yelp's legal counsel would be incompetent not to attempt a defense which results in the case being thrown out. They must have reason to believe that they have a >0% chance of successfully arguing it.

Additionally, the US justice system is not like a playground: your legal tactics on one case, no matter how distasteful, will have no bearing on the decision of another case. Judges don't think, "hmm, they did some tricky hot- shot lawyering on that other case, time to take 'em down a notch or two!".

<comment><USER23> "Yelp's legal counsel would be incompetent not to attempt a defense which results in the case being thrown out. They must have reason to believe that they have a >0% chance of successfully arguing it."

False. On both counts. Parties press completely frivolous claism all the time. Pressing frivolous claims does not make you a good lawyer, or competent, nor is it malpractice to avoid making frivolous arguments.

"Additionally, the US justice system is not like a playground: your legal tactics on one case, no matter how distasteful, will have no bearing on the decision of another case. Judges don't think, "hmm, they did some tricky hot- shot lawyering on that other case, time to take 'em down a notch or two!"."

First, both of these are in the same case. Maybe you should read the appeals court decision?

Second, please don't lecture me about the US justice system condescendingly. I'm not sure where you practiced law in the US, but my experience as a US lawyer for many years now tells me this is 100% completely and totally inaccurate, as much as one would like it to not be. Certainly in the federal court system, things tend to be better, but at a state and local level? Please. Judges are not completely objective robotic automatons. If you really think behavior has no impact on decisions, i urge you to rethink this stance.

</comment></comment></comment><comment><USER25> What does Yelp actually have to furnish? If the "identities" are "John Doe" and firstname.lastname@example.com, are they complying by just handing over that information? Or are they legally obligated to identify the reviewers as real people? What if the reviewers aren't US citizens?

<comment><USER26> They most likely have to keep login time and IP (terrorist laws and all that); that can lead to the ISP that may or may not be US-based. If it is (and the judge grants a warrant, which appears likely) then you have a narrower base of users to consider. If the comment is from somewhere outside of the US, unless it's suddenly a trend to cross an ocean to have your carpet cleaned, Yelp would have to consider the possibility that the comments might have been fake, face little legal consequences presumably, and erase those. I know I can be lack creativity, but… trolling a dodgy carpet cleaner half a world away? Seriously? The most convoluted case I'll consider is competition — and ever that seems far-fetched.

Include here a ton of CSI-based scenarii on people using chat-room and web- cafés to communicate convoluted plot via dry-cleaner reviews, over-zelaous investigators and tech wizz using the 'enhance' button and green lines bouncing around the globe to trace the actual IP.

</comment></comment><comment><USER27> Actual people still write real reviews on Yelp?

<comment><USER28> Well, that's the question in this case :)

</comment></comment><comment><USER29> Startup idea: comment litigation insurance.

</comment><comment><USER30> The solution is to stop asking users' email addresses, and for the users to create dummy accounts at mailinator.com and similar sites, if they really have to provide one. Furthermore, VPN+tor is quickly becoming a necessity.

These users should not defame that shop, if it does not deserve that kind of remarks, but the solution is not to get a paper-pushing cunt along with his brutal idiots to terrorize the entire situation. We need a _decentralized_ legal system, not one that centralizes its corruption under the custody of a bunch of depraved politicians who have long learned how to game the election system, which is now fully broken. The broken and backdoored election system no longer justifies anything at all, if it ever has.</comment>


Coronavirus: Israel to impose three-week national lockdown - <AUTHOR> https://www.bbc.com/news/world-middle-east-54134869 <comment> just-juan-post So what's the endgame for these lockdowns?

<comment><USER2> destroying the normal fabric of society, encouraging agoraphobia, doom-porn</comment></comment>


Analyze Git repositories with pandas: git-pandas - <AUTHOR> http://www.willmcginnis.com/2015/12/25/git-pandas-v0-0-5-coverage-py-risk/ <comment><USER2> :( I was hoping for visualizations based on cute black and white bears.

<comment><AUTHOR> I'm not proud of the amount of time I just spent searching for a picture of panda bear on github to use in an example. I was not successful.</comment></comment>


Don Knuth: Computer-drawn Flowcharts (1963) - <AUTHOR> http://portal.acm.org/citation.cfm?id=367620

<comment><USER2> I have to pay to view an article from 1963?

<comment><USER3> The sad cages scientific literature is kept in. Universities buy bulk access, that's where those sites get their money, they don't really care about anyone else.

</comment></comment><comment><USER4> Random note from the paper: anyone else notice how the programmer is assumed to be a man? 1963, sure, it's ok. But I was still a little amazed.

<comment><USER5> It's probably less assuming that a _programmer_ is male, and more the fact that, at the time, "he" was well-accepted as a gender-neutral pronoun:

<http://en.wikipedia.org/wiki/Gender-neutral_pronoun></comment></comment>


A social game based on Game of Thrones - <AUTHOR> http://grrm.livejournal.com/280977.html

<comment><USER2> If they release some sort of Ultima VII kind of game in the world of GoT this might be the first time I'll give a facebook game a try.</comment>


Why receiving compliments can feel like a high price to pay - <AUTHOR> https://aeon.co/opinions/why-receiving-compliments-can-feel-like-a-high-price-to-pay <comment><USER2> I am one of the few people who do not feel bound by social protocol. Peer pressure and the like have no influence on my actions. As a result of this, my actions contain meaning.

Often I find human interaction redundant and so rely on written protocols (such as the one I shall paste below) for day to day interaction.

This is the human equivalent of the initial pings between two modems.

-Hi, how are you? [Hi, I am a human being and I acknowledge that you seem to be one, too. I suggest that we use SP (Social Protocol) for our further communication.]

-Fine, thank you. How are you? [Hi, I am also a human being , and I have a functioning installation of SP and am ready to commence communication. Please verify that we have successfully set up an SC (Social Connection).]

-I'm just fine. [SC confirmed. Awaiting further communication.]</comment>


Marketing team brainstorms Facebook app launch (video) - <AUTHOR> http://www.youtube.com/watch?v=C8gG32yMy3Q&eurl=http%3A%2F%2Fmarkmaunder%2Ecom%2F2007%2Fmarketing%2Dteam%2Dbrainstorms%2Dfacebook%2Dapp%2Dlaunch%2Dvid%2F Jobster's CEO Jason Goldberg sent me this vid this morning. It's an inside look at their marketing team brainstorming the launch of their new Facebook application. Jobster has received around $48 Million in funding.<p>I'm curious what your thoughts are on the brainstorming process and the ideas they're throwing around. Let me know.

<comment><USER2> Wow. Somewhere in the world, Paul Graham is weeping. Not once did they talk about what Facebook users WANT or how to give value to them.</comment>


8 Question Survey on Phone Loss, Will Post Results - <AUTHOR> http://www.surveymonkey.com/s/B9RL6R7

<comment><USER2> About half of the questions in this survey seem to rely on prior knowledge of PhoneHalo. Is that something most people are going to have?

<comment><AUTHOR> The survey gains general statistics about loss and then is geared to help us fine tune our marketing. I am hoping that seeing some real world process of a company trying to fine tune their marketing will help other HNers fine tune their marketing as well

<comment><USER3> True, but the second half of the questions require me to know exactly what a PhoneHalo is / does, as well as some specifics about pricing. So I did have trouble answering those, which may skew your data.

Having said that, I generally don't lose stuff, and I don't have a smartphone, so I'm hardly target market.

</comment></comment></comment><comment><AUTHOR> Please help us out, we're trying to get user feedback for our start up. I'll make all the data public in a post on HN.

Thanks HN, Chris</comment>


Hacker News Redesign - <AUTHOR> http://jsbin.com/icopaz/2

<comment><USER2> One of the things I like about the existing Hacker News design is that it's simple and very easy to read. Your redesign uses smaller fonts, which, in my opinion, is definitely not an improvement.

<comment><USER3> Support this statement! Design that sacrifices content for sake of nice looking white-spaces can be used only on personal pages that nobody reads.

<comment><USER4> Whitespace doesn't exist just for the sake of being pretty. At least to me I find this mockup much more readable than the current design, as the space between links clearly separates them. This makes it much easier to read their titles.

<comment><AUTHOR> I agree. My intention is to use white space to separate things, vs lines or other graphical distractions. Having said that, I still need to work on the list part of the design.

</comment></comment></comment></comment><comment><USER5> Any redesign should make the voting buttons significantly larger. It is really hard to hit them on a tablet.

<comment> james-skemp Agreed. Having feedback that the vote counted would be helpful as well. When I was getting used to my new tablet I'd select them, so they'd vanish, but moving or touching elsewhere would show the buttons again. Odd.

</comment></comment><comment><USER6> hard to call it a redesign when it doesn't solve any problems.

<comment><USER7> It does by making important elements stand out (such as author, comments...). Bigger arrow which is sometimes tricky to hit.

The colors kinda kills the eyes though.

<comment><USER8> Author (submitter, really) and comments are the last two things I care about.

<comment><USER9> Yes, the nice thing about HN is the de-emphasis of the submitter...the content should stand on its own, not on the authority of whoever submitted it.

Number of upvotes is also irrelevant to emphasize. This attribute is inherently reflected in the vertical position of the item.

Edit: oops, OP did not emphasize upvotes. I'm ambivalent about holding number of comments...again, the number of them can mean several conflicting things

</comment></comment></comment></comment><comment><USER10> I usually visit <http://hckrnews.com>, I like the clean design there... But yours is a nice effort

<comment><USER11> My favourite too, simple, clean, and shows everything in an order that makes more sense. The latest changes to the site were excellent improvements as well!

</comment></comment><comment><USER12> I use this chrome extension: [https://chrome.google.com/webstore/detail/hackernew/lgoghlnd...](https://chrome.google.com/webstore/detail/hackernew/lgoghlndihpmbbgmbpjohilcphbfhddd)

It's probably not the prettiest but I like it.

<comment><USER13> What I like about this extension over the OPs proposal is that it gives emphasis to the title, not the metadata like author and comments. The font family and size choices are much better as well.

</comment></comment><comment><USER14> For those on a wide-screen monitor, it would be nice if you used all of the empty real estate on the right. Move everything up to a single line and take what is currently your second-line content (comments, vote count, etc) and push it all the way to the right. It'll make it a lot easier to scan the headlines. For mobile devices you could always revert back to the stacked approach.

<http://i.imgur.com/in4x0Im.png>

<comment><USER15> While this might look nicer, it's solving one problem by creating another, and in my opinion larger, problem.

The problem when it comes to listings is that information needs to be easily scannable. The information to be scanned usually has a certain hierarchy, so there has to be a separation that reflects this hierarchy. If you use your solution, you favour optimal separation while sacrificing scanability.

This is not exactly a straight-forward problem to solve because the hierarchy is different for everyone. But one thing we can all agree on is that the title is at the very top of it. So, having the title in a bigger font-size, maybe bold, but definitely more contrasted as the stuff around it goes without saying. So the current HN style is not that far off the mark, though I think it could do with less data and/or more whitespace, to counter the "gray haze syndrome".

A straightforward fix for this meta-data clutter would be to make it collapsable, you could then show it in a tooltip on hover for example. Or make it collapsable on a per story basis to cater for tablet/phone users.

</comment></comment><comment><USER16> Why did you use Arial narrow in the Header and Footer? In my opinion this looks a bit crammed.

</comment><comment><USER17> This fixes things that really aren't' broken and doesn't even attempt to fix the one big problem hacker news UI has.

The voting buttons are still too small.

</comment><comment><AUTHOR> Wow! I really didn't expect this much attention and feedback! First, I want to say thanks for all the comments!

I designed this last, late California night. So the design isn't finished; this is a first draft.

Obviously the posts themselves are an issue. I didn't put much attention to the posts. I'll do that. Some of the feedback I got on it were: 1. Larger vote buttons. 2. Less contrast (too hard on the eyes). 3. Too much white space, a little too small of text. 4. Focus on title, not author.

Some other feedback I got was on the orange color. I pulled this straight from HN's header bar. I guess because the bar is taller that the color is brighter. I need to think about if it's the color or the surrounding elements that make it feel this way.

Keep up the commenting and feedback. I'm not finished here yet. I really liked the HackerWeb design, but it's too narrow; it feels like a mobile app. I'll pull some inspiration from there, but I really want to bring the design back to a "hacker" feel. So stay tooned!

</comment><comment><USER18> Personally I prefer the HackerNew Chrome extension. Really big links on the frontpage and collapsible comments: [https://chrome.google.com/webstore/detail/hackernew/lgoghlnd...](https://chrome.google.com/webstore/detail/hackernew/lgoghlndihpmbbgmbpjohilcphbfhddd)

<comment><USER19> Oh wow, I'd always found myself wanting collapsable comments, this is nice.

Only thing is now for some reason chrome isn't displaying urls at the bottom of the page when I hover over links?

<comment><USER18> > Only thing is now for some reason chrome isn't displaying urls at the bottom > of the page when I hover over links?

That's weird, probably on your end as it works fine for me.

</comment></comment></comment><comment><USER20> The problem is that if you go for a clean (read: white-heavy) design, then you end up with black text on white background. I prefer the classic HN purely because it is (to me) a bit milder on the eye. Kudos for trying though.

</comment><comment><AUTHOR> I designed a slightly new Hacker News. Comment and let me know what you think.

</comment><comment><USER21> I love the classic design :)

<comment><USER22> Me, too. I hope it never goes away in favour of flavour-of-the-month web design.

There's just enough space between articles and a ton of stuff fits on the screen at once. If it's not to your liking, there's a ton of alternative HN design services out there you can use.

</comment></comment><comment><USER23> There have been and will be many redesigns attempts of HN, when it actually doesn't need one. I wrote about it [1]. HN's design isn't neutral. It carries a message that is bigger than purely graphical appeal. Some UI elements could possibly be improved but these issues are probably too insignificant to spawn a whole redesign process that would impair HN's great usability.

[1] <http://jgthms.com/why-hn-doesnt-need-a-redesign.html>

</comment><comment><USER24> This is how I use HN: <http://i.imgur.com/IRzF5LQ.png>

Browser: Chromium, Extension: "HipsterNews" -> [https://chrome.google.com/webstore/detail/hipsternews/midncc...](https://chrome.google.com/webstore/detail/hipsternews/midnccdcbhikpniledkdhojbhdnkkkdb)

It's a copy of news.layervault.com, which copied news.yc in the first place. I'm sure there is some sort of joke in there somewhere.

</comment><comment><USER25> I think larger fonts with more spacing in the list would be more readable:

<http://jsbin.com/ucupox/1/>

</comment><comment><USER26> I kinda prefer <http://cheeaun.github.com/hackerweb/#/> though.

</comment><comment><USER27> The orange at the top seems way too bright and the fonts are a tad small in my opinion.

I switched to Hacker News Enhancement Suite [https://chrome.google.com/webstore/detail/hacker-news- enhanc...](https://chrome.google.com/webstore/detail/hacker-news- enhancement-s/bappiabcodbpphnojdiaddhnilfnjmpm)

</comment><comment><USER28> This is my hn: <http://jsbin.com/aronar/1>. It uses my stylesheet from: [https://raw.github.com/bjourne/readable- userstyles/master/ha...](https://raw.github.com/bjourne/readable- userstyles/master/hackernews.css)

</comment><comment><USER29> I prefer bigger fonts. I also prefer off-white backgrounds and dark fonts, but still keeping high contrast. High contrast is good, but this is a bit much.

I really like the way it fits in my narrow browser window! Many redesigns don't.

And I like the bigger upvote button.

</comment><comment><USER30> I prefer <http://lessmeme.com/less.html>

</comment><comment><USER31> Same but different. And ugly?!

</comment><comment><USER32> Looks good, I think fonts are too narrow. author name can be greyed out.

</comment><comment><USER33> HN has a really nice hacker-ish design feel to it already so it's great. Just that it is not very tablet and mobile friendly with the really small buttons.

</comment><comment><AUTHOR> I'm going to design this thing into a Github page, but I need to get HN feed data. Could someone comment on where I could get HN data through an API?

</comment><comment><USER34> A bit too much spacing for my liking, though maybe I am just pissed that google chrome new design has everything very separated at the moment.

</comment><comment><USER35> Really like it visually, but I don't think there's enough attention on the actual titles. The eye doesn't catch the titles enough.

</comment><comment><USER36> This is how I use it: <http://i.imgur.com/uwKcrn5.png>

<comment><USER37> This one is better. But still two things remain: 1\. the font is a little tad too big by my preference. 2\. The orange is a little too bright.

It seems this is editable, I will check back later to add my perception of HN.

</comment></comment><comment><USER38> Zooming in breaks the layout.

<comment> james-skemp Perhaps related, on a Nexus 7 titles that wrap cause the comments line to lose their indentation.

</comment></comment><comment><USER39> pretty slick and nice! like it very much. it would be awesome if PG or someone takes time to get your design ported to the real HN :D

</comment><comment><USER40> The the post title type is still too small.

</comment><comment><USER41> Why the obsession with tiny fonts?

</comment><comment><USER42> New version is hard on the eyes.

</comment><comment><USER43> NOOO, it's too bright.</comment>


The perfect language and why Go still isn't it - <AUTHOR> https://www.snazz.xyz/programming/2019/07/31/perfect-language.html <comment><USER2> Well, Go seems to have enabled a new wave of software renaissance - Kubernetes, Docker, you name it - Go seems to have filled the space that Java was too fat for, JavaScript too light for, and C/C++ too difficult/fun-less to use for (which is everything).

After 20 years of coding, and having just recently discovered LISP and learned Clojure, I believe the perfect language will be a Clojure compiled to native with the ease of Go (e.g. w/ similar import system).

One such direction seems to be Carp ([https://github.com/carp- lang/Carp](https://github.com/carp-lang/Carp)), but I haven't tried it yet.

<comment><USER3> > _Well, Go seems to have enabled a new wave of software renaissance - > Kubernetes, Docker, you name it_

Let's name it. I wouldn't call either of these a "software renaissance". Docker is a wrapper on top of Linux kernel containers, and Kubernetes is a 10000 pound gorilla on top (and port of a C++ app, some say even through a Java rewrite/transpile to Go).

Go was just at the peak of being fashionable at the time (and had some basic features not semantics/syntax related like easy static compilation and cross platform-ness) so got adopted by these projects, the same way many new projects now use Rust.

<comment><USER4> Docker is a bad design. It is _monstrously_ overcomplicated for what it does. In historico-aesthetic analogies, it's baroque, not renaissance.

<comment><USER5> And what does it actually give that is new? What does Docker give that you can't get with a normal VM, with Terraform to spin up however many instances that you need? Put an app on an AMI, save it, if you need one instance, or a 1,000 instances, spin them up with Terraform. You get to stick with normal operating systems, such as Linux and Windows. You don't have to learn a bunch of new technologies.

[http://www.smashcompany.com/technology/docker-is-a- dangerous...](http://www.smashcompany.com/technology/docker-is-a-dangerous- gamble-which-we-will-regret)

<comment><USER6> > What does Docker give that you can't get with a normal VM

There is a difference between Linux container (Docker underhood) and full blown Virtual Machine. In case of docker you are not running new operating system, you are just running new processes in different namespace but still using the same kernel. Linux containers are lightweight, you can start them as easy and fast as other processes, without overhead. VM (in most cases) is separate operating system running, which means startup time is different, you have overhead (CPU usage for keeping OS running and all its services, additional RAM usage, additional disk space usage etc) of whole operating system + virtualization overhead (in a lot of cases but can be minimzed).

<comment><USER5> Yes, I know, but what does that give me? When I'm setting up the infrastructure for my company, what can I do with Docker that I can't do more easily with a standard VM and Terraform? In terms of security, isolation, orchestration of services, managing concurrency, I get everything I need with ordinary VMs and Terraform. I don't see what Docker gives me.

</comment></comment></comment></comment></comment></comment><comment><USER7> Every language has flaws. Some of the best languages are those that take existing languages and just throw out some of the bad legacy mistakes, making what's often a slightly different but pretty much objectively "better" language.

For example: Kotlin is a better Java in almost every way.

The problem with almost all such languages is that they aren't different enough from their "parent" languages, meaning they struggle to gain traction. Both D and Kotlin are here.

<comment><USER8> I think Kotlin has also leapfrogged D on this — Google blessing it for Android use and an Android community clearly hoping for something better than an aeons-old version of Java goes a very long way.

The Android success story might just be what the language needs to establish itself enough that it'll become a backend staple too

<comment><USER9> I think Kotlin's future is tied to Android's.

Outside Android there are better options.

On the JVM, just like any other platform, is safer to bet on the systems language of the platform than guest languages with extra debugging layers, tooling and their own wrappers for idiomatic code.

Then Kotlin is trying to stretch too much, meaning that any portable Kotlin code cannot depend on any platform or needs multiple implementations.

Finally Kotlin/Native has special semantics for handling data structures, as it tries to be Swift like, so special care is needed when the code is supposed to be used from Kotlin/Native as well.

<comment><USER10> > Finally Kotlin/Native has special semantics for handling data structures, as > it tries to be Swift like

If you mean Swift's issue with having to use weak references to prevent cycles, Kotlin/Native doesn't do that – they have a cycle collector, so it should behave the same as Kotlin/JVM.

It does have a different threading model though, where you can't share mutable structures between threads. Very recently they've introduced a "relaxed" mode that does allow it, but it's extremely experimental and sounds like it would be slow (since it can't defer updating reference counts).

(Also, what are you referring to with "extra debugging layers, tooling and their own wrappers" for Kotlin on the JVM? I can use IntelliJ + Maven + Spring with either Java or Kotlin. I don't see any extra layers.)

<comment><USER9> Yep, I mean the semantic model for data structures.

Try to call idiomatic Kotlin code from Java and see how it looks like. Specially when co-routines and similar higher level constructs get added, or having to deal with compatibility between Java streams and Kotlin sequences, which don't build on top of Java ones.

When Loom arrives, it will be a similar story, Java proper fibers and Kotlin co-routines and how they might interoperate.

Nothing unique to Kotlin per se, all guest languages happen to have similar bumps. Calling Scala or Clojure from Java leads to similar lists.

Then one is required to buy into JetBrains tooling for Kotlin, and get an additional license for Clion as means to have a graphical debugger for Kotlin/Native.

There is an Eclipse plug-in, which is kind of 2nd tier, and none at all for Netbeans.

With Java it is just ready set go, no matter which IDE, with just one IDE for Java and native, alongside mixed mode debugging (a feature JetBrains doesn't see a value supporting) and not all Java shops are into InteliJ idolatry.

</comment></comment></comment></comment></comment><comment><USER11> Go is actually pretty close to the perfect language to me -- for "general purpose" computing, at least. Sure, it's plain and somewhat boring to write but it doesn't make me that much less productive. Error handling and generics are the only other features that I want, so I'm really looking forward to Go 2, if that ever comes around. I would be happy to see Go declared "feature- complete" at that point, similar to Elixir [1].

But even then, if I want to have fun and feel like I'm learning new things while I code, I'll always use something else that's more interesting.

[1]: [https://elixir- lang.org/blog/2019/06/24/elixir-v1-9-0-releas...](https://elixir- lang.org/blog/2019/06/24/elixir-v1-9-0-released/)

</comment><comment><USER12> Go and Rust are the latest languages I started to use. Neither is perfect, both are awesome, but more importantly, both are a step forward, both get a lot of things very right, and for the rest, most are at least acceptable. When I code, most of my frustrating moments come from underlying problems with cross compatibility, access to hardware, graphics, encodings, etc, which are rarely problems caused by languages themselves.

We are pretty new at this, we are still trying to figure out a lot of things. We are still experimenting a lot with many features. But step by step, new language after new language, we keep improving.

Trying to be realist tends to be a painful exercise, but in the case of programming languages, I think the situation is looking pretty good. There might be a billion paths left to explore, but at least the ones we are exploring are bringing something useful to the table. I hope we soon start writing articles titled "the perfect languages and the exciting ways we are getting closer to them". The article was pretty good, by the way.

<comment><USER13> Go has some great 'under the hood' features, ie ones provided by its runtime, but man the language syntax makes it really annoying to take advantage of them. The sweet spot for me would be something between Go and Rust, ie a language with generics, algebraic data types, pattern matching, garbage collection, good concurrency primitives with a good work stealing scheduler.

So I'm basically asking for OCaml with multithreading.

<comment><USER14> In case you haven't heard of it, you should check out Pony ([https://www.ponylang.io/](https://www.ponylang.io/)). It's definitely got its own flair, but characteristically it's a lot like what you describe.

</comment></comment></comment><comment><USER15> Wait... We must having different definition of perfect. I would say Go is a very good language, and probably be one of the best in terms of simple and practical design, fast execution, fast compilation etc.

The perfection, however, is not something Go never meant to be. The perfect language possibly support fully dependent type like Idris while maintains zero abstraction cost like Rust, having precise syntax rule like Lisp, and a powerful runtime like Erlang, and the list goes on.

The success of Go lies in it's trade-offs, the designers are opinionated, knowing well what they want and what they don't, and executes things well in the implementation.

<comment><USER16> Zig might become the perfect language, assuming OOP is not must-have :-)

[https://ziglang.org/](https://ziglang.org/)

<comment><USER17> But it has pointless semicolons. No, thanks. ;-)

<comment><USER18> golang puts semicolons behind the scenes anyway, resulting in bizarre behaviors like not being able to write braces that follow "if" or "for" on separate lines.

<comment><USER17> It's not "bizarre", just a tradeoff explained here: [https://golang.org/doc/faq#semicolons](https://golang.org/doc/faq#semicolons)

If they thought it mattered much, they'd change it... But since the code should be formatted correctly always, it's not necessary.

</comment></comment></comment></comment></comment><comment><USER19> Every time I've tried to write some go, I've always started reaching for some things that aren't there (essentially generics). I'm looking forward to go 2.0 and hope the inclusion of generics will make it more pleasant to write.

Also, while it's said comically often in HN comments, Rust (and particularly the iterator api) is very pleasing to write. I'd say it sits in quite a sweet spot language-wise.

Context, I'm a C++ programmer who had been writing in dynamic languages for the last couple of years.

<comment><USER20> Curious about your use cases for generics. I write a lot of Go and don't often find myself missing generics. I also used to write a good deal of C++ and didn't find myself often needing templates either.

<comment><USER21> How often do you find yourself writing or using `interface{}`? It's littered all over the go code I've seen, including the standard library.

`interface{}` is the equivalent to using `Object` in java land. It completely punts on any sort of type safety, relying on the developer to handle messy edge cases correctly. I think one of the only reasons that it hasn't been as severe a problem in go as java is thanks to that explicit error checking that go makes developers do (and that gets so much hate online), forcing developers to consider the case that the type isn't what they assume.

But genetics provide a useful way to safely make those assumptions, and cut down on the boilerplate around them.

<comment><USER22> > It's littered all over the go code I've seen, including the standard > library.

From my experience, interface{} is incredibly uncommon in application code. In _most_ instances where the standard library uses it, it's usually justified because the function in question really accepts literally any type of argument, e.g. json.Marshal() or reflect.TypeOf(). The only counterexample I can think of are sort.Sort() and sort.Slice().

Given all the implications of adding generics to the language, I think Go would be better off just adding the common higher-order list/map manipulation functions to the builtins, i.e. the likes of map(), filter(), maybe reduce().

</comment></comment></comment></comment><comment><USER23> Go isn't the perfect language because it doesn't intend to be. Likely, as this article seems to hint at, there's no such thing and there never will be. Go has a well defined set of design goals (including simple and pragmatic) that it has achieved.

<comment><USER24> > Go has a well defined set of design goals (including simple and pragmatic) > that it has achieved.

If your look how much changes are proposed as part of the Go2 work, I'm not sure the Go developers agree with you.

<comment><USER22> Yet the concrete proposals keep getting shot down or reworked. If anything, this makes me _more_ sure that the Go developers care about their core design goals. They are listening to community feedback, but they don't allow a vocal minority to bury the original vision.

</comment></comment></comment><comment><USER25> Let me break it to you, there _is_ no perfect language, just the ones most general purpose enough to cover most common problems and most suited for your applications. Each language has it own use and one doesn't trump another in terms of functionality or usage, they only compete when they lie in the same paradigm and this is where most language oriented comparisons are drawn whether be it time of execution or performance. This is also why there are more than one language within the same paradigm, as each one tends to have it's own intricacies and features that was solely developed for the purpose of improving upon it's predecessor. So there you are, stuck with more than one language to suit your needs and hence the untenable need for a perfect language.

Also, trying to bend a certain language to adopt features and functionality that are unwarranted for it's use cases is another reason for the criticism some languages draw upon from the community, therefore it's best for the language to stick to what it does best and stop it at that instead of trying to fit in to uses which it was never intended for when it was first developed. But the language itself is agreeable to evolve through time, but to constrain itself to it's actual purpose would be better for both the language and it's users.

</comment><comment><USER9> Languages are software products like everything else, so they either improve to cater for their "customers" and survive against competition, or they wither and die into some kind of maintenance corner.

Even languages that supposedly no one uses like Fortran and Cobol, get their standards revisited every couple of years.

One might not want to re-write that surviving Cobol program into a reactive text UI with a couple of FactoryFactory classes, but it is surely possible as per latest language features.

</comment><comment><USER26> Language can't be small, if it's universal enough. Otherwise you end up with trade-offs for its size, which limit scenarios where that language can be used.

So there is no "perfect" language. All languages have some trade-offs. If you want small - you pay for it.

<comment><USER27> > Language can't be small, if it's universal enough

t, u := x | λx.t | (t u)

Small language (three production rules), definitely universal.

Of course the semantics is a lot more complicated than most people expect. But it IS syntactically very simple

<comment><USER26> Theoretical cases that are unusable in practice aren't interesting in the above context. We are talking about practical languages. It's not about Turing completeness.

<comment><USER27> s := a | (s s)

common lisp syntax. Even simpler, but that shifts much of abstraction capabilities to the operational semantics.

</comment></comment></comment></comment><comment><USER28> There's never going to be a perfect language -- stick with what gets the work done for the situation at hand.

Also make some popcorn and enjoy the Twitter flame wars while you're at it.

</comment><comment> open-source-ux It's a futile quest to find the perfect programming language. Any language that gains popularity will face a vocal demand for new features at some point. But it's not just about adding new concepts. Programmers also want new shortcuts for existing features to save them a few keystrokes. That then entails issuing recommendations on when to use such shortcuts to keep code consistent.

There are plenty of small languages, but they lack popularity or rich libraries. The only language I can think of that remains in widespread use and is fairly small in language size is C.

I'm strongly in the camp that small languages are preferable to large ones and wish language designers would follow this principle more closely. But small does not necessarily mean more readable. And language syntax design remains a neglected aspect of programming language design.

<comment><USER9> Even C is full of features if you compare C11 with K&R C, and C20 is already ongoing.

And if we consider the amount of compiler specific C extensions, across all C implementations, it gets even bigger.

<comment><USER29> [http://www.lysator.liu.se/c/ANSI-C- grammar-y.html](http://www.lysator.liu.se/c/ANSI-C-grammar-y.html) ← 1980's C (429 lines)

[http://www.quut.com/c/ANSI-C-grammar-y-2011.html](http://www.quut.com/c/ANSI- C-grammar-y-2011.html) ← 2010's C (536 lines)

<comment><USER9> What is that supposed to say?

A language grammar is only a tiny part of what makes a programming language.

Compare ISO C pages and C compiler manuals instead.

</comment></comment></comment></comment><comment><USER30> This already exists, but it isn't trendy.

It's FreePascal. Nobody believes me, but we have perfection already. No crap you don't need. No crazy corner cases. No C++ templated metaprogramming lambda auto pointer garbage. No "I can't write a linked list without a Grimoire" Rust.

It's great. You get a ton done, and simply ignore the language wars. No VM trash (Java). No web trash (JavaScript/"Webasm"). No crap.

Try all the others, and try FreePascal. It's old enough that people aren't bolting on stupid shit. The community is awesome. Everybody just gets shit done. There's a lot of art if you go looking, but none of it requires a kilopage book to describe.

<comment><USER9> As much as I like Pascal, and I am a big fan since Turbo Pascal since version 4 for MS-DOS, using all of them until about Delphi 3, lack of some kind of automatic memory management is a killer for anyone that cares about code security.

Delphi only supports it for COM and Objective-c/Swift interoperability, everything else is as manual as TP for MS-DOS, and I bet FP hasn't improved in that regard.

<comment><USER31> Ah, a young lad :) I started tinkering with Turbo Pascal 3 and even have some experience with Pascal on the Apple II. (Not because I am THAT old, but that were the only computers my school had at the end of the 80ies)

The successors of Pascal are also highly interesting. I used Modula-2 quite a lot, but never got deep into Oberon. I do think one big advantage of Go is, that it so strongly draws on the Wirth languages that it almost can be considered a modern successor.

And I fully agree, one shouldn't use a language these days for general programming without some kind of automatic memory management. Which is the other aspect which drew me towards Go, a nice nativley compiled language with a GC.

<comment><USER9> Yeah, quite young indeed. :)

I was initially also drawn into Go, mainly due to its Oberon-2 influence as well. Even did a couple of contribution attempts during pre-v1 days , but they weren't that good anyway.

However back in the Oberon days, what I liked was the evolution that followed suit, Oberon-2, Component Pascal, Active Oberon and finally Zonnon.

As such, I never appreciated the minimalism discussions around Go and not having modern language features. For that we already have Wirth cutting down Oberon features in every Oberon-07 language specification document revision.

Still, I do look forward for some Go 2.0 roadmap items to actually land in Go, and advocate for its use in applications that would be otherwise written in C, if Go wasn't a thing.

And I also collect examples of actual systems work done in Go, regardless of it not being suitable in the opinions of anti-GC crowd.

<comment><USER31> Honestly, I am quite happy with the role of Go as a better C. A lot of applications still get written in C because C++ isn't making things better. And Go has a lot of higher level constructs than C, so it reaches into much further domains than C. Structs with methods and struct inheritance as well as interfaces give a surprising amount of power. Also, having first class functions and closures gives a ton of power C (and even C++) lack. Add to that the great GC, and there are surprisingly few tasks I consider Go unfit for.

I am certainly watching the work on Go 2.0, it is certainly worth to continue working on enhancing the language, but I am very happy how carefully it is done as adding too much complexity to the language would be detrimental. There are only a very few things I miss generics for and usually they can be worked around.

I might have to add the disclaimer, that my paying job is mainly about programming in Lisp, so for me there is a high-level alternative to Go, but this also shows me how Go is a great solution for a lot of problems.

</comment></comment></comment></comment></comment><comment><USER32> F# hits all his 'perfect language' points for me. It feels like a more concise, opinionated and beautiful refinement of C#.

<comment><USER33> I really like F#, but it has a few major pain points that hinder adoption:

The first is that once a user reads over the various functional things like let statements, record types, union types...etc, you still don't really know how to code in F# unless you already have a .NET and in particular C# background. Nearly all the documentation and books (I have 3 of them) assume you're a C# dev making the switch. This is similar to learning Clojure/Kotlin/Scala on the JVM without knowing any Java. Everytime I post this someone tells me that is untrue, so I give it another shot and an dissapointed. With Python, there are dozens of books written for beginners that show you the building blocks (lists, control flow, dictionaries, tuples, functions, classes, file IO...etc) and how to use the blocks to build useful programs. With F# you get three sentences in and then hear how this is just like this thing in C# that I also know nothing about.

Microsoft also seems to not be very dedicated to providing F# tooling support.

On the plus side, I've found the community to be super smart and helpful and the language itself is very beautiful from an aesthetics point of view to me somehow (just looking at a bunch of code ). In comparison to C#, there is sooo much less noise (); everywhere.

Go is a pretty simple language that compiles to static binaries. F# ain't that as there is all the bloat and baggage of .NET. Even with .NET core, that is more confusion for me.

<comment><USER32> You are not wrong. In fact I would argue it would be very hard to learn F# without knowing C# even if resources did not assume you did, since one of F#'s major strengths is the ability to use the entire .NET ecosystem just like Clojure as you said, and the .NET ecosystem is written for C# semantics (usable from F# but generally with some slight syntax switching).

On the tooling front, Microsoft include it as a prime language with C# and VB.NET in dotnet core, and ship F# tools with their latest IDEs, which I appreciate and is almost more than I would expect, since their flagship is C#. It would be nice if it was better, but that would require it to be a lot more popular which is fair enough.

Static binaries are something that would be real nice. I've done it with F# using CoreRT, but its certainly not as simple as Go.

<comment><USER9> Not really prime still, not even on .NET Core, there are several VS tools that only work with C# and VB.NET.

CLR is multiple language runtime and actually the only language that has full control over all possible bytecodes is C++/CLI, not C#.

CoreRT is on its way out, going to be replaced by Crossgen.

They did a talk on AOT compilation at Java Language Summit last week.

</comment></comment></comment></comment><comment><USER34> The perfect language is the one humans won't have to write.

</comment><comment><USER35> Go isn't even close. It has an interesting runtime though.

</comment><comment><USER36> One of Go's strength is the opinionated nature that makes it easy for me as a developer to read and understand other's code. It's trivial to jump into the implementation of the standard API to see how things work.

<comment><USER37> Simple things like gofmt have helped enormously. Leaving out exceptions and templates have made the code harder to write (for me at least) but easier to read. It's the code equivalent of "schema on write."

</comment></comment><comment><USER38> The frustrating thing about Go for me is that it lacks generics but is strictly typed, which encourages the passing of empty interfaces which can cause problems at runtime. You have to be very careful about storing all your data properly in structs or you face a big foot gun.

Which, like, fair enough. It's not perfect. But it's still really really good. I mean, people still use Java...

<comment><USER39> The alternative approach here would be to gernerate code for things that need genetics rather than using empty interface. Of course as with all things there are trade-offs... as there will be if/when generics are introduced.

</comment></comment><comment><USER40> I really like Go (and Rust) and would like a job as its main language. However I don't have enough experience with the language, anyone know the job market and recommend a path or should I give up? I don't have time to spend a few hours/wk just to learn enough to get experience.

<comment><USER41> Usually, people start building demo's or other side projects at their main job using whatever new tech they want to pad to their resume. This is bad for the company and your coworkers, but for people jumping ship every 2-3 years leaving a mess has few downsides.

A more ethical approach is to simply learn at work during downtime over browsing the web. It even looks like work, so few people complain.

<comment><USER42> Building demos to pad your resume is bad for the company, but building demos to achieve unmet business needs is good for the company, and usually there are plenty of those lying around.

<comment><USER43> What I've noticed is in a lot of big enterprise shops that are playing "Agile" there is a big gap in support/tooling software; that is, software that makes developers more productive by automating repetitive tasks. Since this type of software doesn't exist to management because it won't fit nicely onto a Jira board or it can't be bent to fit a specific OKR, it's the perfect type of software to explore other languages.

<comment><USER42> Yes! It's also software that matters very little if you can't get a good support story for it - it's not customer facing and there are no SLAs, so worst case, everyone's automation fails but they can still get their job done. If you want to build a CLI for handling code reviews or an automated bisection tool using OCaml on a Raspberry Pi or whatever, that's way more acceptable than building customer-facing software (either services or shipped software) using OCaml on a Raspberry Pi.

Also, writing this type type of software makes you an _actual_ 10x engineer (by making 10 other engineers more productive).

</comment></comment></comment></comment></comment><comment><USER44> I feel like a variation of these steps could describe a lot of software in general, across industries.

</comment><comment><USER45> There is no such thing as perfect. Good is good enough. Go is good for a lot of things.

</comment><comment><USER46> I think Go could be fundamentally improved if it somehow offered a REPL.

<comment><USER47> So you're at step 3?

<comment><USER48> From the article? Not at all. It doesn't matter if it's easy or difficult, because it only needs to be coded once. And it's not a request to change the language at all, just the tooling.

<comment><USER49> I don't really understand how a REPL would help with coding Go. I think I use tests to do what I think people use REPLs for, and I don't get why I'd change that to a REPL if I could - having those tests permanent is a good thing.

What would a REPL bring to the party?

<comment><USER50> A REPL allows you to work in real-time with the system as it's written.

It's nothing like unit testing. It's like running around in the system able to poke-prod things as you go.

Particularly important is that it doesn't mean working in a console. Most REPL-based dev is done in the source code file itself, and you send code from the document to the REPL process. Code is written in a file as usual, and you utilize the REPL to massage the system as you want.

Though it's Clojure-based, you might want to watch this talk: [https://vimeo.com/223309989](https://vimeo.com/223309989)

<comment><USER49> yeah that would be interesting to try out, thanks for the link :)

I meant that I use tests as a way of poke-prodding things - because Go compiles so fast, and you can run individual tests, it's easy to tool around in test code setting up specific state in code and seeing what happens.

</comment></comment></comment></comment></comment></comment><comment><USER51>
        When someone says "I want a programming language
        in which I need only say what I wish done,"
        give him a lollipop.

           - alan-j-perlis

<comment><USER3> Nobody says that in the post or in this thread though...

</comment></comment><comment><USER52> There will never be a perfect language until there is a perfect programmer.

</comment><comment> dis-sys Go never intended to be perfect, it made no claim to be perfect. When people still write long articles explaining why Go is not perfect, for me, it is pretty strong indication that Go is actually pretty close to be perfect.

<comment><USER48> You know people write long articles explaining why PHP is not perfect, right?

<comment><USER53> "It's the economy, stupid", said a former US President.

It's the economic attributes of a language that contribute to its market share. Go is a very good language from an economic point of view. (Java was also a remarkably good language, from an economic point of view.)

As to the your specific point, I suggest a sufficiently large slice of software workers will include the sub-set that write long articles defending their theoretically so-so but economically superior languages: Those blog posts are a feature, not a bug, of economically viable programming languages.

The bottom line is no one has proven that "the bottom line" is positively affected by use of sophisticated languages. The killer app of ho-hum languages is their _demonstrated_ economic value.

<comment><USER48> PHP has a couple attributes that make it easy to start using and deploy, and a massive pile of network effects.

Those attributes have nothing to do with why it's a garbage fire, and 'sophistication' also has nothing to do with it. You could redo PHP to be equally sophisticated, and still have the things that make it popular, but also be a hundred times more consistent and less buggy. Heck, fixing refs and inconsistent syntax could make it _less_ sophisticated.

At least they've been fixing some of it...</comment></comment></comment></comment>


Munchery swindled a group of women and minority owned companies out of over $50k - <AUTHOR> https://medium.com/@lenoreestrada/munchery-how-a-venture-backed-startup-swindled-a-group-of-women-and-minority-owned-companies-out-e64ee610511b <comment><USER2> When companies go under, some people are left holding the bag. It's part of business. This risk (terms) has brought many a business down. It sucks, but it should not be a surprise. Take no risk and make no money.

Lesson, you win some, you lose some.

There's nothing personal in it. Complaining about it makes as much sense as being embarrassed to make a profit.

<comment><USER3> Munchery could have done much better here on at least two counts.

1) Letting their vendors know that they are shutting down (Munchery didn't even send an email to their vendors, but they did to their customers as mentioned in the article).

2) As part of 1), cancelling existing orders with existing vendors.

<comment><USER4> According to several former employees, Munchery also stiffed vendors in LA and Seattle when they shut down there years ago. Some of them have still not been paid, even though Munchery raised more money and continued to operate in San Francisco. A vendor in LA was owed 150k, Munchery agreed to a payment plan, and then just stopped paying when they still owed 100k. This is a pattern of not paying bills and continuing to rack up debts without the money to pay it off. The companies that delivered their goods to Munchery as promised shouldn't have to pay for Munchery's dishonesty and poor management.

</comment></comment></comment><comment><USER5> I fail to see how the gender or ethnicity of the company owners is relevant here. Would Munchery's behavior be okay if it was about a bakery owned by three white men?

<comment><USER3> Direct quote from the article: In a particularly damning missive, one person claiming to be a former employee wrote in to describe the systematic refusal to pay small, women-owned businesses as they had fewer resources to fight back.

<comment><USER5> So anonymous hear-say is all there is?

And is the company even small? "Some of our bigger customers purchase up to $15,000/week with us" sounds like they make > $100k revenue/week regularly, baking thousands and thousands of cakes every week. I don't know SF standards of small, but that sounds like a solid operation to me - one that definitely has the resources to go after a corporate client that doesn't pay.

I still find it weird to focus on gender/sex and ethnicity, and I have my doubts that Munchery invested a lot of time & money into finding out who is behind the companies they don't pay and what the owners' gender is.

<comment><USER6> Yes, it's clear that you don't believe the woman whose business was impacted, and choose to side with the VC-funded company that stiffed their vendors. You could just say that, rather than pretend to have a bunch of concerns about discourse, and save us all a lot of time.

<comment><USER5> I don't know where I hurt your feelings, but I'm sorry.

</comment></comment></comment></comment></comment><comment><USER7> Ok, so bad for everyone involved. So what the takeaway here? How do you protect yourself as a small business owner from this type of risk?

<comment><USER8> Start by naming and shaming. Its not much but there you go:

* CEO James Beriker

* investors Sherpa Capital and Menlo Ventures

</comment></comment><comment><USER9> It sounds like Munchery was run by morons who should never get the chance to run a company again

<comment><USER10> truly, this should be a privilege and not a right.</comment></comment>


Apple will "take at least several months" to release LLVM backend for 64-bit A7 - <AUTHOR> http://lists.cs.uiuc.edu/pipermail/llvmdev/2013-September/065480.html <comment><USER2> I'm not the biggest Apple fan around, but if this is meant to be some kind of expose of wrongdoing, I completely disagree. First, under the BSD, they're under no obligation to do anything with their improvements to LLVM, which is exactly how supporters of permissive licenses (like me) like it, even though we often also encourage users to contribute back if they can.

Second, although they're under no obligation to contribute back, they're going to do so anyway, because they 1) understand that this is probably in their best interest, and 2) presumably want to help support and foster the LLVM community.

Merging in all this code -- necessarily done in private since it was a confidential company project -- is likely a major undertaking, so they want to be sure to get it right. And yet they're giving the LLVM community heads-up not to spend time working on that particular solved problem.

All in all, nothing to see here.

<comment><USER3> > I'm not the biggest Apple fan around, but if this is meant to be some kind > of expose of wrongdoing, I completely disagree.

Why would you think it is such a thing?

<comment><USER4> Have you read past the first sentence?

</comment></comment></comment><comment><USER5> Nothing to see here.

There is an existing implementation, Apple's implementation and hence it will take at least several months to merge the two, legal sign off and then committed.

<comment><AUTHOR> In the mean-time, the community will be wasting time and effort in trying to solve ARM 64-bit issues which Apple has already solved.

If LLVM were under a copyleft license like the GPL, Apple could still have created it's backend in secret to time its release with the new iPhone.

BSD style licenses leave the community at the mercy of corporate interests. If Apple decides not to release[1] its backend, too bad, and we all play catch- up.

[1] "We're going to the standards bodies, starting tomorrow, and we're going to make FaceTime an open industry standard." Steve Jobs

<comment><USER6> We already have a copyleft compiler, GCC, and under the stewardship of the FSF it has turned into a total mess. The community has been wasting effort for years duplicating issues that have already been solved in GCC because the FSF refused to merge patches that would make it modular. On the other hand, you can download Clang and make your own tools from it now. Go ahead, I dare you to do either of the following:

* Use GCC's C frontend to write a code analysis tool of any sort,

* Write a new frontend to GCC.

FSF's damage to the GCC code base proved that you can still sabotage freedom while adhering to the letter of a copyleft license.

I suspect the KHTML mess is still fresh in the minds of many engineers at Apple.

<comment><USER7> Since 1999, GCC has been under the stewardship of the GCC steering committee[1], not the FSF.

[1]: [http://gcc.gnu.org/steering.html](http://gcc.gnu.org/steering.html)

</comment></comment></comment></comment><comment><USER8> Kudos to Apple for doing the right thing.

It is within Apple's rights to not release the code at all. Or they could have just dumped what they had, warts and all, leaving the mess for other maintainers to sort out. Or they could have plugged away silently, getting ready for a release without notifying anyone (which would have resulted in unnecessary duplication of effort - think Linux on IBM mainframes). What they've done here is the most respectful and responsible thing possible.

<comment><USER9> I'm reading this over and over and still not understanding how withholding source code is "the right thing" and worthy of praise. Either it's an open source toolchain or it's not. Apple's iOS compiler isn't. There's no particular shock there -- the platform it targets certainly isn't open either. We don't freak out when MSVC is released without source. But we don't praise Microsoft either.

Maybe it will be open source some day. If it is, _then_ is the appropriate time to deliver "kudos" \-- certainly not now.

<comment><USER10> The "right thing" is merging it back into LLVM instead of hoarding it in their private repository.

Apple, like many proprietary companies, don't use the public repository for any working branches, so a meticulous and time-consuming merge back into the trunk (which will have changed on its own in the meantime) is required.

Additionally, since large companies like Apple tend to be magnets for lawsuits, everything the company publishes (even in open-source code repositories) may need to be reviewed by lawyers (or at least more senior engineers) to make sure there's no plagiarism, accidental inclusion of privately licensed code or leaking of confidential information.

<comment><USER9> Sure. But the "right thing" hasn't been done yet, so why are we sitting here praising (!) Apple for not having done it yet?

This is the kind of stockholm syndrome that drives me crazy in the iOS world. People have internalized that Apple is a "good guy" that supports open source projects and uses an open source compiler, so suddenly when they don't there is this need to rationalize the behavior. Just stop.

They shipped a closed source compiler. That's not immoral but it's not praiseworthy either. They promise it will be open in the future, and I trust that the developers are sincere (though often management has other priorities attached to their time). When it happens, that's when you should praise. Doing it now is just encouraging poor development practices.

And let's be clear: from the perspective of open source this is poor practice. It certainly doesn't have to be this way. Itanium and x86_64 both had working gcc implementations _months to years_ in advance of hardware availability. ARM did their part releasing the specs (again, well over a year ago). On the other side of the fence Linaro et. al. have done great work porting gcc to the architecture.

But LLVM/clang doesn't support it yet, because the implementation is an Apple- proprietary closed source compiler. To repeat: very much not praiseworthy.

</comment></comment></comment></comment><comment><USER11> Must be a significant fork and/or the code is not "pretty". No one wants to embarrass themselves and they probably have to peer review it, etc. All with managers breathing down their necks :D

<comment><USER12> I guess they kept it secret because no-one has a 64-bit embedded cpu.

<comment><USER13> It seems obvious that they kept it secret because if Apple had been pushing out improvements to the ARM64 code generator for the past months, someone would have connected the dots and understood they were building an ARM64 device.

All Chris Lattner's message is saying is that Apple's contributions here are subject to the same process as anyone else, namely incremental commits with community review.

<comment><USER14> >It seems obvious that they kept it secret because if Apple had been pushing out improvements to the ARM64 code generator for the past months, someone would have connected the dots and understood they were building an ARM64 device.

Existing high end mobile devices have on the order of 2GB of memory. It doesn't take a genius to work out that they're soon going to have 4GB or more and hit the ceiling of a 32-bit address space. Why bother keeping a secret something the entire market already knows is going to happen in short order?

<comment><USER15> Because the timing between "when that information comes out" and "when apple have something to show that people can buy" greatly affects their stock price.

</comment></comment></comment></comment></comment><comment><USER16> Reminds me when Darwin (Leopard days) went to x86 and the sources of Darwin were stale for a very long time</comment>


Ask HN: Has anyone who applied late to YC12 received a reply? - <AUTHOR>

Seen a few people have gotten rejection/interview emails this evening.<p>Has anyone who applied late heard back yet? <comment><USER2> I am waiting as well.</comment>


Ask HN: What are the best resources for hackers? - <AUTHOR> best programming languages, scripts, tools, tutorials... <comment><USER2> My answer assumes that you are using the term 'hacker' in the context of security, as you mention '...programming languages, scripts, tools, tutorials'. I teach CyberSecurity to a variety of age groups. We offer our students access to a list of resources, including reading material, blogs, and hands-on labs and activities; you can find this growing list here: [http://www.exeltek.net/accesscyber](http://www.exeltek.net/accesscyber)

Happy Hacking, stay out of trouble.</comment>


Harper Lee estate no longer allows inexpensive edition of to Kill a Mockingbird - <AUTHOR> http://www.nytimes.com/2016/03/12/business/media/mass-market-edition-of-to-kill-a-mockingbird-to-end.html <comment><USER2> It's a good thing we have functionally perpetual copyright. I'm sure this will encourage Harper Lee to write more books.

</comment><comment><USER3> It seems telling that they waited until she died.

</comment><comment><USER4> If the term of copyright wasn't life + 70 years then this wouldn't have happened.</comment>


Tim Bray on Unicode: is UTF-8 a racist kludge or a stroke of genius? - <AUTHOR> http://www.tbray.org/ongoing/When/200x/2003/04/26/UTF <comment><USER2> Yep, classic. Joel's also (<http://www.joelonsoftware.com/articles/Unicode.html>), which has a slightly different focus.

I prefer Tim's, it's clearer.

</comment><comment><USER3> Old but important to read.</comment>


Ask HN: Why do programming languages have their own package managers? - <AUTHOR> With python I have run into issues where I have multiple packages lying around, those installed by the OS's package manager and those installed by pip of another python.
With node I have always had to install a newer version than that installed by the OS.
ROS seems to take this even further. There is a ros-kinetic-, ros-melodic- series of packages each for a specific Ubuntu release.
There is also perl's CPAN.
OCaml had not one but 2 package managers I think and the only package set that seems to work is that is the default OS install. The others apparently stay up to speed with ocaml updates.
What are possible solutions/workarounds, if at all this is seen as a problem? <comment><USER2> Why do programming languages have their own package managers?

To simplify dependency management. Most popular and useful programming languages will have a community that creates useful libraries and frameworks that enable a developer to quickly build a solution to common problems or use cases. In many cases these libraries and frameworks will rely on other, lower- level libraries that provide specific functionality. This quickly results in a dependency tree since version X of the higher-level library or framework depends on version Y of lower-level library A and version Z of lower-level library B. Many programming languages simplify dependency management by allowing the programming to declare a dependency on version X of the higher- level library and the transitive dependencies for lower-level libraries A and B are automatically resolved and downloaded.

In the case of python and perl, many operating systems use these scripting languages to power system-level scripts and utilities. This means that parts of operating system are dependent on specific versions of the scripting languages. Historically, that meant that you were stuck with that version of the scripting language and could install packages into the system-wide package directories and use them. Some operating systems (e.g. Debian) include many programming language libraries as _operating system_ packages, effectively bypassing the programming language package management mechanisms. This makes a lot of sense for programming languages that have a strong dependency on the operating system's underlying C libraries. Some of the programming languages have version selection mechanisms that let you install multiple versions of the programming language side-by-side.

More recently, some operating systems have began to separate the operating system's scripting language install from the newer versions of the scripting language that are intended for application development. For example: [https://www.redhat.com/en/resources/red-hat-software- collect...](https://www.redhat.com/en/resources/red-hat-software- collections?source=searchresultlisting&page=1) This decouples the operating system dependencies from software development tools in an effort to prevent the mess that results from having the operating system and programming environment use the same libraries in an ad-hoc way. See [https://xkcd.com/1987/](https://xkcd.com/1987/) for a humorous take on the mess that can result if there is not a clean division between operating system scripting language libraries and programming environment language libraries.

<comment><AUTHOR> Ok, didn't realize that those installed by the OS were for the OS itself and not for the benefit of developers :p. Thanks and yes the xkcd drawing says it all.

<comment><USER2> Well, historically they were one and the same: for the OS and for development. However with that setup, problems arise if the developer wants / needs to use libraries or frameworks that conflict with what the OS needs or offers.

Part of the reason that containers have become so popular / useful is isolation of the OS and "infrastructure" from the development or production space.

<comment><AUTHOR> Yes, this is another useful insight. Containers suddenly make a lot more sense to me now.</comment></comment></comment></comment>


Build a web service with F# and .NET Core 2.0 - <AUTHOR> https://blogs.msdn.microsoft.com/dotnet/2017/09/26/build-a-web-service-with-f-and-net-core-2-0/ <comment><USER2> Look I'm no ML engineer or even a data scientist, I'm much closer to PS/VBS/AutoIT land, writing C# Console Applications for really complicated stuff and/or exposing helper methods via a simple web service, but I am increasingly liking F# for its pattern-matching and type providers that let me 'lock down' bugs much more than I can in imperative languages. I get that I'm probably misusing F# for general-purpose stuff, but no matter what I like that I can write my helper web-services in F# now and not just C#/VB.

Hopefully F# will become even more mainstream than it is right now.

<comment><USER3> I started out during the Node + JS revolution and I am more than certain I am seeing a similar level of innovation happening in F#. The community is titled towards more mathematicians and scientist, but mainstream adoption is right around the corner.

<comment><USER4> I've been on an ASP.NET Core project full-time for a year. Lately, I find myself wondering "Would it be nicer to write this part in F#?" almost every day.

There's some inertia there simply because I keep thinking that the next person will hate me for forcing F# on them, but it's almost a siren call at this point... I might have to just pull the trigger and commit a .fs file.

<comment><USER5> Author here:

Go for it! Wiring up a new F# project is quite simple:

        dotnet new library -lang F# -o FSLib
        cd CSharpASPNETApp
        dotnet add reference ../FSLib/FSLib.fsproj

There are some templates in the .NET Core SDK for ASP.NET as well, so if folks are wondering if it's possible to use F# with ASP.NET Core, the answer is yes! There's even support for async controller actions using F# async expressions, so there's no need to do some of the more awkward interop between Async and Task.

</comment></comment></comment></comment><comment><USER6> Even though CLI improved with .net core 2.0, am I the only person feeling Interactive F# is missing? I know on Mono its fsharpi, but does .net core even has an equivalent ?

<comment><USER5> Author here:

We haven't completed F# Interactive work for .NET Core yet. There are some big technical problems to solve there, and it's our top priority after we complete full support for the new project types in Visual Studio. Not timeline yet, but a workaround is to use fsharpi (from Mono) on unix or fsi.exe on Windows. Both use the same compiler that you get with .NET Core.

</comment></comment><comment><USER7> What's the recommended way of doing SOA/microservices in .NET world these days? Are people still using WCF mostly? Or is there a clear new winner?

I'm searching for a new stack that will be both easy to work with, yet full of pluggable features if necessary (auth, async and non async channels, etc.). Since WCF is not present in .NET Core (will it ever be?), it would be good to find something solid that will last for as long as WCF did.

<comment><USER8> Azure Service Fabric replaces WCF. It takes all the good parts (like the interface-based programming model, interception pipeline etc.), throws out the unneeded complexity (around bindings, configuration etc.) and comes with built-in service discovery, fail-over, monitoring, deployment with rolling updates, and much more. It also supports the actor model with automatic state replication. Together with Azure Service Bus and CosmosDB it's the best stack for developing real-world .NET SOA systems.

<comment><USER7> That is not open source though, kind of skewed toward cloud deployments too. I need a stack that works perfectly on-premises and does not need additional services or artifacts to deploy. Does ASF meet such requirements?

<comment><USER8> Unfortunately I don't think SF meets your requirements. Even though you can run SF on-premises, this still requires you to install the SF cluster software on the nodes (VMs) that make up the cluster.

<comment><USER7> Another issue is that MS can decide at any moment to withdraw on-prem SF like they did with Service Bus.

</comment></comment></comment></comment></comment><comment><USER9> i wish this was written 3 months ago. Knowing what tools and libs i should use when coding in f sharp to perform a simple crud web api really was frustratingly difficult (for something that should be at the homepage of any server side language).

it made me quit and try a different language (swift), and now i think i'll stay in that boat.

That's too bad, because i really liked the idea of coding in an ML family language.

<comment><USER5> Author here:

Never hurts to give it a try again! Three months ago, .NET Core 2.0 hadn't actually shipped yet. Although it was certainly possible to write these sorts of things on .NET Core 1.0, there was a significant lack of APIs which prevented many people from using .NET Core. Now that 2.0 has been released, I figured it was as good a time as any to push the use of F# for web services.

I'll also be posting next month about using Fable to write "full stack" F# with .NET Core (Fable compiling to JS, F# with the Suave library on the backend). It'll be a bit more involved (docker, deploying to Azure, etc.), so I hope that it's useful to folks. Perhaps after that's posted, you'd be interested in giving it another go?

<comment><USER10> In your opinion could Giraffe shape up to be a serious competitor to Phoenix Framework for mind share? If the F# community could get something like that off the ground I think it would do wonders for the platform.

Also, what's your opinion of Fable vs TypeScript as far as support for interacting with existing libraries? Fable sounds very appealing, however all the momentum behind TypeScript, its type features aimed at typing in-the-wild js code, and the massive defintely typed project are hard to pass over..

<comment><USER11> One of the big strengths of Fable is that it can easily work with existing TypeScript bindings. ts2fable allows you to convert a TypeScript binding to be used with Fable, which allows you to leverage that mindshare easily.

<comment><USER10> I was/am worried about the type gymnastics the TypeScript team has done to support in the wild code not being compatible with systems like scalajs and Fable(F#). Giving it another look now though, it's pretty promising seeing that Alfonso has implemented erased union types and even opened an issue to have them added to F# :)

</comment></comment></comment></comment></comment><comment><USER12> F# _still_ doesn't have UWP support nor is supported by .NET native compiler.

<comment><USER13> F# does not need UWP support since MS have allowed ["desktop bridge" apps]([https://github.com/Microsoft/visualfsharp/issues/1096](https://github.com/Microsoft/visualfsharp/issues/1096)) (which may or may not signal the unofficial death of UWP...).

The .NET native compiler has some issues with handling valid tail recursion MSIL commands IIRC - they're working on it.

F# will always come in second in the MS tooling wars.

Interesting, though, to follow the track record of MS techs that come in first in their tooling wars over the last decade... Maybe being a bit slow on the uptake of the "latest and greatest" EF, or Oslo models, or Silverlight, or WPF, or WCF, or dotnetcores new project format, or UWPs new APIs isn't the worst thing if you want your solutions to be supportable in production for a while.

<comment><USER14> Microsoft is pretty explicit that it is a stop gap to port applications to UWP.

That has been their main message in any presentation about the Desktop Bridge. Always showing how an existing application gets packaged, followed by replacing Win32 legacy features with modern UWP ones.

The track record of other tech giants is not much different, let alone the usual reboots on GNU/Linux desktop stack.

</comment></comment></comment><comment><USER15> Is there a recommended Docker base image that I can use to run F# web services?

<comment><USER3> Any image with mono should be quite sufficient to run a F# Docker app.

Pick any of the following Dockerfiles: [https://hub.docker.com/_/mono/](https://hub.docker.com/_/mono/)

<comment><USER15> Thanks! Are there any based on .NET Core? Not that I have anything against Mono but I'd like to get setup similar to what is described in the article.

<comment><USER16> There are official dotnetcore images.

[https://hub.docker.com/r/microsoft/dotnet/](https://hub.docker.com/r/microsoft/dotnet/)</comment></comment></comment></comment>


Ask HN: What's the best way to do a SV startup tour? - <AUTHOR>

I wasn't able to get Google I/O tickets this year (Google Wallet...) but I've decided to take a trip down to the Bay area (from Canada) and check out the tech scene anyway, probably in mid-May. I'm graduating in a year, so I'd really like to get first-hand look at some of the startups in the area.
Does anyone have advice on how best to do this? I don't know if this is a common or strange request.
Thanks! <comment><USER2> This is a good way to start. Send me an email if you want to chat - <http://andrewcantino.com></comment>


New iPad design LEAKED in video just days before Apple's official reveal - <AUTHOR> https://www.thesun.co.uk/tech/7173451/new-ipad-concept-design-first-look-renders-leaked/ <comment><USER2> Researchers have already shown they can print a mask capable of fooling Face ID and siggraph papers from a decade ago could reconstruct 3d images from a collection of 2d images which means any notable person's Face ID is a Google image search away from being compromised. Touch ID may be fooled 1 in 50k times but Face ID for any public figure (or regular person in police custody) can be fooled or activated against your will 1 in 1 times. Face is an awful idea for a security layer and this new device's supposed lack of Touch ID amounts to a feature regression.</comment>


How does my Python code look? - <AUTHOR> https://github.com/marclave/Jasper-Google-Calendar/blob/master/Calendar.py

<comment><USER2> 1\. badly indented monthDict content (and not only because the four spaces in place of a tab; ending brace should occur in a separate line, if you format like this)

2\. trailing whitespaces in many lines (including, but not limited to, empty lines with whitespaces)

3\. too long lines

4\. bad command line arguments processing (should be optparse or argparse)

5\. bad operation separation (addEvent() being the first example -- too complex, too many things being done on the same level)

6\. string formatting done badly (you should use printf-like formatting instead of string concatenation)

7\. code duplication (getEventsToday() vs. getEventsTomorrow())

<comment><AUTHOR> Thanks for the feedback, i wrote this a month ago over a weekend and looking back now i could have done a lot of things differently..

</comment></comment><comment><USER3> It's not about how it looks, it's about what and how fast it does!

<comment><AUTHOR> Its for an open-source project called Jasper, a voice controlled platform built on the raspberry pi. It allows you to check your google calendar for events and allows you to add an event to your calendar!</comment></comment>