37Signals to retire OpenID for logins on May 1 - <AUTHOR> http://productblog.37signals.com/products/2011/01/well-be-retiring-our-support-of-openid-on-may-1.html <comment><USER2> I think I'm starting to understand 37signals advertising strategy through DHH tweets, that admittedly only works because they have listeners.

      1) Tweet negative/positive questions about x.
      2) Tweet negative/positive observations about x.
      3) Tweet negative/positive observation backed by data about x.
      4) Tweet article about how positive/negative x is on blog.
      5) Take action about positive/negative x.

Usually over the span of a couple days. It feels like you are watching DHH come to the realization that something is good/bad which helps you come to the same realization.

There is nothing wrong with it, and I don't know if its intentional but its super effective.

<comment><USER3> I wish I could brand that as a fancy marketing scheme, but I think the answer is much simpler. It's simply transparent discovery and thinking. If it happens to work as advertising, that's a positive side-effect, but the main dish is coming to good conclusions.

I certainly grew more confident in the decision to dump OpenID after talking with lots and lots of people on Twitter about it. You get to test your ideas, see what the feedback is, tweak, and retry. All while making the decision process public.

<comment><USER4> It's authenticity is what makes it so effective. You share your thoughts in process, and people accompany you on your intellectual journey -- and their feedback helps to shape the conclusion. So it functions as great brand marketing for 37signals: you're the kind of company who takes what people say seriously.

</comment></comment></comment><comment><USER5> Totally understandable, one of the worst executed visions of all times.

I think there's a really huge opportunity in this space, and the first who'll be able to figure out the perfect (and, most importantly, simplest) way to offer a single-sign-on, integrating privacy and security features, will be hugely thanked.

<comment><USER6> "one of the worst executed visions of all times"

What could have been done better?

I spent a couple of years advocating for OpenID adoption, because I believed that the alternative (one or two companies controlling login for the entire Web, ala Microsoft Passport or Facebook Connect) would be a massive blow to the decentralised nature of the internet. I believed that OpenID's usability issues could be resolved if enough smart people got involved in figuring them out.

Clearly I was wrong on that last point.

And yes, my latest project (lanyrd.com) uses Twitter rather than OpenID for authentication. From a developer point of view, that gets me the benefits I hoped for with OpenID (SSO, portable identities, instant contact lists) without having to wait for the world to agree on the standards. I just wish we could have figured out a decentralised solution.

<comment><USER7> _"one of the worst executed visions of all times" What could have been done better?_

I'll tell you what it should look like (the fact that it's impossible is not the point): whenever I land on a site that asks me to login, I get a menu of all my possible accounts, I pick one, and I'm in. End of the story.

Kind of like Dropbox being simple and intuitive when everyone else was building overly complex stuff.

<comment><USER8> Ok, it's impossible. Now tell me how you're going to do it anyway and laugh all the way to the bank.

The fact that you can conceive of it means that it likely isn't impossible, merely very difficult and possibly non-obvious. But that's how pretty much every real success story starts. You really may be on to something here.

<comment><USER9> This could be possible if web browsers (not just web sites) were aware of the standard and participated in the UI flow. Mozilla Labs prototyped something along these lines (not targeted for inclusion in Firefox 4, but possibly for the next release):

[http://hacks.mozilla.org/2010/04/account-manager-coming- to-f...](http://hacks.mozilla.org/2010/04/account-manager-coming-to-firefox/)

</comment></comment></comment></comment></comment><comment><USER10> "Login with Facebook, Login with Twitter" <\- these are your new single sign on providers. I wonder if in the future they'll try to standardize these login providers and the information they share, we can call the new standard Open...something...ID...no...OpenLogin, there we go.

<comment><USER3> I think providing Facebook/Twitter logins for other social media sites make a lot of sense. Want to login to post on Yelp? Done. Want to checkin at 4sq? Gotcha.

But using those services to check into the applications running your business? Fuck no. I'm certainly not going to let anyone depend on their ability to get paying work done by whether Twitter is up or not. And I know of plenty of people who aren't interested in mixing their private-life Facebook with their work-life accounts.

Then of course there's Google. I'd be weary to let a large number of customers be owned by that Gorilla.

OpenID was promising because it was an open standard, not controlled by any one party. But unfortunately it had the usability of your average open source project (acceptable for hackers, terrible for anyone else).

<comment><USER11> Facebook has a registration tool, too, now: <http://swombat.com/2011/1/24/facebook-registration-tool>

This might be the good middle ground between facebook login and an entirely new login... a facebook-assisted signup procedure.

</comment></comment></comment><comment><USER12> I don't understand. They use single text box of OpenID login. They have it separated from login page in another page. How do they want it to be successful and where is their ultimate usability mastery?

There is no way OpenID can be improved when there is no interest in solving global internet issues. Neither Facebook for implementing the own mechanism nor 37signals would get medal of honor for uniting the internet.

<comment><USER3> The key problem didn't come from people NOT using OpenID, but from the people who did. Supporting OpenID is a nightmare. You have different relaying services that go up and down (OpenID's answer is: "use more than one" - ha!), various levels of incompatibility, and a generally user hostile experience.

If OpenID usage had been in any serious numbers, our support department would have revolted.

If you're trying to build a profitable online business, cutting your support costs is key. And the easiest way to cut your support costs is to dump confusing features or technologies that people constantly write in about.

Same reason we originally dumped FTP in favor of hosting files ourselves. The support costs were way too high.

<comment><USER4> For any individual company, economics favor a proprietary single sign-on (37signals ID).

OpenID was not successful in changing that equation.

RPX, by contrast, appears to have done so successfully for a lot of people.

<comment><USER13> <http://www.janrain.com/products/engage>

Looks like they renamed it... seems proprietary?

</comment></comment></comment></comment><comment><USER14> I use openid not to have a single signon to 37signals apps. I use to to have a single signon period. Not just 37signals but a ton of other apps use it as well (and I wish all of them did).

Every time I see a web app supporting openid Im glad that I don't have to invent yet another user/password combo. again.

As to failing openid providers I have a good suggestion - use OpenId delegation to have a single openid that you can reroute to any openid provider you want. all it takes is a domain name and a very small file hosted on S3 (for example). Then you can switch providers at will.

<comment><USER15> > Every time I see a web app supporting openid Im glad that I don't have to > invent yet another user/password combo

The problem is most people don't bother doing this; they just trust every site with the same password. The benefit I see in OpenID is that it is not a secret, and canot be "compromised" (intentionally or not) in the same way as passwords.

(I also am one of the few, it seems, to use OpenID for my 37signals account)

</comment></comment><comment><USER16> The only ultimate, secure, technically valid solution to single sign-on is 2-way SSL.

Unfortunately, for this to work, several things need to happen:

1) Users need to learn what a private key is.

2) Browsers need to provide flexible, intuitive, easy-to-use user key support that's not tucked away in 3 levels of dialogs/tabs.

3) We need good key-management tools so I can log on to sites from internet cafes, etc (perhaps a session-lived key cache in the browser, with support for syncing it remotely?)

<comment><USER17> Anything that starts with, users need to learn <new technical concept> seems doomed to fail.

<comment><USER16> Not if it provides a significant-enough benefit. How many people had "passwords" as a daily part of their life before 1995 or so?

Every technology is new at some point. My thesis is that keys are _not that hard_ and technical people should actually _try_ to push understanding of them into the non-techie realm. If they fail, they fail, but if they succeed, it would make all computing so much more secure.

Edit: I should also point out that it's not really any more complicated than OpenID, and people seemed willing to give that a fair shake, at least to the extent that a lot of sites implemented it.

<comment><USER18> Kids have used passwords in games for years. everyone's seen spy movies. the story of alladin is part of popular culture.

but "here is a thing in two parts, one of which you give to everyone but one of which you need to keep absolutely to yourself or you're screwed" doesn't have a common analogy. even the "i give you an open box with a padlock" analogy can feel a bit contrived.

However I also feel that there was no _cohesive_ attempt at building a similar story for OpenID - which is a shame as it could be as simple as "tell us which site you want to log in via and we'll do the rest"

<comment><USER19> Public key = your address. Private key = the key to the front door.

</comment></comment></comment></comment></comment><comment><USER20> I'm surprised that 37signal's thought process is so utterly flawed. Blaming a technology for implementation problems just doesn't make sense. Using this logic, we would have concluded in 1997 that since Geocities pages were ugly and slow, HTTP was a waste of time.

StackOverflow demonstrates aptly that OpenID is a technology that can work really well. You just need to: \- Funnel users to pervasive, competent providers like Google, Facebook, Verisign \- Make the integration experience as smooth as possible.

If your implementation of OpenID requires users to enter URLs and encourages users to use random providers, than yes, it sucks.

<comment><USER21> Really? Because yesterday I went to _Meta_ StackOverflow and was utterly confused why I was getting new openid requests. (It was because MetaSO is different that SO.) Then I went to SO and was still confused because I thought I used yahoo but actually used google. Then, after I logged in with yahoo, I tried to change from google to yahoo and ended up with both, and now I can't remove the google openid. Very confusing.

Instead of managing 1 SO and 1 MetaSO login, I'm managing a connection from SO to one of many providers and MetaSO to one of many providers. Best case, that's 3 pages (SO, MetaSO and Yahoo) to manage logins to 2 sites.

</comment></comment><comment><USER22> Now if we could just kill off this facebook/twitter/nextbigthing login nonsense and use email like proper gentlemen things will be just peachy.

<comment><USER23> Until you change ISPs and your ISP provided email address goes away. Sure you could say use gmail or yahoo mail, and that is obviously just fine until they become "evil" or go out of business. Or heck you get your own domain and want to migrate over to using it for email. I have had a number of email addresses over the years and most of the old ones I have lost access to, how does that work again?

<comment><USER24> Exactly as well as OpenID, only it's a much better understood problem and avoids a ton of confusion?

</comment></comment></comment><comment><USER25> This is apparently their reaction to this support ticket - [http://answers.37signals.com/basecamp/4899-openid-having- iss...](http://answers.37signals.com/basecamp/4899-openid-having-issues) \- in which they say "Something changed with the MyOpenID provider recently and we're tracking the issue as we look for a fix."

<comment><USER3> That was just the latest in a long string of issues with OpenID. Hardly the sole reason.

</comment></comment><comment><USER26> It's a shame that CAS for multitenant apps never really took off. We have an integrated CAS and OpenID server to handle single-sign on for all our apps, and losing OpenID will mean an additional username/password for our people to remember for Highrise. We are probably going to write our own CRM at this point.

<comment><USER27> CAS is definitely somewhat less of a clusterfuck than OpenID, and actually gets the SSO cookie-handling part right.

But it's still a pile of redirects where the net result is that you can tie a user to their identifier and nothing more — it's mostly useless without implementing it paired with an LDAP/AD backend to get group membership and whatnot.

Just not storing a password field in your backend does nothing — you really have to get rid of the per-app account models entirely. WebFinger is a nice step along these lines, but it layers on top of OpenID and even then still doesn't provide the complete picture.

<comment><USER26> We have the CAS server return a hash in extraAttributes called "MemberOf" that returns every group the user is a member of. I do feel that the next version of CAS should formally address this as part of the main spec. But our MemberOf is paired to AD; but I'm sure it could be configured to work with a non-AD data store.

</comment></comment></comment><comment><USER28> I just skimmed the comments thread and have a vague idea of what OpenID is but haven't gotten around to it yet.

Sounds great, Yahoo/Google/Facebook take your pick with a button or if you're hacker/paranoid enough to have your own infrastructure the slightly complexity of using a URL?

Main complaint seems to be it's URL and not user@host? Couldn't one just add support for user@host into the next iteration of the standard? Maybe using something like DNS SRV records that seem to work well enough for XMPP?

Decentralisation is important and more cultural than technical. We need to keep working for it and it's not a short term goal--if it happens over decades so be it, but we shouldn't give up ground where we don't have to, especially with things trending against at the moment.

<comment><USER29> 37signals do not care about decentralisation. It is as simple as that.

</comment></comment><comment><USER30> I think that I speak for all when I say "NOOOOOOOOOOOOOO!!!" (think skywalker)

Maybe the execution was not crystal perfect, but I think all of us would have liked OpenID (or some other free and open standard) to succeed.

Open world 0 : Corporate overlords 1

<comment><USER31> I wonder if it's reasoning like this that has kept OpenID alive when it should have died a long time ago. You want the Open world to win over the corporate overloads, build a technology that actually _works_. A lot of effort has been put into evangelizing OpenID because it's a technology that nobody would want on their own.

The problem was the underlying concept is not sound and no amount of layer on more features was ever going to solve it. What we need now is to get the browser makers involved in a secure authentication system and start it first inside of smartphones.

</comment></comment><comment><USER32> What exactly are OpenID usability issues? I personaly prefer to use OpenID where it is available, yet I don't use any login provider but a php script on my own website.

<comment><USER33> The problem is that the number of people hosting their own OpenID solutions is, and will be, rather insignificant.

<comment><USER34> It doesn't matter when yahoo, google, aol and more offer openid, it's just a click on a button, what could be easier than that? I agree that entering a whole URL is horrible though but that's not how I use openid, I just click on the google button and that's it, just like facebook or twitter connect.

<comment><USER35> StackOverflow is a good example (IMHO) of OpenID login done right. It's _so_ easy to sign up for a StackOverflow account, and I don't have to remember or write down _yet another fucking password_!

IMHO, one of the things they do correctly is that the user doesn't have to remember an OpenID url in most cases, just click on the logo for which of your likely ID providers (Google, Facebook, Yahoo, etc.) that you want to use. What could _possibly_ be easier or friendlier for the end user?

<comment><USER36> _StackOverflow is a good example (IMHO) of OpenID login done right._

The problem is that StackOverflow is also about the _only_ example of OpenID done right, or done at all...

Yes, there are a few others. But at least in my internet usage I hardly ever run into one. I can't remember having used my OpenID for any site other than SO in the past couple years.

<comment><USER35> Other examples of user-friendly OpenID login pages:

* Tripit.com only supports Google, Google Apps, and Facebook, but it's very end-user friendly to use any of those three.

* Catch.com, like Tripit, supports Google and Facebook OpenID logins.

* mindmeister.com supports Google, Google Apps, or a generic OpenID login.

* springnote.com supports a number of openID providers including generic OpenID. This one is actually an even better example than StackOverflow of an end-user friendly OpenID login/signup page.

Those are just ones I pulled from my Google account settings page. I'm sure there are other good examples out there.

</comment></comment></comment></comment></comment></comment><comment><USER37> Indeed, I also think that OpenID is not designed well. I mean, I have tried to implement it already twice. And everytime, I think, I got the idea of OpenID, later I realize, no I still didn't got real wht it tries to do.

What is wrong in that a spammer could easily host its own OpenID server and log in with that account on numerous sites. You even can write scripts to do it automatically, so I didn't really get the idea of OpenID.

I think in the future we get OAuth as the winner. Yes, its main purpose is different, however "signing in" with OAuth is so much easier. Even a simple user can understand how it works. And by implicit use of only specific OAuth providers (where you registered your app), you close the door for "bot"-providers. Of course one can argue, that you can also force to use only specific OpenID providers, but this is not core idea of what OpenID was created for.

<comment><USER38> OpenID doesn't replace user accounts. It replaces account passwords. A site, instead of verifying a user's password, contacts the user's OpenID provider asking them to verify the user's identity.

Instead of using the same username + password combination for all the sites on the Internet (and suffering from Gawker-like incidents), or writing down a bazillion passwords in my keyring, I use my OpenID when I want to comment on random people's blogs or sites like StackOverflow.

</comment></comment><comment><USER39> I never quite get the idea of OpenID. It's like outsourcing the front door of your Italian restaurant business.

Furthermore, when using OpenID, users have to remember yet another type of token. As opposed to the ubiquitous email+password.

<comment><USER20> It's more like a restaurant hiring a third party to handle billing without you needing to collect cash or hold consumer receivables. (ie. credit cards)

Who do you trust more to control who can use your identity? A gossip blog like Gawker Media? Or a place like Google, Verisign, etc who employs real security experts who know what they are doing.

I have a PayPal token so that I can use two-factor authorization for my account. Since Verisign PIP is powering that solution, I also now have a two- factor openid that I can use anywhere. So if I decide that I want to have additional protection for my StackOverflow or Tripit accounts -- I can.

</comment></comment><comment><USER40> I wrote a blog post[1] last week about a better solution for handling auth. The tldr version is that our user agents need to be doing a better job of managing authorization and multiple accounts for us. I posted it here on HN[2], but didn't get much traction on a Friday afternoon.

[1]: [http://blog.theamazingrando.com/the-road-to-better- authoriza...](http://blog.theamazingrando.com/the-road-to-better- authorization) [2]: <http://news.ycombinator.com/item?id=2128966>

</comment><comment><USER41> I still like OpenID for smallish projects and blog commenting. While people are ok with creating a username and password for a 37signals product, I doubt they're interested in creating one for something that tell my friends on facebook and twitter what my favorite color is.

</comment><comment><USER42> Well, it's a damn good thing I switched away from OpenID for my current project. I was originally forced to switch because the ruby openid library did not work for ruby 1.9 due to encoding issues. It's amazing how much things change in a year.

</comment><comment><USER29> Am I the only one to find the top-voted answer on linked Quora question to be completely wrong, and missing the point?</comment>


Why Edward Snowden Is a Hero - <AUTHOR> http://www.newyorker.com/online/blogs/johncassidy/2013/06/why-edward-snowden-is-a-hero.html?mobify=0

<comment><USER2> I have to agree that in his actions the public benefit by far outwieghs the "security" risk. In a country where people have been blocked from travelling for mentioning "bomb" and "airport" in the same tweet it's not really shocking that the security apparatus is monitoring the internet. Like he mentioned there's a reason Osama's home had no internet or phone connection. So this leak only does one thing, show the extent that American's civil liberties have been eroded for something that has killed less people in total since 2000 than chocking

<comment><USER3> One can have little doubt that the real terrorists look upon all this with glee.

I imagine the perpetrators of extremist based terrorism see this erosion of civil liberties as an enormous win.

Yes. Snowden is definitely a hero, of dare I say it, historic proportions.

<comment><USER4> "I tell you, freedom and human rights in America are doomed. The U.S. government will lead the American people in -- and the West in general -- into an unbearable hell and a choking life." \- Osama bin Laden, October 2001 [http://archives.cnn.com/2002/US/01/31/gen.binladen.interview...](http://archives.cnn.com/2002/US/01/31/gen.binladen.interview/index.html)

<comment><USER2> When a hardcore terrorist calls the future correctly you have a huge problem

<comment><USER3> I'm suggesting that it was a planned outcome (of terrorism) to make our governments to mistrust us like this.

Bin Laden wasn't the first person to predict that an increase in terrorism would lead to an increase in "Orwellian" practices.

</comment></comment></comment></comment></comment><comment><USER5> Sounds like a very nasty and clever way of publishing: One of 'em calls Snowden a traitor and then another calls him a hero. Two opposing stories, all for the eyeballs.

I'd much prefer media to choose a side/ideology and then stick to it. New Yorker went in bed with snoopers earlier, so I don't see any reason to up-vote this story; even if the second author has written in favor of the people.

Choice of the medium to broadcast is, I believe, a very important factor when it comes to context of writing on state control, public policy etc.

[Edits] I've flagged this story.

<comment><AUTHOR> @monsterix I think you stopped reading too soon. A few paragraphs in the major focus of this article indeed takes Snowden's side and sticks to it, addressing exactly the real issues (not 'steering away' from them as you claim).

This article goes further than others with links to sources of intelligence agencies denying these programs on record (basically "lying" to congress), see [http://www.guardian.co.uk/world/video/2013/jun/07/privacy- wy...](http://www.guardian.co.uk/world/video/2013/jun/07/privacy-wyden- clapper-nsa-video) and [http://www.forbes.com/sites/andygreenberg/2012/03/20/nsa- chi...](http://www.forbes.com/sites/andygreenberg/2012/03/20/nsa-chief-denies- wireds-domestic-spying-story-fourteen-times-in-congressional-hearing/) ), and concludes with a quote by Daniel Ellsburg:

"Snowden did what he did because he recognised the NSA's surveillance programs for what they are: dangerous, unconstitutional activity. This wholesale invasion of Americans' and foreign citizens' privacy does not contribute to our security; it puts in danger the very liberties we're trying to protect."

It's one of the better written stories that explain the issues well and clearly supports Edward Snowden. Today I've been sending this story to friends who are seeking to understand the issues.

<comment><USER5> I do agree that the article itself is among the better written stories about NSA and snoops. The title of the post on HN, however, needs editing (tries to sway attention from NSA/snooping to the messenger).

</comment></comment></comment><comment><USER6> Regardless of his fate or the consequences of his revelations, he scarified his life for us. My respect for him is boundless.

It's also a reminder of the vital and essential difference between fighting for liberty and Ayn Rand-ish "libertarianism", which is probably what many in government believe in.

<comment><USER7> I fail to see how you managed to make a connection to "Ayn Rand-ish libertarianism" and why you think many people in government believe in it. Don't libertarians dislike government?

<comment><USER8> Libertarians (unlike anarchists) don't "dislike government." They dislike government that has more than a specific set of responsibilities.

That said, I don't get the Rand connection here either. I will say that NSA spying isn't necessarily incompatible with a libertarian government. Libertarians don't reject the law & order or security functions of the state. Even a libertarian government would have the power to issue warrants, subpoenas, etc. Given that, something like the recent NSA incident couldn't have been prevented with a "small libertarian government." It's cheap as hell (Google, etc, do all the work!) and leverages basic powers that would exist in the "smallest" governments.

<comment><USER9> "I will say that NSA spying isn't necessarily incompatible with a libertarian government."

I would believe it is against the very definition of libertarianism as a belief and not any political party with libertarian in its name. Taken from Wikipedia:

"Libertarianism (Latin: liber, "free")[1] is a set of related political philosophies that uphold liberty as the highest political end.[2][3] This includes emphasis on the primacy of individual liberty,[4][5] political freedom, and voluntary association. It is the antonym to authoritarianism.[6] Libertarians advocate a society with a greatly reduced state or no state at all.[7]"

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

</comment></comment></comment></comment><comment><USER10> I still don't understand this whole thing.

Why oh why didn't Snowden's interviewer ask him to explain the tech giant's denial of PRISM? And their denial in general of government access to their data beyond the court-ordered variety we all knew about?

I really doubt all the tech giants are spinning the same prepared lie about not knowing anything. And if they're not lying, then where does that leave Snowden's accusations?

Maybe PRISM does exist, but maybe it has limits and can't access everything it wants to, but only everything that _can already be scraped_? In which case, who the hell cares, we all know mass data scraping and mining is going on with our public shares and comments. Maybe PRISM does this really well, but then, again.. what's the big deal?

The alternative is almost too far-fetched... that the tech giants are all lying (unlikely); that PRISM has access to their protected data without their knowledge (still unlikely); or that PRISM is fed the data via insiders within the tech giants who are like IT spies - which would make the best hollywood movie. I'd call it PRISM GAMES. Oliver Stone, stay away... you're not touching this after your 9/11 effort.

<comment><USER11> Or, quite simply, that "PRISM" is the name of the automated system for facilitating FISA requests.

<comment><USER12> Isn't the biggest challenge to this idea the letter from GOOG that made the rounds yesterday asking DoJ for the ability to publish aggregate numbers of these, which it implies will be evidence that this kind of large scale automation isn't happening?

[http://googleblog.blogspot.com/2013/06/asking-us- government-...](http://googleblog.blogspot.com/2013/06/asking-us-government- to-allow-google-to.html)

</comment></comment></comment><comment><USER13> Am I the only one who finds the hero/traitor dichotomy that the New Yorker, CNN, etc. are advancing is unhelpful and perhaps disingenuous?

</comment><comment><USER14> Is there an article or initial analysis somewhere summarizing all that's known right now about this scary NSA/PRISM business (with links to sources ideally)? Or is it still too soon for such a thing?

I'm participating in a Google Student Ambassador program at my university and since I've always stressed the importance of privacy (especially in the era of the cloud) I feel obligated to educate my friends and colleagues about this.

<comment><USER15> All that exists so far is four vaguely worded power point slides, although their is allegedly a lot more which is not being released for unknown reasons.

</comment></comment><comment><USER16> He took a massive risk, to advance our society.

<comment><USER17> I would re-word that to:

He took a massive risk, to prevent further degradation of our society

</comment></comment><comment><USER15> Maybe the definition of hero should be required to have more than one datapoint.

</comment><comment><USER18> Stop focusing on Snowden, hero or traitor, he's probably fake. The revelation is important, not the messenger.

The idea of "Snowden" is critically important -- citizens standing up against government overreach -- but him as an individual is immaterial.

<comment><USER19> Fake?

<comment><USER18> I was suggesting the Snowden interview could be intentionally staged to create a distraction from the bigger issue. Which it's done really well. Now everyone is talking about Snowden, whether he's a traitor or a hero, why this inexperienced kid had all this access to "the entire intelligence community", etc.

If he is real, he's going off the radar for his own protection. If he gets picked up by the CIA, he's going off the radar. If he's fake, he's going off the radar too. He's going to disappear regardless.

I think it's an unnecessary distraction from the core issue of the US government having unfettered spying access.</comment></comment></comment>


Hacker News is 2 - <AUTHOR> http://ycombinator.com/newsnews.html#19feb09 <comment><USER2> Wow. It feels like just yesterday I signed up for HN. YC:HN is priceless for me. Thank you YC and thanks to this community.

<comment><USER3> Seconding this. HN community, you rock. All of you. Even the people that start heated debates. (Hell, _especially_ the people who start heated debates.)

Happy birthday!

<comment><USER4> Agreed. It's a lovely little oasis of healthy conversation, and friendly help/advice.

Long may it continue :)

</comment></comment></comment><comment><USER5> Since nobody seems to really be saying it I will:

Paul, thanks for taking the time and putting in the effort to create a website I really value. I've learned a lot over the last little bit and continue to do so.

Job well done.

</comment><comment><USER6> How about a hand for the moderators? They are the guys who keep the quality of this site up. Without them, this would soon just be another clone of reddit

<comment><USER7> Was it necessary to bash Reddit?

<comment><USER8> No, but I would like to take this opportunity to do it anyway. Reddit has become a den of melodramatic ideologues and thoughtless iconoclasts. I'm no longer a supporter.

Here are some intellectually unflattering sample headlines from the front page right now:

4\. Like NASCAR Drivers, Our Politicians Should Wear Uniforms Clearly Stating Their Sponsors

5\. Oh, Canada. "When statements are said that God probably does not exist, this is an implied statement of hatred towards all those who do believe that God exists."

13\. The head of the DEA spent more than $123,000 to charter a private jet to fly to Bogota, Colombia, last fall instead of taking one of the agency's 106 planes.

15\. PWNED!!!

19\. Citigroup, which lost $18 Billion Last year, laid off 39,000 and got a $52 Billion Govt Bailout still provides perks to directors and former CEOs such as airplanes, helicopters, and drivers costing millions of dollars per year.

20\. Cousin of 9/11 Hijacker Arrested as Israeli Spy

21\. Fuck the media. CBS Evening News only points to $4600 from Stanford to Obama as well as showing Bill Clinton and Nancy Pelosi. No mention of McCain's $28K or any other Republican. (1:55 video)

22\. Ten years. Ten FUCKING years you've been following me. And for what? PIKACHU?

23\. Woman Blinded By Acid Requests That Her Attacker Be Blinded With Drops Of Acid In Each Eye. Iranian Court Accomodates Her.

25\. Giant rat caught in China

<comment><USER9> Have you looked at the subreddits? I spend a lot of time in /programming/ & I find that it has much better articles than HN. Or maybe it's just me, I'm more interested in code than startups.

<http://www.reddit.com/r/programming/>

The reddit RSS feed is also considerably better & I find that invaluable.

<comment><USER10> I used to swear by programming.reddit.com, until the discussions went the way of reddit.com. Whatever can be said for link quality, I find the discussions here 100x better.

</comment></comment></comment></comment></comment><comment><USER11> 714 days here, karma 117 and I couldn't be happier: this place is special, let's keep it that way, happy birthday to us! wiiiii ! what kind of birthday gift do you give to a website?

<comment><USER12> > what kind of birthday gift do you give to a website?

Probably a really sweet submission. Like "new web framework lightspeed lisp screencast by Paul Graham on Justin.tv".

</comment></comment><comment><USER13> 689 days for a non-techie hanging with geeks. What is it like?

Well, participating (silently) in conversations between the advantages of one programming language/tool over another.

Reading some of the most thoughtful comments from users who clearly seem to know what they are talking about.

Experimenting with new web startups that launched here for the first time that are eager to get feedback.

Getting/giving advices on what to do and what not to do to achieve success in different fields.

Being constantly reminded that smart people who want to impact are everywhere.

Still don't know how to program, but I am loving HN. If I had to have one digital home HN would be the IT.

Thanks to every user, moderator, to the founder and to myself for mingling with smarter individuals.

HBHN

</comment><comment><USER14> There was so a missed opportunity for a nerd joke here:

 _Hacker News is 10!_

</comment><comment><USER15> Here's a link to the oldest page I could find on the wayback machine:

[http://web.archive.org/web/20070221033032/http://news.ycombi...](http://web.archive.org/web/20070221033032/http://news.ycombinator.com/)

<comment><USER16> <http://news.ycombinator.com/item?id=1>

<comment><USER17> _22 points by pg 864 days ago | 16 comments | flag_

Wait, I sense a disturbance in the Force:

      2x365+1=731 < 864

What was HN doing 133 days before being born? And who are those mysterious elders with accounts " _created:864 days ago_ "?

</comment></comment></comment><comment><USER18> _Despite 14x growth, the character of the site has remained intact. So far this experiment seems to be working._

I'm not sure what counts as character and this is obviously subjective but my personal feeling is that HN's quality has taken a slight hit in the past year. It doesn't seem as unique as it once was and many of the topics that make it to the front page seem to be more formulaic. Furthermore many newcomers seem to post the same things that were raised here previously. I've lost track of the number of topics about hosting providers, credit card processing and the like. Also with the increased volume it's been hard to make effective use of the "new" page. Odd things that may interest me that don't quickly get enough attention are lost faster.

Unfortunately I predict growth and network effects will speed up this trend and 2 years from now HN will likely be much less interesting as the HN of a year or two ago.

</comment><comment><USER19> 2 years and I'm still so far from 100 points of 'karma'... What a shame!

Happy birthday, Hax0rs!

</comment><comment><USER20> Happy birthday.

<comment><USER21> RMS, is that you?

I came here to say that I really like the design of this web site (despite of what some others say), but the stability seems lacking sometimes. The site is often inaccessible. I was going to suggest reimplementing everything in ASP.NET and VB.NET, but in RMS's presence, I don't dare.

<comment><USER22> As a very helpful comment once put it:

On HN, dhh is DHH but rms is not RMS.

<http://news.ycombinator.com/item?id=412440>

<comment><USER21> OK then, reimplement everything in ASP.NET!

DHH, the Ruby guy? Sorry about posting that Lua vs Ruby benchmark link.

<comment><USER23> I can't tell if you're trolling or serious.

I'll give you the benefit of the doubt. It won't be rewritten in ASP.Net because of this: <http://arclanguage.org/>

<comment><USER21> I know about Arc. I'm half-joking about .NET, and I'm serious about the rest.

</comment></comment></comment></comment></comment></comment><comment><USER24> Congratulations. It was just this new year that I lucked into HN - and it has made a huge difference to this tech-retread (me) as I seek to play catch-up in my hacking education. A great community you've catalyzed!

</comment><comment><USER25> Happy birthday!

I'm happy to see that you didn't do any major changes to the look and feel of this website, most sites tend to change for the worse after receiving more and more hits. Good job!

</comment><comment><USER26> Wow 2 years. It's strange, but I can't really remember how I came to start reading HN. I know I had been reading PG's essays for a while, but there seems to be a gap I can't recall. It's kinda like the way I can't really remember when I started using Google for all my searches, I just kinda naturally assimilated it into my life.

</comment><comment><USER27> Joining the throng of people congratulating HN and noting how big a part of my technical life it has become.

</comment><comment><USER28> HN has completely dominated all other forums I used to read frequently, even the one I pay for membership at and have been hanging around for a decade. Thank you. (I think it's a _good_ addiction).

So, what are your plans for the next year at HN and how can we help with them?

</comment><comment><USER29> Thanks pg, cheers to us! This place has grown to be such a great one. Thank you all.

</comment><comment><USER30> Happy Birthday! What, only 2?

</comment><comment><USER31> Oh Time flies! Never noticed that two years have elapsed. Happy Birthday.

</comment><comment><USER32> Am I the only one here who first read this as "Hacker News 2" and got all excited for a nanosecond imagining something like beta.news.yc.com with a new design and added features???

</comment><comment><USER33> Why is the Alexa rank so low with 22k unique users everyday?

<comment><USER34> Honestly, there's still an argument to be made that compete.com is at least semi accurate. But Alexa is just a lost cause. It simply doesn't even resemble anything accurate anymore.

P.S. Happy Birthday HN

</comment></comment><comment><USER35> It's a useful place to get news, but also to get insight from folks who do what I do and it's invaluable in a world filled with noise and static.

</comment><comment><USER36> HN is my homepage on my desktop, and the first bookmark on my Blackberry. It's really all I need for news that's relevant to me.

</comment><comment><USER37> A Jug of Wine, a Loaf of Bread, and Hacker News Beside me singing in the Internet Wilderness

Oh, Internet Wilderness were Paradise enow!

(apologies to Omar Khayyam)

</comment><comment><USER38> 491 days here and I still haven't figured out what the user params (like "noprocrast" or "showdead") do, what a noob

<comment><AUTHOR> <http://ycombinator.com/newsfaq.html>

<comment><USER38> I can't see the link to this anywhere, must be the age

<comment><USER39> very bottom of the main page. I have to admit, it wasn't obvious to me either when I first went looking for it.

<comment><USER38> thanks. The FAQ link should be where the question arises (in the user's profile page).

</comment></comment></comment></comment></comment><comment><USER40> HN made me quit reading Reddit. Thanks HN!

</comment><comment><USER41> Happy birthday! HN is a great resource.

</comment><comment><USER42> Happy birthday. What, no champagne?

</comment><comment><USER43> zomg, never realized news was born on my birthday! Best gift I got today! (Well, almost :)

"This is the dawning of the age of Aquarius ♫ Golden living dreams of visions ♪ And the mind's true liberation"... well I'm no mystic but I just love us aquariuses!

</comment><comment><USER44> Happy Birthday! My favorite community here. Great people, great ideas, great service!

</comment><comment><USER45> Happy birthday! The only site on the net worth checking multiple times a dayIMO.

</comment><comment><USER46> Anyone know who are the HN moderators? Are there any these days?

</comment><comment><USER47> Happy Birthday to the HN crew. Heres hoping for many many more!

</comment><comment><USER48> Happy birthday HN and thanks to the HNers; you are wonderful.

</comment><comment><USER49> What? No cake?

Congrats on a fun site so far, Paul. Hope it continues.

</comment><comment><USER50> Congrat's! this is a great resource for all of us

</comment><comment><USER51> Happy Birthday!

</comment><comment><USER52> Intact? Don't kid yourself.

</comment><comment><USER53> hmmmmmmmmm

I think that the 14x growth happened because there is a nice atmosphere here that you won't find anywhere...</comment>


Ask HN: What recreational books related to programming can you recommend? - <AUTHOR>

I'm going on a holiday and I'll have a lot of time dedicated to reading so I want to take a book related to programming. Since I won't carry my computer with me but only my Kindle, I'm looking for a book that doesn't require code practice.
I just started to play with Swift for a few months as a hobby so I'm either interested interested in something related or into something generic (such as a book about algorithms or data structures).
I would love to read a book that helps novices to understand concepts, problems, etc...it doesn't matter as long as it improves your thinking.
Thanks! <comment><USER2> Coders at Work: Reflections on the Craft of Programming - Peter Seibel

[http://www.amazon.com/gp/product/1430219483](http://www.amazon.com/gp/product/1430219483)

great book, easy reading, inspiring and insightful, highly recommended!

</comment><comment><USER3> The Emperor's New Mind, Penrose.

The Mind's I: Fantasies And Reflections On Self & Soul, Hofstadter and Dennet.

The Society of Mind, Minsky.

Martin Gardner. [http://www.amazon.com/Martin- Gardner/e/B000AP8X8G/ref=sr_ntt...](http://www.amazon.com/Martin- Gardner/e/B000AP8X8G/ref=sr_ntt_srch_lnk_6?qid=1438610937&sr=1-6)

Donald Knuth. [http://www.amazon.com/Martin- Gardner/e/B000AP8X8G/ref=sr_ntt...](http://www.amazon.com/Martin- Gardner/e/B000AP8X8G/ref=sr_ntt_srch_lnk_6?qid=1438610937&sr=1-6)

Things a Computer Scientist Rarely Talks About, Knuth.

e: The Story of a Number, Maor.

The Pythagorean Theorem: a 4000-year history, Maor.

Flatland, Abbot.

Snowcrash, Stevenson.

Johnny Mnemonic, Gibson.

<comment><AUTHOR> Also found this, for those who are interested: "The Inmates Are Running the Asylum", by Alan Cooper: [http://www.amazon.com/The-Inmates-Are-Running- Asylum/dp/0672...](http://www.amazon.com/The-Inmates-Are-Running- Asylum/dp/0672326140)

</comment></comment><comment><USER4> The best book of last century: GEB. [https://en.wikipedia.org/wiki/G%C3%B6del,_Escher,_Bach](https://en.wikipedia.org/wiki/G%C3%B6del,_Escher,_Bach)

More challenging: Fun With Algorithms: [http://www.springer.com/us/book/9783319078892](http://www.springer.com/us/book/9783319078892)

<comment><AUTHOR> Thanks, the first one looks extremely interesting.</comment></comment>


The UnSexy Enterprise - <AUTHOR> http://citizentekk.com/2013/09/20/startups_the-unsexy-enterprise/

<comment><USER2> Ssssshhh... don't spread that. We prefer to quietly toil away in obscurity, in a sector where there are customers with real money, waiting to exchange it for real products. We don't need a gold-rush of new enterprise startups flocking in here!

All joking aside, as far as I'm concerned, there is nothing sexier than enterprise startups. The problems are more interesting, the technology is more interesting, the money is real, etc... And, to my personal temperament and tastes, most consumer apps are just plain boring.</comment>


At McDonald's in Japan, French Fries Are Causing All Sorts of Chaos - <AUTHOR> http://m.kotaku.com/5955694/at-mcdonalds-in-japan-french-fries-are-causing-all-sorts-of-chaos?fb_action_ids=10101181982015850&fb_action_types=og.likes&fb_source=other_multiline&action_object_map=%5B363997710356155%5D&action_type_map=%5B%22og.likes%22%5D&action_ref_map=%5B%5D

<comment><USER2> Old link, still really weird.

</comment><comment><USER3> And it adds WHAT to HN?</comment>


Hand Coded Assembly Beats Intrinsics in Speed and Simplicity - <AUTHOR> http://danluu.com/assembly-intrinsics/ <comment><USER2> I wonder if it's already the time to put to rest the myth that the human-coded assembly for a modern CPU is slower than what a compiler generates?

As far as I know it's been semi-true around Pentium time. On that asymetrical dual pipeline architecture with many parring exceptions and some microcoded instructions in the mix the typical hand-optimized code for the previous generation CPUs would likely under-utilize the second pipe and hit some microcode for a good measure. However, even the Pentium Pro already had a very robust front end that did not require non-intuitive op rearrangement to utilize multiple exec units.

Saying that you cannot hand code better than the compiler for a non-Pentium CPU nowadays sounds similar to saying that if you use too many set bits in your data then the punch cards will warp and tear apart from too many holes.

<comment><USER3> Speaking from experience, this myth was never true from 8086 up through the 486; the Pentium (P5) might've been slightly harder to optimise for, but a human could still easily beat the compilers of the time. And of course, it is not true today either.

Around the time of the P6 (Pentium Pro/II/III) was when I think things really improved - out-of-order execution/speculation/wide decoders meant instruction ordering had little significance, and so getting more performance was more about reducing the number of instructions needed - something compilers tended to not do well at.

I believe the myth came from the early days of the RISC fad, where CPUs were designed specifically so that compilers could easily generate code for them and make human-coded Asm "obsolete"; although to me this appears to be more of a "take all the advantage away from humans, making it just as hard for them to optimise the code as the compiler"... I have only a little experience with writing Asm for MIPS and ARM, but even from that I can see they do not have anywhere near the sort of "room for optimisation" that x86 provides.

Another myth that probably needs to die now is "microcoded instructions are slow"; in a recent article on HN about using the old BCD instructions which were commonly thought to be much slower than an equivalent sequence of simpler instructions ([https://news.ycombinator.com/item?id=8477254](https://news.ycombinator.com/item?id=8477254) ), I did a quick benchmark and found they were basically the same speed, but much shorter. The one caveat is that currently these complex instructions can only be decoded by one of the decoders, so having too many of them close together can slow things down if the other decoders can't find a simpler non- dependent instruction to decode; but using them sparingly could be good for making code smaller (and thus consume less cache) without any speed penalty, or possibly increase speed overall due to reduced cache misses.

</comment></comment><comment><USER4> "Well, at least in clang (3.4). Gcc (4.8.2) is too smart to fall for this separate destination thing and "optimizes" the code back to something like our original version."

This resonated quite heavily with me. I've spent rather large amount of time figuring out how to trick various compilers. This is especially critical in cases where there is no inline assembly, such as shaders. It's really sad how in some cases you can 'optimize' code by hiding information. In what sane world code runs faster if you make something not a compile time constant as an example?

I really wish that every compiler would have "Shut up! I know what I'm doing!" mode where it would basically do what you say as close as possible. 1:1 mapping on registers to certain variables and the few temp regs required for evaluating expressions.

This is not needed often but it's absolutely mandatory for going from 40-50% of theoretical speed to >90%. And in games and other soft real time applications this can spell the difference between 30 and 60 fps.

<comment><USER5> That mode is called "assembly". I use it all the time.

<comment><AUTHOR> It's a very useful mode, but assuming you don't write the entire program in assembly, what's the best way you've found to integrate the assembly with the non-assembly code? Is there any Windows/Mac/Linux portable and self-contained way of doing it short of writing assembly functions in separate files and distributing NASM along with the source? Does even that work?

<comment><USER6> Why would you distribute NASM, or any other assembler, with your own code? You list it as a requirement to build your code. Would you also distribute GCC?

<comment><AUTHOR> Logically this makes fine sense, but for whatever reason, I don't think I've ever encountered a popular open source program that required a specific assembler other than 'gas' unless the entire codebase was written for that assembler. I don't think I've encountered it in academic code either.

But for whatever reason I've encountered a few that distribute NASM or another assembler. I don't know exactly why this would be. I'm trying to find out. Do you have examples where requiring NASM (or another assembler) as an external dependency has worked for projects in the past? I'm sure they must exist --- I just don't know of any.

<comment><USER6> FFmpeg. It requires NASM or YASM if you don't want to cripple it by disabling the external assembly.

</comment></comment></comment></comment></comment></comment><comment><AUTHOR> I feel like the problem isn't really with intrinsics. Rather, the problem is that compilers just aren't very good at optimizing for the last 30-50% of performance. One notices this when using intrinsics because if you are using them you probably are concentrating on performance. But if you were to look closely at the non-intrinsic code, I think you'd see a lot of the same problems: bad register allocation leading to unnecessary moves and spills, failure to take advantage of flags already set by arithmetic and logic operations, and awkward code layout leading to unnecessary jumps and branches.

Obviously, this isn't because compiler writers are stupid or ignorant. Instead, it's just a really difficult problem to optimize for one target in a way that doesn't hurt performance on another. Still, I think there's a lot of room for improvement, if only because comparing the output from GCC, CLang, and ICC often shows that one compiler does a much better job than the others[1]. But even once you know (definitively) that the code could be faster, it's often really tough to convince a given compiler to generate the code that you want. And coming up with a single construct that works well for multiple compilers and remains readable is often impossible.

I'd love it if there was a good way to "lock down" the output for a given function, without needing to depend on the whims of individual compilers. Other than distributing only pre-compiled binaries, there doesn't seem to be a great way to do this. Looking at Dan's example code, he has a solution that's twice as fast as the non-inline-ASM alternatives. But it's still depending on the compiler to do register allocation, and adding a global variable somewhere else in the program might well cause the whole thing to blow up, spilling to stack and triggering the popcnt false dependency that he's working hard to avoid.

What's the best way to do this --- to keep optimized code optimized across the mix of compilers in the current ecosystem?

[1] I'm Linux based, but I probably should start adding MSVC to the mix. I'm sure there are cases where it does something better than the others. Is there a good way to do this? Perhaps an equivalent to [http://gcc.godbolt.org/](http://gcc.godbolt.org/) for MSVC?

<comment><USER7> Generating optimal code is much like the travelling salesman problem. Optimization algorithms will lead the result to a local minima, while missing a global minima.

<comment><USER3> _Optimization algorithms will lead the result to a local minima, while missing a global minima._

I think this is the one of the huge differences between humans and compilers that leads to suboptimal code - the compiler is completely unaware of what the programmer _intended_ in the HLL source, so the best it can do is to generate code which it "knows" is the fastest way to implement exactly those statements; on the other hand, if you are a human writing an algorithm in Asm, you probably have things like instruction selection and register allocation already in mind and are willing to slightly change the "semantics" of your algorithm if it results in e.g. a better use of registers or the possibility to use a faster/smaller instruction.

In other words, the compiler starts with something horribly unoptimised but following the semantics of the source language, and tries to make that as fast/small as it can while still maintaining the same semantics - and so this is the "local minima" it can reach. The human starts with a concept of an algorithm and its intended result, and everything in-between is flexible, so this is a more "global" view of the problem of code generation. The human isn't restricted by the semantics of the HLL, but can fully express the intended algorithm by exploiting the full capabilities of the processor.

<comment><USER7> The human also knows things that the compiler doesn't - such as which branches of the code are speed critical and which aren't. This matters for things like where precious registers get allocated.

</comment></comment></comment></comment><comment><USER8> > "For example, as of this writing, the first two google hits for popcnt > benchmark (and 2 out of the top 3 bing hits) claim that Intel's hardware > popcnt instruction is slower than a sofware implementation that counts the > number of bits set in a buffer, via a table lookup using the SSSE3 pshufb > instruction."

I believe that my benchmark is one of those top hits. My description is at [http://www.dalkescientific.com/writings/diary/archive/2011/1...](http://www.dalkescientific.com/writings/diary/archive/2011/11/02/faster_popcount_update.html) . I wrote "My answer is that _if you have a chip with the POPCNT instruction built-in then use it_. I still don't have one of those chips, but I know someone who does, who has given me some numbers. "

My own code's logic is "if POPCNT exists then use it, otherwise test one of a few possibilities to find the fastest, since the best choice depends on the hardware."

I now have a machine with a hardware POPCNT, and a version with inline assembly. I should rerun the numbers...

</comment><comment><USER9> I seem to recall that Clang consistently produces slower executable binaries than gcc does, although Clang compiles quicker. (The reason a lot of people use Clang for development but use gcc for the final production build)

Perhaps the assembly it's producing isn't quite as optimized as it could be if it were carefully hand crafted.

<comment><USER5> That may have been true in the past. All the data I've seen in the past few years has GCC generating faster code for some benchmarks, and clang generating faster code for others, with no really consistent pattern (this is by no means an exhaustive sample, but it is certainly large enough to be vaguely representative).

Interestingly (to me), I am seeing more and more examples where clang and gcc are beating icc in performance.

<comment><USER9> > Interestingly (to me), I am seeing more and more examples where clang and > gcc are beating icc in performance.

Intel has finite resources (as much as Intel can realistically dedicate to the project), where-as both Clang and GCC projects have theoretically unlimited resources (as much as companies the world-over can dedicate to the project). Doesn't surprise me actually. Most say gcc version 4.7.1 overtook icc in performance by about 15% (and 4.7.1 is ancient now).

</comment></comment></comment><comment><USER10> Interesting to see this on HN, just a couple months after I ran into the same problem with GCC's intrinsic popcount myself on a project! I found that I needed to use an "-march" argument for GCC to actually emit POPCNT instructions.

<comment><USER11> Isn't gcc's default march=native so it would emit popcount if the host supports it?

<comment><USER12> No, the default produces binaries that are compatible with as many machines as possible.

<comment><USER11> You're right [0], but I couldn't find which march value [1] corresponds to the settings used for "x86_64-linux-gnu".

EDIT: running "echo | gcc -v -E - 2>&1 | grep cc1" shows the command line, which says "-mtune=generic -march=x86-64". I do not know what "-march=x86-64" implies, except SSE2.

0 - [https://gcc.gnu.org/ml/gcc- help/2012-12/msg00074.html](https://gcc.gnu.org/ml/gcc- help/2012-12/msg00074.html)

1 - [https://gcc.gnu.org/onlinedocs/gcc/i386-and-x86-64-Options.h...](https://gcc.gnu.org/onlinedocs/gcc/i386-and-x86-64-Options.html)

</comment></comment></comment></comment><comment><USER13> finally i think this article and comment thread will settle this contentious debate - definitively, and we can all move on - with the decision made once and for all future possible cases and desired outcomes.</comment>


Hexagen: true coroutines for Swift - <AUTHOR> https://github.com/aliceatlas/hexagen

<comment><USER2> Why would anyone want coroutines on preemptive multitasking hardware and operating systems?

<comment><USER3> Because it lends itself to a more modular design without the complications of managing concurrency across threads and processes.</comment></comment>


A Native American Tribe Hopes Digital Currency Boosts Its Sovereignty - <AUTHOR> http://www.npr.org/blogs/codeswitch/2014/03/07/287258968/a-native-american-tribe-hopes-digital-currency-boosts-its-sovereignty

<comment><USER2> Note, this coin is not officially backed by the Oglala Lakota Nation Tribal President Bryan Brewer or the Oglala Sioux Tribal Council.[0]

Reservations have to follow federal not state law, I feel like this is issuing a currency. They (well Harris), could potentially get themselves in some trouble here.

[0][http://www.indianz.com/News/2014/012781.asp](http://www.indianz.com/News/2014/012781.asp)</comment>


Microsoft Is More Ethical Than Google, Apple, Or Facebook - <AUTHOR> http://www.businessinsider.com/microsoft-is-more-ethical-than-google-apple-or-facebook-2011-3 <comment><USER2> I think this list shows mainly that these kinds of lists are not that accurate or interesting. Let's pick a few from this list: Microsoft, Best Buy, Symantec, Adobe...these are companies that I _regularly_ hear questionable things about.

And to top it off, from the site...

 _"A methodology committee of leading attorneys, professors, government officials and organization leaders, assisted Ethisphere in creating the scoring methodology for the World's Most Ethical Companies awards."_

Great...because when I think of ethics, I can't think of a single attorney, professor, government official or leader who's run afoul.</comment>


Compiling a Lisp to x86-64: primitive functions - <AUTHOR> https://bernsteinbear.com/blog/compiling-a-lisp-4/ <comment><USER2> There's also Bones, an R5RS Scheme that compiles to x86_64 assembly (from the Chicken Scheme creator).

[http://www.call-with-current-continuation.org/bones/](http://www.call-with- current-continuation.org/bones/)

[https://bitbucket.org/bunny351/bones](https://bitbucket.org/bunny351/bones)

<comment><USER3> Adding to that Eli Bendersky has a very good 4 part tutorial on writing a JIT from scratch [https://eli.thegreenplace.net/2017/adventures-in-jit- compila...](https://eli.thegreenplace.net/2017/adventures-in-jit-compilation- part-1-an-interpreter/) So you can try converting other interpreters to native compilers.

</comment></comment><comment><AUTHOR> This is part of a series I'm writing about compiling a small Lisp directly to x86-64 machine code. Let me know what you think!

<comment><USER4> This is great. Most Lisp implementation involve building a trivial interpreter, but rarely does anyone show how to build a real native compiler.

Great work, I especially like the use of C instead of a higher level language.

<comment><AUTHOR> I think that's because it's more finicky and a longer implementation. Of course, if you build a small interpreter that you can then use to write a Lisp compiler _in_ Lisp... you've got it made!

<comment><USER5> I love how we can bootstrap.

I'm getting interested in bare metal, I.e. no OS, booting direct to app, development.

These compilers are a goldmine of info.

</comment></comment></comment></comment><comment><USER6> For those who like me were not sure that the `calloc` call would necessarily allow to tag the returned pointer, I found the explanation in a previous post of this article series:

> _It's important to note that we can only accomplish this tagging scheme > because on modern computer systems the lower 3 bits of heap-allocated > pointers are 0 because allocations are word-aligned — meaning that all > pointers are numbers that are multiples of 8. This lets us a) differentiate > real pointers from fake pointers and b) stuff some additional data there in > the real pointers._

It's what I suspected, but I didn't know that it was actually safe to assume that.

</comment><comment><USER7> I always wondered why we rarely see more efforts like an LLVM based Lisp or Scheme language, especially when some projects like Racket are looking to improve performance by switching their runtimes (and I assume other benefits that come from consolidating underlying programming efforts across multiple projects).

<comment><USER8> I've been working on a lisp that's strongly typed and basically only has functions that are the llvm C API, including JIT. With that you can build macros, type systems, etc. Basically much of the code you write as a user can be what's typically implemented (in predetermined ways) in the compiler in other languages.

<comment><USER7> This sounds interesting is any of this public or publicly blogged about?

<comment><USER8> I'd love to make it public when it is a bit more thorough. Right now it's just local. I really wanted to get to the point that it's self-hosted before going public, but naturally that's a little involved since it does involve building everything up from assembly (llvm IR). But it's fairly straightforward, albeit time consuming, to build simple abstractions on top of each other to implement features typically present in high-level languages.

</comment></comment></comment></comment><comment><USER9> #METOO from 1982:

        C:\>nokolisp

        1> (comp-debug t)
        t

        2> (ncompile '(plus a 1))

        $O9CB:$7149: MOV AX, [$01BA]
        $O9CB:$714C: CALL $0F1D ; CALL NUMVAL
        $O9CB:$714F: MOV BX,$01
        $O9CB:$7152: ADD AX,BX
        $O9CB:$7154: CALL $05C0 ; CALL MAKNUM
        $O9CB:$7157: JMP $1DA7

        (subru: eval=$7149, compile=$3BB0)

<comment><USER10> How does the stack work?

I assume $1DA7 is the outer interpreter loop?

What is $3BB0 for?

<comment><USER9> The stack is regular 16 bit CPU-stack. Unlike most or all others, i was using the CPU stack for Lisp-nodes. The garbage collector made many errors when marking data from CPU stack. But it does not matter, with 16 bits you can have 65000 nodes, enough for all eternity.

JMP $1DA7 is basically return-from-closure.

(subru: eval=$7149, compile=$3BB0) means that compiled functions are treated differently, when called from intrepreter and compiler. It was direct machine- code CALL in compiled code.

</comment></comment></comment><comment><USER11> I am really enjoying this series, thanks. I've read PAIP by Norvig which includes a compiler, but this is a whole different perspective, being straight to machine code.

</comment><comment><USER12> Generating code from Lisp is a well-solved problem.

I'd like to see the capability of recompiling functions while they have live stack frames, and this just working (within defined limits).

<comment><USER13> This could have started an interesting discussion about the second sentence if you hadn't led off with the first.

<comment><USER12> I don't think we'll see radical improvements in Common Lisp compilers (the Lisp dialect I am most familiar with) for conventional AoT compilation. Sure, there are incremental improvements that can be made.

Perhaps you could start an interesting discussion on how you see that first sentence being wrong?

<comment><USER13> The first sentence wasn't wrong, but it came across as snarky. Very little on HN is original research; that doesn't mean anyone who creates something they find interesting should be slapped down.</comment></comment></comment></comment>


Do any developers voluntarily go homeless in SF? - <AUTHOR> Honestly, this is a thought I think everyday. "How would I live comfortably without having a home so I can save a whole bunch of housing money?"<p>Do you or anyone you know stay homeless? <comment><USER2> There is, or at least was, a pretty steady drumbeat of stories about founders living in their cars, offices, and campuses on purpose. As long as you're a healthy male with no dependents in a moderate climate it's a pretty reasonable option.</comment>


Thorium - <AUTHOR> http://austinmeyer.com/project/thorium/ <comment><USER2> This article perpetuates a common misunderstanding about radioactive half- lives, which is that shorter ones are better because the waste isn't dangerous as long. Actually, isotopes with short half-lives are undergoing radioactive decay very quickly, and are thus much more highly radioactive than substances with longer half-lives. There are radioactive isotopes in dirt, vegetables, etc., but they pose us no risk because their half-lives are so long as to not radiate significantly enough for it to matter. Fission byproducts with 300-year half-lives are actually super dangerous.

Interestingly, most thorium proponents point to this danger inherent in the thorium fuel cycle as a selling point, because it makes thorium waste so difficult to handle as to be a hindrance to proliferation.

In general, even speaking as someone who's generally pretty excited about thorium power, I'm not a huge fan of this article because I don't get the sense that this author has a super-solid handle on the science.

<comment><USER3> Not the best direct source, but this is asserted to be from Nuclear Engineering International magazine in November 2009

[http://www.greenpeace.org/international/community_images/88/...](http://www.greenpeace.org/international/community_images/88/2288/98676_156425.jpg)

via

[http://www.greenpeace.org/international/en/news/Blogs/nuclea...](http://www.greenpeace.org/international/en/news/Blogs/nuclear- reaction/the-mythologies-of-thorium-and-uranium/blog/48625/)

Thorium waste appears substantially less radioactive at shorter timescales we care about. On really long (10^4 - 10^6 years) timescales the proactinium-231 becomes an issue and uranium waste pulls ahead of thorium waste slightly. As we don't really have any idea how to plan on those timescales anyway (it's not like they're still going to be sitting in casks in a pool of water in New Jersey in 10^4 years), I think thorium is a lot better candidate from this perspective.

<comment><USER4> I'm not sure exactly why a non-fissile material with a half life this long is a "problem". By definition it's not.

Beside these are the burnup rates for Once-Through solid fuel cycles. In Uranium reactors this is only recommended if you are actively trying to create weapons material, and in Throium it simply doesn't work. Not sure what the relevance of these articles is.

</comment></comment></comment><comment><USER5> The government didn't say "give us the one we can make bombs with" or anything like that. In a review [1] they discuss groups working on thorium reactors who find that these reactors are potentially cheaper than water cooled reactors, but there are uncertainties and a demonstration plant is needed. They basically state that thorium reactors might work well, but their potential benefits don't outweigh the existing industrial commitments. Sure, the reason for the existing infrastructure was for the ability to more easily make bombs. But when this was reviewed, it was possible to make bombs with Thorium, too. [2]

There are advantages and disadvantages to thorium over common reactors, but it's definitely not a magic bullet.

[1]: WASH-1222 (p. 49) [http://www.energyfromthorium.com/pdf/WASH-1222.pdf](http://www.energyfromthorium.com/pdf/WASH-1222.pdf)

[2]: [https://whatisnuclear.com/articles/thorium_myths.html](https://whatisnuclear.com/articles/thorium_myths.html)

</comment><comment><USER6> This writing style makes me actively distrust anything written in it. It's the opposite of convincing.

<comment><USER7> Don't know what you lot are talking about.

It's very easy to read the article, get the basic argument down, and search for more information for everything that didn't sound convincing to you.

It's an article that has a point -- right or wrong. Not everything has to be written as some journal submission.

<comment><USER8> I also thought it was easy to read and had no strong qualms with the style.

<comment><USER9> I'd like to sell you some BEAUTIFUL, SCENIC land in Florida, perfect for raising you're children in a CLEAN, WHOLESOME environment free from the HECTIC, DANGEROUS modern world.

</comment></comment></comment></comment><comment><USER10> Previous discussions on HN:

[https://news.ycombinator.com/item?id=4912187](https://news.ycombinator.com/item?id=4912187)

[https://news.ycombinator.com/item?id=2723675](https://news.ycombinator.com/item?id=2723675)

[https://news.ycombinator.com/item?id=7734867](https://news.ycombinator.com/item?id=7734867)

[https://news.ycombinator.com/item?id=2401498](https://news.ycombinator.com/item?id=2401498)

[https://news.ycombinator.com/item?id=4857053](https://news.ycombinator.com/item?id=4857053)

<comment><USER11> In particular this thread:

[https://news.ycombinator.com/item?id=4913976](https://news.ycombinator.com/item?id=4913976)

</comment></comment><comment><USER12> The litany of contradictory or bad information on thorium reactors (and nuclear in general) is astounding. That's probably a function of both how polarizing nuclear energy is as a topic, and how nuanced the science actually is.

First off, note that thorium is not the fissile material - it's the fertile material. Thorium 232 is transmuted into something else like Uranium 233 via a breeder reactor, so saying that these reactors use thorium "instead" of uranium is about like saying your gas powered automobile burns crude oil.

As others have pointed out there's also a ton of bad information in this about fuel cycles and half life being the biggest driver of clean vs dirty nuclear, but lest I perpetuate more bad information...

Here's a detailed look at the science: [http://www.world- nuclear.org/information-library/current-and...](http://www.world- nuclear.org/information-library/current-and-future-generation/thorium.aspx)

Thorium or otherwise, it's tilting that the public perception of nuclear energy is based on dated technology. Almost as tilting as electric cars being marketed as zero emission. We as a society have to figure out better answers to power production. When you sell bad science or buzz words to people who really take them as such without realizing that the power still has to come from somewhere, there's less support for funding the research that gets us end-to-end clean power.

Also, FWIW, the only reference I found to "war time politics" being the main driver was [http://discovermagazine.com/2014/june/3-ask- discover](http://discovermagazine.com/2014/june/3-ask-discover). I'm guessing the full history was far more complex and nuanced than that.

</comment><comment><USER13> The timeline is all wrong:

> In 1945, theory was turned into practice. (I can't even WRITE that without > my skin crawling, but nevertheless, it can't be un-done now). Immediately, > the scientists saw that if they just slowed down the reaction a bit, they > could get controlled power. Power almost without limit. Power without > pollution.

The first controlled chain reaction was achieved by Fermi in 1942, 3 years before Hiroshima.

<comment><USER14> Yeah this article is garbage and has a middle-school understanding of the history of things at best.

</comment></comment><comment><USER15> And what the author handily omits: Since the Thorium fuel cycle is based around transmuting Thorium into U-233, which is fissionable, Thorium reactors can be a less complicated that Uranium enrichment pathway to the bomb.

True, not the one the military likes because of U-232 impurities, but good enough for rogue states and other malicious actors to blow up a couple of blocks of a city.

And that is why Thorium is actually tightly controlled. And why there won't be a Thorium revival.

</comment><comment><USER16> Searched for THTR-300 [1] in the article and nope doesn't come up. It was a commercial size thorium reactor and showed that with a different reactor design you simply have to fight with other problems which the German wikipedia article lists [2]. In the end it didn't offer any of the magical advantages often claimed for thorium reactors and the project ran out of money. Now the government has to pay to clean up.

[1] [https://en.wikipedia.org/wiki/THTR-300](https://en.wikipedia.org/wiki/THTR-300) [2] [https://de.wikipedia.org/wiki/Kernkraftwerk_THTR-300#Problem...](https://de.wikipedia.org/wiki/Kernkraftwerk_THTR-300#Probleme_und_St.C3.B6rf.C3.A4lle)

</comment><comment><USER17> Interesting note, this is the same person as the recently popular "I am being sued, in East Texas, for using Google" video.

<comment><USER18> Has a similar tone. I find the tone to work better with video than text.

</comment></comment><comment><USER19> Oh man, it's time for the annual thorium post.

It doesn't need to be evangelized. Don't worry, the scientists and the energy companies are already aware of thorium.

</comment><comment><USER20> Reads like a typical Thorium article.

They always seem to imply that there is some worldwide government conspiracy against Thorium based energy.

And they always gloss over the fact that this is an old idea that to this day still hasn't managed to prove any of its claims even as a proof of concept.

Throw in the fact that renewable energy is picking up steam and you have a recipe for some very unhappy Thorium proponents indeed.

<comment><USER21> > And they always gloss over the fact that this is an old idea that to this > day still hasn't managed to prove any of its claims even as a proof of > concept.

This isn't true. There's been proof of concept.

It's just that people who actually develop Thorium power make more reasonable claims, and its actual advantages aren't that compelling.

Waste storage is next millenium's problem, and the cost of nuclear power is dominated by amortized infrastructure, so the economic advantage of thorium (fuel is more abundant, hence cheaper) just isn't very exciting.

</comment></comment><comment><USER22> There's quite a good article debunking Thorium misconceptions here: [https://whatisnuclear.com/articles/thorium_myths.html](https://whatisnuclear.com/articles/thorium_myths.html)

I found it interesting that the reactors can actually be quite good for making bombs.

>In the case of the molten-salt U-233 breeder reactor, it was proposed to have continual chemical processing of a stream of liquid fuel. Such an arrangement also offers a way to completely bypass the U-232 contamination problem because 27-day half-life Pa- 233 could be separated out before it decays into U-233.

And apparently U-233 works fine in bombs:

>because of its low rate of spontaneous-neutron emission, U-233 can, unlike plutonium, be used in simple gun-type fission-weapon designs without significant danger of the yield being reduced by premature initiation of the fission chain reaction

</comment><comment><USER23> Newport Tower was built in America in the year 1670. Now read this quote about how long Thorium will remain dangerous.

"... And now, finally, the really big one: A Thorium Nuclear reactor would make much less radioactive waste than a convention Nuclear Power Plant, and most of the waste that it DOES make would only be dangerous for…. 300 years. ..."

We could totally manage a Thorium nuclear waste site in a 300-year time frame!

*Newport Tower: [https://en.wikipedia.org/wiki/List_of_the_oldest_buildings_i...](https://en.wikipedia.org/wiki/List_of_the_oldest_buildings_in_the_United_States)

</comment><comment><USER24> The post minimizes the utility of a thorium reactor for making fission weapons.

Neutron irradiation of the most abundant isotope of thorium (Th232) produces U233. The US, the USSR and India have successfully tested U233 in fission weapons. [1] BTW, India has ~ the world's second largest known thorium reserves. [2]

Also, I'd be concerned about the long-term corrosion effects of molten fluorides on pipes, pumps, etc., especially those parts that are in a high neutron flux environment.

Not saying that Th reactors wouldn't be a better choice than what we've fielded to date, but the posted article doesn't lead me to that conclusion.

[1] [https://en.wikipedia.org/wiki/Uranium-233](https://en.wikipedia.org/wiki/Uranium-233) [2] [https://en.wikipedia.org/wiki/Occurrence_of_thorium](https://en.wikipedia.org/wiki/Occurrence_of_thorium)

</comment><comment><USER25> The ratio of plutonium needed to seed and convert thorium into fissionable uranium-233 is very high (4:5)

[https://en.m.wikipedia.org/wiki/Thorium- based_nuclear_power](https://en.m.wikipedia.org/wiki/Thorium- based_nuclear_power)

</comment><comment><USER26> iirc Flibe Energy is working on a LIFTR reactor [http://flibe- energy.com/](http://flibe-energy.com/)

</comment><comment><USER14> "We can give you TWO kinds of reactors: URANIUM-based, where the by-product will be PLUTONIUM, which you can use to make bombs..."

Countries aren't like "Oops I guess we have to make a bomb now," with the plutonium. They are very much happy with that possibility.</comment>


The Ruby on Rails Tutorial, 6th Edition - <AUTHOR> https://news.learnenough.com/ruby-on-rails-tutorial-6th-edition-launch <comment><AUTHOR> This is the newly updated 6th edition of the Ruby on Rails Tutorial, now updated for Rails 6.

Over the years, HN readers have been some of the most enthusiastic and loyal supporters of the Ruby on Rails Tutorial. Thanks—I appreciate it!

<comment><USER2> I've enjoyed reading many editions of Rails Tutorial, which is among the few technical documents I consider fun to read. A worthwhile read, even for people not working with Rails.

And extremely cool you've kept Rails Tutorial current all these years!

</comment></comment><comment><USER2> Does the Rails Tutorial 6 discuss the rgeo gem (for GIS/location features)? [https://github.com/rgeo/rgeo](https://github.com/rgeo/rgeo)

While Rails docs tend to be clearer, GeoDjango is one area where Django seems to have relatively more accessible documentation. [https://docs.djangoproject.com/en/2.2/ref/contrib/gis/](https://docs.djangoproject.com/en/2.2/ref/contrib/gis/)</comment>


Ask HN: I am QA, How do I learn to code? - <AUTHOR> I have been working as a QA for a while now and never had to write much code. Now our QA department is moving towards automating Test. I have to contribute but I don't know the best way to proceed on how to learn to code. Please help me. <comment><USER2> Obey The Testing Goat!. Get yourself the book Test-Driven Development with Python. It will turn you into a an automated testing wizard. it is a great book and you will learn in no time how to run your automated tests. Then learn Docker and be amazed on how you can use Docker + Jenkins to do automated testing. You will be a God among the QA team and the devs will have lots of respect for you.

<comment><USER3> [http://www.obeythetestinggoat.com/](http://www.obeythetestinggoat.com/) for the curious...

</comment></comment><comment><USER4> Speaking as someone who was once in your shoes, by far the fastest way to learn to write automated test cases is to learn from existing ones. Suppose someone more senior than you has written a test that does this:

\- Set up the framework and connect to the app under test \- enter "fred" in the username field \- enter "derf" in the password field \- click the Submit button \- verify that the login is successful

Then if you copy-paste that test and spend some time experimenting with it, you can probably turn it into a test that enters an incorrect password and verifies that it is unsuccessful without really doing any actual "coding". That's the best way to contribute while you come up to speed - the more cases you write, the more comfortable you will get with the language and with the framework.

If you don't have someone senior to copy off of, you can still do it, it'll just go slower. "How do I get selenium to click a button" plus an afternoon will get you well underway. Steer clear of any "programming fundamentals" \- you don't need to understand classes and interfaces and the difference between "final" and "static" yet, you just need enough basic syntax to get some simple tests built so you can experiment with them.

Good luck!

</comment><comment><USER5> The way I learned was through books and BBS's but that may not be as applicable anymore. What type of environment do you work on? Languages, frameworks, and tools?

I would suggest if you have the option that you pair with one of the programmers at your company. One of the best ways to learn is to jump right in and do it with someone more senior than you are. If they are willing to take a few minutes or hours a day to allow you to really pair with them, you'll learn quickly!

</comment><comment><USER6> I recommend going through this python tutorial: [http://automatetheboringstuff.com/](http://automatetheboringstuff.com/)

</comment><comment><USER7> A QA is a squire. Squires become knights.

You get to see the code and architectural decisions your engineers make when you move into automated testing. In many cases, you're in a position to be paid to learn.

What programming language / framework is the code in?</comment>


Tell HN: Hiring .NET hacker in Valencia, CA - <AUTHOR>

If you'd like to work for a financially stable company yet be part of a small dev team that cranks out several new apps a year, we'd love to talk to you.  Our company recognizes and rewards excellence.  If you love to crank out well-built apps in ASP.NET or Silverlight that users love, we want you.  Not looking for corporate drone types. <comment><USER2> How can HN users get in touch with you?

<comment><AUTHOR> david dot larsen at gmail dot com</comment></comment>


Simple Made Easy (By Rich Hickey) - <AUTHOR> http://www.infoq.com/presentations/Simple-Made-Easy/

<comment><USER2> immutable goodness</comment>


A Young Chemist Explains How Legal Highs Work - <AUTHOR> http://www.vice.com/read/research-drugs-and-the-grey-market

<comment><USER2> The problem with prohibition is that it drives the market to find new and creative solutions. Market creativity doesn't always jive with human health and safety.</comment>


Dropbox: Useless for documents using utf8 ( Web Interface ) - <AUTHOR> http://forums.dropbox.com/topic.php?id=59314

<comment><USER2> Title is needlessly inflammatory. Their web interface seems to have a bug with the encoding detection.

<comment><AUTHOR> Yep, Fixed.</comment></comment>


Django project optimization guide – Part 1 - <AUTHOR> http://dizballanze.com/django-project-optimization-part-1/ <comment> git-pull This is my first time hearing about Silk. Thanks for mentioning that, looks like a dream for profiling. GitHub for clicking: [https://github.com/django- silk/silk](https://github.com/django-silk/silk)

To add, if using Django Debug Toolbar, there is a line_profiler [1] extension for it: [https://github.com/dmclain/django-debug-toolbar-line- profile...](https://github.com/dmclain/django-debug-toolbar-line-profiler)

[1] [https://github.com/rkern/line_profiler](https://github.com/rkern/line_profiler)

<comment><USER2> I help maintain django-silk. I wasn't the original creator but that person has virtually no time to maintain it.

I wanted to take a moment here and tell the HN community thanks for all the contributions/support the library has received to continue along. It can definitely use all the support it can get. Silk has so much potential but works as a free tool for many.

</comment></comment><comment><USER3> Excellent guide. Lots of things I didn't know about apart from Debug Toolbar!

Previously I've hacked in printing out SQL statements, but the logging configuration is a lot nicer.

<comment><AUTHOR> Check out part 2! [https://news.ycombinator.com/item?id=14694092](https://news.ycombinator.com/item?id=14694092)

</comment></comment><comment><USER4> For the profiling, I'd also recommend `run_profile_server` from django- extensions, and Snakeviz as a visualiser for that data. It records cprofile reports per-request so can be useful for seeing what takes the time in a single request.

Common hot-spots I've noticed (other than n+1 queries) is deserialisation of database rows into Django ORM objects - it's relatively expensive, and template rendering. I'd definitely choose Jinja2 on a new project for templating as it's more generally more capable and approximately 2x faster, the downside being the goal of "logic-less templates" is slightly harder to achieve.

<comment><USER5> Jinja2 has some crucial features missing in django templates, but we can add this to the django template as filters and functions.

On the other hand, many django plugins are written to accommodate only django templates. By choosing jinja2, you will be severely limiting what plugins you can use.

Jinja2 is more like a superset of django templates with some minor syntax modifications.

So I would recommend you go with django templates and bring in jinja2 only if needed (which would be 0.001% of the time)

This is from experience where I went with Jinja2 for one project and learned my lesson. Now for the next one I just went with the default. Some of django template's choices are bit of an hindrance but an affordable price for the interoperability it provides.

<comment><USER6> Curious comment. What Django plug-ins were you using that caused you problems with Jinja2 templates?

We've been using Jinja2 at my startup since the beginning; in the four years I'be been working here I can't recall any issues with plug-ins using it.

<comment><USER7> I'm not who you asked, but the first thing that comes to my mind is contrib.auth.views, which look for templates at the default locations or the locations you provide (as described here: [https://docs.djangoproject.com/en/1.11/topics/auth/default/#...](https://docs.djangoproject.com/en/1.11/topics/auth/default/#module- django.contrib.auth.views) )

So using non-django templates would rule out this kind of thing right?

</comment></comment></comment></comment><comment><USER4> I was quite excited to see this, but I feel like almost everything in this post was "table stakes" for production Django, and nothing particularly groundbreaking. Having said that, I work on a large Django codebase, maybe these things aren't as common in smaller projects.

Looking forward to Part 2!

<comment><AUTHOR> Hi, I have released part 2: [https://news.ycombinator.com/item?id=14694092](https://news.ycombinator.com/item?id=14694092)

</comment></comment><comment><USER8> I found this helpful for DB Optimization - [https://medium.freecodecamp.com/django-performance- optimizat...](https://medium.freecodecamp.com/django-performance-optimization- looking-for-the-bottlenecks-8583789e341b)

</comment><comment><USER9> Not open source, but I found newrelic useful to quickly profile and discover bottlenecks in Django code.

</comment><comment><USER10> Thank you for putting this document together

</comment><comment><USER11> Simple stuff, but useful.

<comment><AUTHOR> Check out part 2! [https://news.ycombinator.com/item?id=14694092](https://news.ycombinator.com/item?id=14694092)</comment></comment>