Plan B - Skip College - <AUTHOR> http://www.nytimes.com/2010/05/16/weekinreview/16steinberg.html?src=me&ref=general <comment><USER2> I think what bothers me most when I read this sort of article is that it treats all college degrees as equivalent. They talk about average earnings potential and average unemployment rates, but they never break it down. If you get a B.Sc. instead of a B.A., how does that effect your chances?

Almost all my friends without some sort of technical degree (Chem, CompSci, Physics, Math, etc.) aren't working anywhere near their field of study. They paid tens of thousands of dollars so that they can be secretaries, waitresses, and ice cream parlour cashiers.

<comment><USER3> Exactly. Also, I think it errs by treating all colleges as equivalent. Since the government subsidises educational loans there are many colleges out there that do not provide much of an education but mostly exist to siphon off those subsidised loans.

I think there are many colleges out there which are just not worth going to. Mind you, I am not an ivy league snob, I am not saying go to a top 50 school or not at all. There are many great schools that are ranked much lower.

But all of those for profit colleges that advertise heavily are mostly a waste of money. If you want to learn something, go to a school that is either public or private but set up as a non-profit and has an established reputation of supporting scholarship and research. Just forget about the ITT techs and universities of phoenix. Community college would be better than those.

I think the government is just too loose with the loans it subsidises.

<comment><USER4> absolutely. if people paid market rates for education loans, you'd see an increased focus on rate of return. And we'd also see an increased focus from schools on quality instruction in well paid fields and less spending on recreational facilities.

For-profit schools may not be as well regarded, but remember that they have to pay taxes while the others don't. And many get a lot of other subsidies as well. So the real costs are somewhat obscured.

<comment><USER3> I am not sure I agree with that. I like subsidized loans. They should just be more careful that the loans go to worthwhile schools and degrees.

<comment><USER4> they'd be more careful if they personally were taking on the real debt that makes the subsidies possible. instead, others are forced to take it on because they'll be stuck paying off a massive $13 trillion national debt.

its time people took responsibility for their own choices.

</comment></comment></comment></comment></comment><comment><USER5> All well and good if it's all about smarts and money, but the social aspects of having to spend four years collaborating and tolerating your peers cannot be underestimated. People who've gone through four years of college are, typically, well-rounded in their general knowledge and social skills, more liberal and more tolerant.

Colleges don't just take in kids and output kids with knowledge. They turn kids into a certain type of adult.

<comment><USER6> speaking as someone who didn't go to college, I kindof agree. I mean, I don't know if I agree with the 'more tolerant' bit, but certainly, more liberal and better able to get along with other people who have college degrees, more likely to understand (or at least pretend to understand) modern art, etc...

There are also other, harder to define social changes. The most negative side of this is that I know people who earn 1/5th what I do who won't lower themselves to replacing the brakes on their car. I mean, 'round these parts, mechanics charge $70-$90 an hour. Not many of us make more than that after taxes. This unwillingness to 'break the rules' and accomplish what you need to accomplish can be a pretty big problem.

I don't know if it is what college teaches, or if this is simply what college filters for, but it seems that people who went to school have a narrower view of what they are able/willing to do. (Not as narrow as what one learns in service jobs, but still pretty narrow compared to those of us who do work that 'requires' a degree without having one.)

I mean, that's not always true. I know many English majors turned programmers, some who have become really excellent, and a ridiculous number of physicists turned programmers. But College, in general, seems to come with a diminished respect for industry, especially the trades and working with your hands in general (unless it is 'art') - see discussions here about programming as an art. to some people, it seems, you are somehow insulting programming by comparing it to the work of an electrician, a bricklayer or other tradesman, which to me absolutely sings of arrogance.

<comment><USER7> Your last line - seems more like insecurity to me than anything else.

<comment><USER6> Maybe. In some ways, I'm very proud to have as done as well as I have without school... in other ways I feel like a dumb hick around my co-workers. Hell, even half the people who work for me now went to school. So yeah, there is maybe some, ah, feelings of social inadequacy there, but I don't think that entirely invalidates my point.

Oh man, speaking of coming off like a hick, yesterday I took my new intern out to the co-lo (the last few days have been a flurry of hardware work) As usual, I stopped off at the local, excellent BBQ place (Sams BBQ; pretty close to my co-lo in San Jose) It was bluegrass night (I hadn't remembered this)

He commented "Wow, this is.... authentic" - I don't know if he thought I was going to tell him he had a 'purdy mouth' or what, but he was obviously pretty uncomfortable. He ended up getting his chicken sandwich 'to go'

The whole day probably wasn't going well for him. he wants to do software stuff, but circumstances dictated that hardware was the order of the day, so he got to follow me around in noisy environments while I tracked down obscure parts.

<comment><USER7> Nice comment. Just to make sure we're on the same page here, my comment about the insecurity was aimed at people who are insulted when programming is compared to tradesman like work.

Based on your civility and overall personality if I was to meet you with no prior knowledge of your educational history I would assume you had a bachelors if not a graduate degree.

<comment><USER6> I am, ah, somewhat different in person. I met my current girlfriend on a mailing list. When we first met, she said "Wow, you a lot less articulate in person"

<comment><USER7> Hah. I might be the same way. A lot of times I realize I don't know how to pronounce words or that I've never said words verbally even though I use them all the time online.

Case in point: 'articulate'. I bet I've used it quite a bit online but nary a time in real life.

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> I saw a comment in here about people who earn degrees but end up in jobs that aren't even remotely related to them:

I just started a job at the data center of a major mobile provider, electronics developer and appliance manufacturing organization. My particular department is the IT department that supports the call center operations, there are six guys total in my department.

I have a degree in political science. Jim (names have been changed) has a degree in biology. Joe has a degree in English Ken has a degree in environmental science.

Just barely 80% of the people in my department don't have computer science degrees, but we're working in the IT department of a mobile provider. How did we get the jobs? We're all hackers who grew up around technology and got practical, real-life experience.

Personally, I think that's the way to go. But at the same time, I'm reminded everyday of how important humanities studies are, when I'm in a conversation with someone younger than me about politics, and I bring up the Holocaust and they genuinely don't know what the Holocaust is.

Then I see people who vehemently defend the notion that if you don't make practical application of the knowledge provided in these humanities class, they're moot and you don't need to know them.

Talk about being on the fence, I'm living it everyday.

</comment><comment><USER9> I've always wondered what the employment / income benefits for a degree are once you account for intelligence. It seems to be that there is a lot of schooling that goes unused.

<comment><USER10> I think you've pointed out the elephant in the room. In America it is politically incorrect to believe that some people might not have the cognitive capacity to excel in college and in jobs requiring college degrees. Every American is above average. If each citizen is not Bill Gates, it is because they are the victim of circumstance. Other people held them down, the system failed them. The successful must be condemned for prospering at their expense and another reform must be tried.

We would rather the vast cognitive middle class take out thousands of dollars in debt and drop out than "admit defeat" by encouraging them to pursue skilled careers in nursing, maintenance and repair, and etc. I am skeptical that the billions of dollars of tax money and individual money spent on the pipe dream of sending every person to college has been worth the expenditure.

Plans that ignore reality are doomed to failure, no matter how well- intentioned. And the reality is that not everyone is cut out for Harvard.

<comment><USER11> Exactly. The whole "anyone can do anything" culture in America has its benefits, but also its costs.

I personally think a good middle ground is to be sending far more students to community colleges. This doesnt immediately comdemn lower-level jobs to the truly determined (as they can transfer out), but it is far more affordable than a 4-year degree without much in the way of a loss of benefits for the students.

On the other hand, It seems like far too many jobs in the US require bachelors degrees these days. If a job doesnt require a specific major/set of majors in the posting, the work probably doesnt require a bacheolars at all.

<comment><USER10> A recent Econ Talk podcast reviewing a sociologist's study of low-wage workers showed that technical degrees and certificates can make a huge difference in a person's earning potential:

[http://www.econtalk.org/archives/2010/03/newman_on_low-w.htm...](http://www.econtalk.org/archives/2010/03/newman_on_low-w.html)

Though "community college" has a certain stigma among the intellectual classes that debate and shape public policy, these programs make a strong positive impact in people's lives.

</comment></comment></comment></comment><comment><USER12> Especially amusing: of the 10 fastest growing job categories, two require college degrees. One is accounting; the other is postsecondary education.

In other words, the manufacture of college degrees.

This is powerful support that the age of the ubiquitous bachelor's degree may soon be over.

<comment><AUTHOR> _"This is powerful support that the age of the ubiquitous bachelor's degree may soon be over."_

It's incorrect to interpret this article as evidence for an anti-intellectual world-view. Nothing in the article suggests that bachelor's degrees will be unimportant in the future, particularly for the best jobs. The article also points out (correctly) that people without college degrees make less on average, and have less reliable employment.

If anything, this is a disturbing piece of evidence that jobs requiring skilled labor are becoming less prevalent. However interesting the trend may be, I don't think it's a trend to celebrate. I'd rather live in a world where college education is in demand, than one where we're sending kids to vocational school because there's no point in trying to do better.

<comment><USER13> You're lucky if you encountered many intellectuals as an undergrad.

But actually I think you're right - skilled white collar jobs will die out before skilled or unskilled "blue collar" jobs do. People always will need a broken car fixed, or a wall in their house repaired. The world doesn't necessarily _need_ brand managers and analysts. Most think-work jobs in offices (which college is preparing you for) are non-essential in the grand scheme of things.

<comment><AUTHOR> I encountered a lot of intellectuals as an undergrad, actually -- and I didn't go to a particularly great school. An undergraduate education is worth what you make of it. If you hang out with idiots, you'll find idiots. Everywhere. But if you're the type of person who would succeed without a degree, you'll have _far more_ opportunity if you can finish college. It's a fact.

Also, you've entirely missed the point of what I wrote: if we do end up living in a world where skilled jobs die out before unskilled jobs, we're in trouble. Hundreds of years of human societal progress have depended upon education and technological development. When that trend goes the other way, our society is well on its way to decline.

When I look over the comments in this thread, I can't help but noticed that 90% of them can be summarized as _"I knew some stupid kids in college who did things I think are useless; I knew some kids who didn't go to college and succeeded; therefore, college is useless."_ It's a logical fallacy, writ large. And when you start associating symbols of education with effete snobbery, you're engaging in anti-intellectualism, no matter what you've accomplished in life, or how many books you read in your spare time.

I honestly don't know why my (parent) comment deserves to be voted down into the weeds, but it makes me a little sad that we've reached the point where a group of "smart" people can so utterly dismiss a factual comment in favor of group-think. If you don't think college is worthwhile, that's fine. But it's still a fact that a college education is associated with higher lifetime income and greater job stability. And I stand by my assertion that _if this trend ever reverses itself_ , our society is in trouble. Glorification of blue-collar labor is a fad reserved to those nations who have the luxury of a lot wealth to lose.

<comment><USER13> I didn't miss your point, I just didn't re-iterate it. I am in agreement with you, but I am pessimistic. I think we are in trouble.

Regarding intellectuals at university, I also met a handful, and I bet the school I went to was much worse than yours. That said, it seems hard to argue that advanced education in the USA is promoted as a place for intellectual advancement. At best, university is marketed as a way to get a better job. At worst, it's the place where Girls Go Wild.

<comment><AUTHOR> _"I didn't miss your point, I just didn't re-iterate it. I am in agreement with you, but I am pessimistic. I think we are in trouble."_

Fair enough. Sorry for misunderstanding. I was/am mainly replying to the general anti-intellectual attitude on this thread, but I did misinterpret the tone of your remark (I was under the impression that you thought it was okay that white-collar jobs might be diminishing).

 _"it seems hard to argue that advanced education in the USA is promoted as a place for intellectual advancement. At best, university is marketed as a way to get a better job. At worst, it's the place where Girls Go Wild."_

I think that the marketing strongly depends on the school, but yes, some schools do focus on promoting the career training aspect of college. Nevertheless, my feeling is that (with the exception of schools like ITT and the University of Phoenix) the marketing is distinct from the experience. Once you're in college, you've got huge opportunities for learning that you wouldn't otherwise.

The people in this forum who dismiss college as an unnecessary affectation of the elite scare me. It's one thing to be philosophical about the value of a philosophy degree, but it's totally another to assume that college is useless because you can always get work as a plumber (or a coder). I don't think they realize how much the well-being of plumbers (and coders) depends on the people who create new knowledge and technology at universities.

</comment></comment></comment></comment></comment></comment><comment><USER14> Every week I see an article like this one. Maybe it's supposed to be some sort of innuendo that someone needs to solve the "education problem." But it's not an education problem and neither are most of the other problems that plague our society. It's a money problem, has been and will always be so. We all silently say to ourselves, "If I can just get that ______ I will be set." But how often does this prove true?

There are too many sort-sighted patches out distracting us from the truth that our depression is our money. How about we see through the symptoms into the disease for once with a few intelligent alternatives to money/points/etc (all patches that provoke distrust in one another and needless hoarding or competition). People love to say moneyless economies would create incentive for irresponsibility but our reality has proven that to be the exact opposite.

Please don't "skip" college, I don't want to see anyone have to serve me my "ice cream" even 4 years from now--there's nothing wrong with automated solutions. More of the same never changes anything but then again, it seems, neither does saying so.

</comment><comment><USER15> This article is so wrong, on so many levels it's hard to imagine that this was in a respected newspaper. The idea that some folks should not go to college is, at best, quaint. This reason that people attend college varies a great deal. Not everyone looks at it as a means to a financial end (otherwise there would only be several majors - Finance, Medicine, Law, Engineering). Do you think an English Lit major expects a job at Goldman Sachs upon graduation? Educators are suggesting this because they are dealing with a wave of unprepared Freshman and it costs them more money to teach remedial classes and then risk these folks dropping out. This is a "business" problem for the higher education industry. Wait, think about that phrase, "Higher Education Industry". College has become a big business. No longer do Universities exist to educate our population, they are now a for profit business. In California, it's easier to be admitted to a public university if you're from out of state than if you're a resident because the schools can charge more for out of staters.

The problem is that funding for K-12 schools has dwindled leaving our US grown kids unprepared for the riggers of university. At the same time the Higher Education Industry is looking for the highest profit students to attend and they are coming from out of state and out of this country. That leaves us with a workforce that is not home grown and a culture that underachieves.

</comment><comment><USER16> from: [http://abcnews.go.com/Business/story?id=7636561&page=1](http://abcnews.go.com/Business/story?id=7636561&page=1)

"According to a survey from National Association of Colleges and Employers, the class of 2009 is leaving campus with fewer jobs in hand than their 2008 counterparts. The group's 2009 Student Survey found that just 19.7 percent of 2009 graduates who applied for a job actually have one."

</comment><comment><USER17> take 100 individuals, 50 go to college, and the other 50 don't. 10 years out, measure the financial stability (cash flow, net worth, etc) of both groups. I guarantee those that went to college fair better. Not saying that money is everything, but it is a powerful enabler.

</comment><comment><USER18> the income stats are a lie anyway

<comment><USER19> Explain? Without more information this comment is useless.</comment></comment>


Journalists Dancing on the Edge of Truth - <AUTHOR> http://www.nytimes.com/2012/08/20/business/media/journalists-plagiarism-jonah-lehrer-fareed-zakaria.html?_r=1&src=dayp

<comment><USER2> Notice that he writes _and manage to steer clear of proprietary intellectual property_. Seems a shame that the very concept of "intellectual property" (doesn't mention what kind, patent, trademark, copyright, trade dress, trade secret) can intrude on reporting. We're seeing "intellectual property" begin to override freedom of speech. This is a very disturbing trend.</comment>


Nim – version 1.2.6 and 1.0.8 released - <AUTHOR> https://nim-lang.org/blog/2020/07/30/versions-126-and-108-released.html <comment><USER2> Note: This is a month old, not sure why it was posted today - and both versions are minor bugfix versions.

The next series, Nim 1.4, is going to bring speed, size and predictability improvements as well as FFI that better matches e.g. Python's object life cycl. This is done by moving from the existing soft-real-time thread local mark-and-sweep collector (which works extremely well, but does impose some constraints) to a much smarter reference counting with optional cycle collector.

Nim is the only language I'm aware of with different yet practically replaceable garbage collection: RC, Mark & Sweep, Boehm, None, and a couple of deprecated ones. They all have pros/cons, but they all work well.

<comment><USER3> > different yet practically replaceable garbage collection: RC, Mark & Sweep, > Boehm, None, and a couple of deprecated ones

The new ARC (automatic reference counting) and ORC are the most promising.

No runtime, no pauses, thread-safe, verified at compile-time.

<comment><USER4> As the OP said, these releases were put out a bit ago. The Nim team has been working hard on squashing the bugs with the new ARC/ORC garbage collector. There's still bugs with ARC/ORC particularly with async. The main reason there's a lot of bugs with ARC is that it also makes heavy usage of move semantics similar to the new C++ `std::move` which can significantly improve GC performance vs traditional reference counting alone, but takes some tuning of the standard library to work properly.

I've been eagerly following it as my company is using Nim embedded on the ESP32 -- primarily since, well, I don't care much for programming C/C++. With Nim I was able to write a JSON-RPC server in a few dozen lines and it compiles with only a few hundred kB for everything including nice error handling. My PR merged to bring experimental support for FreeRTOS/LwIP to Nim got merged into the devel branch today! If anyone wants to help out, check the Nim forums.

</comment></comment></comment><comment><USER5> I like Nim. Quickest possible description - it sits between Go and Rust. If you find Go boring or missing features, but Rust has too steep a learning curve - Nim. I found it strangely intuitive to get going with - easier than Go. With a smaller community still, there's plenty of room to contribute too.

<comment><USER6> In my experience every language sits between Go and Rust, apart from C++.

<comment><USER7> No, I would say that most languages sit above Go - i.e., most languages are higher-level and have lower performance (in the general case) than Go.

<comment><USER8> Nim almost always produces faster running executables than Go in my experience, but is also higher level/more featureful. It also compiles very quickly if you use the TinyCC/tcc backend C compiler.

<comment><USER7> I never said anything about Nim. My reply was saying this:

      [ Most languages ] - [ Go ] - [ Some languages ] - [ Rust ] - [ Way fewer languages ]

In the above, languages are lower-level and higher performance ( _in general_ ) as you move to the right.

</comment></comment></comment></comment></comment><comment><USER9> __Off Topic a little, I think __

Do you guys think there is in theory, the best programming language, or will this always be subjective

I started learning Julia recently, and my first impression was , scoping rules are a mess, I like Julia a lot and I think its probably one of the better languages and better communities that exist today (but oh my, scoping, what a gafe (in my opinion))

Is scoping really still a subjective issue, do we not know yet the best approach to scope variables for example?

Static typing, Dynamic Typing, Gradual typing, will this be a debate for ever

Learning languages is big investment, and having dozens of languages around is not productive, human languages are consolidating over a few, English is by far the business language of the world

Why does language design continue to be a subjective topic? its not like computers need cultures !

How is relevant to Nim, well as I said its a bit off topic, but we can always ask the question, why does Nim exist, or do we need Nim to exist

<comment><USER10> What purpose did you use Julia for? Julia was hyped like 2 years ago but right now i didn't see any new cool lib or even a blog posts and DL libs are lagging hard compared to python DL libs (torch, tf, jax etc.).

<comment><USER11> Julia was hyped, and now is used in production by several well known institutions.

[https://juliacomputing.com/case-studies/](https://juliacomputing.com/case- studies/)

Most of those libraries are Python bindings to libraries written in Fortran, C, and C++, whereas on Julia's case many libraries are pure Julia code.

<comment><USER10> It was hyped and probably are used in even more places (in my previous work i even wrote a full Julia based parsers etc.) But still i didn't see much advantage of writing in Julia now 2 years and even maybe 1 year ago there were few (before numba and other JIT python stuff was working fine). Right now for me its just l'art pour l'ar you almost never get performance like in C/Nim/RUST and you don't even have much good libs in the community (compared to python thier main rival).

<comment><USER12> As someone who uses TF/PyTorch/JAX and numba for their day-to-day DL work, I've been watching Julia's post-hype developments in this area intently. Julia has probably the most vibrant ML ecosystem of all the non-Python languages (remind me when someone has implemented a transformers library for Arraymancer [1]), and absolutely smokes Python in certain niches (e.g. neural ODEs and more under the SciML [2] umbrella, I'd argue Python is "lagging hard" there). Numba _can_ work for speeding up simple operations, but is rife with limitations that prevent optimizing more idiomatic Python code and is an absolute pain to debug. Likewise, trying to decipher or even catch errors from deep in the C++ bowels of most modern DL frameworks is an exercise of frustration.

Python may still be the best language for non-cutting edge deep learning, but we ought to consider whether we've overfit our algorithms to the limitations of the current system [3].

[1] [https://github.com/mratsim/Arraymancer](https://github.com/mratsim/Arraymancer) [2] [https://sciml.ai/](https://sciml.ai/) [3] [https://news.ycombinator.com/item?id=20301619](https://news.ycombinator.com/item?id=20301619)

</comment></comment></comment></comment></comment><comment><USER13> I know that the traditional C++ generics convention of <> is problematic during parsing but Nim's choice of [] was a bridge too far for me. There was a post asking for better syntax on the official forums but it got closed.

<comment><USER14> Personally I think [] is genius. I don't use typing in Python, but when I saw it done there I was delighted. If my_array[idx], why not list[int]? Not to mention the ease with which it can be implemented, overridden, etc

</comment></comment><comment><USER15> Can Flutter like framework developed on top of Nim ? It would be great.

<comment><USER16> AFAIK Nim can use C and C++ libs so yeah, in principle you should be able to produce a cross platform GUI.

<comment><USER3> There's a number of cross-platform GUI frameworks for Nim.

</comment></comment></comment><comment><USER17> an excellent use of nim is [https://nitter.net](https://nitter.net) (browse twitter tracking free).</comment>


Ask HN: Why Is Bootstrap So Wide-Spread? - <AUTHOR> As a backend web developer, I'm not very good with design and styling.  With that, I tend to lean on templates for projects.  The big thing I have noticed, and tend to get annoyed by, is there are so many Bootstrap templates.  Even when I pay for a template, Bootstrap.  I tried to hire a freelancer once, and I had to go pretty deep in the bids to find someone who didn't use Bootstrap.  Nothing wrong with it, I just know that there are other CSS and frontend systems that are simpler to manage than Bootstrap.  So why is there so much of this out there? <comment><USER2> Because bootstrap was the first one to fill the "market" and it became widespread and the golden standard. Many people once they learnt that could probably work more efficiently. More bootstrap = less work on a template = more templates = more money. They probably don't feel compelled to learn something new and chances are that there is also a huge demand for bootstrap templates for similar reasons.

</comment><comment><USER3> I just finally switched one of our projects from a very crappy framework called Metro UI to Bootstrap. The reasons were that the other framework was very poorly coded, supported almost nothing out of the box and also looked pretty bad in a lot of scenarios. Compared to that, Bootstrap works incredibly well, is very well-maintained, supports almost every scenario you can think of (if it isn't supported out of the box, you can find some plugin for it) and adheres to the latest web standards. On top, it's very easy to make something look good with Bootstrap (it will never look GREAT, but solid at least).

</comment><comment><USER4> You know how when you buy a car, you start to see it everywhere? This sounds similar, and I feel ya. Yes, there are plenty of Bootstrap themes out there, but there are also lots for Foundation and any of the other frameworks out there. Some good, some bad. But Bootstrap does indeed have the Lion's Share of searches, it seems.

Like some of the other folks above mentioned, Bootstrap really was one of the first to gain in popularity (thanks, Twitter) and to that end it's no wonder. For the most part it's fairly simple to get started with, there's plenty of pretty decent documentation, and a bajillion examples to gain inspiration (or insight) from.

Personally, I like it. It's not perfect and can be bloaty (that's a technical term, naturally) but in many/most cases it works just fine if you've had some experience with it and know how to tweak things.

</comment><comment><USER5> Many front-end developers prefer to complete work quickly. Bootstrap makes the process much faster and you don't want to read old CSS codes. I have developed a website without Bootstrap since the website will perform better. [https://www.justlearn.com](https://www.justlearn.com) \- We write custom CSS, but it takes more time to add new pages.

</comment><comment><USER6> If I might ask, why do you not like Bootstrap for your template? Is it the jQuery dependency, or the enforced similarity to other designs?

</comment><comment><USER7> I use it and yes it is everywhere, even an NFL site was using it a couple years ago. It's just reliable and easy to use.

I am looking at Tailwind, it's pretty interesting.

[https://tailwindcss.com/docs/what-is- tailwind/](https://tailwindcss.com/docs/what-is-tailwind/)

</comment><comment><USER8> Because it's really easy to use and well supported. I've used it in many projects without too many issues.

</comment><comment><USER9> First one to gain market share as a full CSS framework. At the time when bootstrap was released by twitter team, there was nothing like it. It gained fast adoption by people who cannot write raw css easily and was the first one to provide mobile responsiveness out of the box.

</comment><comment><USER10> Ecosystem. It's easy to find people who already know it to hire. It's easy to find modules and libraries for any sort of widget you might want to use. It's easy to find people who know it well to help you learn or troubleshoot it.</comment>


R 2.15.3 Released - <AUTHOR> http://www.r-project.org/index.html

<comment><AUTHOR> source: <http://cran.r-project.org/src/base/R-2/R-2.15.3.tar.gz>

or you can wait for it to be mirrored at a CRAN site</comment>


Rising Anxiety Among American Whites - <AUTHOR> https://www.nationalgeographic.com/magazine/2018/04/race-rising-anxiety-white-america/ <comment><USER2> Identity politics beget identity politics, and it's _always_ bad, period. The amount of comments in this thread alone talking about what "white people" are and aren't entitled to feel based off of their own privileges is representative of the wider left's own brand of identity politics, and quite frankly, racism.

If you're a white person hearing day in an day out about your inherent power in society, and how much you've benefited from "your people's" exploitation of others, the first thing I can guarantee is that you're much more likely to be defensively thinking along these terms of group identity. Regardless of whether or not those perceptions of privilege hold true for your specific situation, a part of you gains awareness that a non-negligible faction is making these categorizations on your behalf.

Where the identitarian reaction kicks in fully, though, is among the people for whom these tales of privilege and power quite clearly do _not_ hold true. If you're born to two alcoholic parents who beat you and got you working in the coal mines as soon as you possibly could, it's not difficult to see why the prevailing narrative doesn't sound appealing. The absolute baseline human response to feeling attacked along these hard group lines is an identitarian outcry taking various forms, the mildest of which could be classified as "rising anxiety." I'm not saying that this is a good thing, I think it's a terrible thing, I just also happen to think it is an obvious result of the economic and political climate. Trump and his supporters are not a disease, they're an ill-conceived, but expected reactionary symptom.

</comment><comment><USER3> This has nothing to do with skin color or racism on the part of white Americans.

The anxiety is not only among American Whites but also among Black Americans, and 2nd and 3rd generation Americans who speak only English. At least in cities like mine (Miami, Florida).

It's not just a fear but a real problem because people cannot get jobs here unless they speak Spanish. Black Americans can sometimes get hired without knowing Spanish, but never whites or 3rd generation "Hispanics" who speak only English.

Worse than that is that many businesses will not do any business in English. And they are somehow certified. At all levels. I personally have dealt with business owners, real estate agents, small retail store owners, investors, technicians, restaurant owners, and more who speak no English, only Spanish. You can't even order a pizza in English. My English-speaking son was hung-up on because he tried to order a pizza in English (I speak Spanish so I have to do the ordering).

There are pockets of Miami where English is spoken in businesses, particularly the tourist areas by the beach or downtown. Because it's treated like a foreign language. Also, government offices and libraries still mostly speak English.

There is real discrimination against non-Spanish speakers and white Americans. I don't know if data exists that shows this but it's witnessed and is common knowledge among people who live here.

This was not the case 21 years ago when I began having children. That's why I didn't think it was mandatory to teach my children Spanish. People still spoke English. Now, my kids will likely not get jobs unless we move elsewhere, which is easier said than done.

</comment><comment><USER4> I observe that the article starts out talking about closing coal mines and the decline of manufacturing jobs. As a white person, it sounds to me like the white people interviewed for this article face declining economic prospects (understandably of concern), notice an increased abundance of people of color around them, and then feel angry about the people of color. Emotions are of course not rational things, but I don't really understand the leap there.

After all, it seems like racial disparities between whites and people of color still exist, with whites on top ([https://news.stanford.edu/2017/06/16/report- finds-significan...](https://news.stanford.edu/2017/06/16/report-finds- significant-racial-ethnic-disparities/)). So the real wealth transfer seems to be from low-income whites to high-income whites. Bear in mind, I don't think that's a good thing at all. Indeed, it seems like the antipathy would be better directed at the wealthy, rather than people of color. Or the energy would be better spent lobbying for help transitioning economically away from dying industries like coal power. But somehow this nebulous notion of racial pride gets dragged into the conversation instead. I suppose that's just people being people, but it doesn't leave me too optimistic about our prospects for a more peaceful and sane future.

<comment><USER5> Your comment reminds me of this story told by Bill Moyers about LBJ:

We were in Tennessee. During the motorcade, he spotted some ugly racial epithets scrawled on signs. Late that night in the hotel, when the local dignitaries had finished the last bottles of bourbon and branch water and departed, he started talking about those signs. "I'll tell you what's at the bottom of it," he said. "If you can convince the lowest white man he's better than the best colored man, he won't notice you're picking his pocket. Hell, give him somebody to look down on, and he'll empty his pockets for you."

It makes sense today, too. If the wealthy can convince the poor that their hardships are caused by immigrants, then the newly poor won't consider how much of their previous wealth is being concentrated in a few hands.

<comment><USER4> YES to that LBJ quote. I seem to recall also reading a similar observation backed up quite thoroughly with statistics in Michelle Alexander's The New Jim Crow.

</comment></comment></comment><comment><USER6> This will probably be unpopular but here goes.

Honestly, if a community wants to be made of a particular homogeneous ethnicity or race it'd be much better if they were very up-front about it. Its fine, not everyone needs to be multi-cultural or multi-ethnic.

I'm looking at examples like Japan, they make it very difficult for outsiders to integrate, see the various "Gaijin" articles out there. I'm OK with this, Japan is up-front about it, you don't get to a case where you immigrate to Japan and the locals start complaining about losing their "ways".

Really, just say up front, only WASP's allowed.

</comment><comment><USER7> Sure, people can reskill, but it is quite hard to do as life goes on and poverty makes it hard to justify going back to school for four years of CS that many of these people probably can't make sense of. Don't know what the solution is, other than encourage people to retrain. People seem to perceive big companies talking about people needing to learn to code as a way for them to reduce wages, when in practice most software companies would hire as many competent developers as they can and you just can't find the people with the skills.

</comment><comment><USER8> The effect of one's culture and surroundings changing will naturally be anxiety. Consider a proud ethno-cultural place like Iran or Japan. If a large number of non-persian or non-japanese people began moving into each of those respective countries, the result would be anxiety among the established majority.

Similarly, it's really just a natural human response that people of European descent are experiencing anxiety in their native countries when faced with large scale migration.

I think that a lot of people are unwilling to give sympathy to Europeans because of the recent history of European colonization across the world.

But it's not some failing of white people in particular that they in some cases may have anxiety about their communities changing. It's just a result of the human condition, human social behavior. As such they do deserve sympathy. Just like the hypothetical Iranians or Japanese in my prior example.

<comment><USER9> While you can argue that racism is universal, that doesn't excuse anyone for racist behavior, whether they're Japanese, Iranian, or American.

If you examine "may have anxiety about their communities changing", it clearly implies they think non-whites are changing their community for the worse. It also implies the community belongs to the whites, and they get to define it.

Alternatively, they could (but don't) view their community as something they share, becoming more diverse, more interesting, more inclusive, etc.

<comment><USER10> Tribalism is a part of human nature and you engage in it, too.

It's not pretty in any circumstance.

</comment></comment></comment><comment><USER11> This is one of those discussions where I almost feel like the comments are deliberately trying to be provocative.

</comment><comment><USER9> Wow, yet another article asking heartland white people what they think. The worst they have to deal with is anxiety about loss of power and jobs.

Whereas people of color I know are worried about being in the wrong town after dark, after Charlottesville showed white supremacists are now bold enough to march in the open. The plight of white people no longer being on top is really not that dangerous or urgent.

<comment><USER12> Yes, how horrible it is to think of other people. And honestly, one problem does not diminish another.

Another thing, one is not a whitesupremacist just because he disagrees with your political opinions.

<comment><USER9> > And honestly, one problem does not diminish another.

Yet, when compared, it _is_ diminished. Loss of a privileged place in society doesn't hold a candle to the suffering of those who are still struggling to obtain one.

I didn't say those who disagreed with me were white supremacists just for disagreeing. I said white supremacists marched in Charlottesville because, in fact, there were people marching there, arguing for suppressing non-white minorities. Not that hard to grok.

</comment></comment></comment><comment><USER13> "In 2000 Hazleton's 23,399 residents were 95 percent non-Hispanic white and less than 5 percent Latino. By 2016 Latinos became the majority, composing 52 percent of the population, while the white share plunged to 44 percent."

It's not "Change", it's an engineered "Replacement".

Mass immigration is the State's way of electing a new populace.

<comment><USER14> > Mass immigration is the State's way of electing a new populace.

Mass immigration is the population's way of integrating a new population. Consider that it's the population which elects the state, at least in our case.

<comment><USER13> I wish you were correct. However there seems to be plenty of evidence that shows the State does what it wants to do, regardless of the opinion of the people. One example would be Obama promising to close Gitmo, and he was elected with a plurality ; yet Gitmo was never closed.</comment></comment></comment>


Success as an Entrepreneur: Why It's Not About You - <AUTHOR> http://www.getrichslowly.org/blog/2008/09/21/success-as-an-entrepreneur-why-it%E2%80%99s-not-about-you/

<comment><USER2> I agree with Hamilton - and I hope that becoming older and having more experience and exposure doesn't take that mindset away from me. Doesn't look like it has for him.

</comment><comment><USER3> This is a nice interview and left me feeling warm and fuzzy about being a more altruistic capitalist. But, I'm still wondering what exactly Hamilton's extended business plan was. "Selflessly Make Helpful Tool" + "Patience" still doesn't lead easily to finding investors, let alone getting rich.

</comment><comment><USER4> Can anyone honestly say they're in the start up world simply to alturistically help other people? This article seems a bit twisted to me - yes I agree you make money by solving a business problem, or helping others make money, but if you don't ultimately make money yourself, surely that's considered failure! I know your investors would say so...

<comment><USER5> I guess your investors are content if you make money for them.

</comment></comment><comment><USER6> Yet more advice given from the narrow scope of one person's experience. The problem is, some of it is just wrong. Some people have succeeded despite (or perhaps because of) just being in it for the money.

<comment><AUTHOR> I think whether or not you're in it for the money ultimately doesn't matter very much.

What matters is how much value you create -- and it so happens that you create the most REAL value when you focus on other people's problems and solve them.

Solve other people's problems, create value, get paid, and as a result, solve your own problems.

Being in it for the money means you have to be in it for other people, ultimately. Well, at least the good kind of value creation. You could also just sell subprime mortgages and make a bucket load of money too, but we know where that ends up...

<comment><USER6> Actually I think the guy's correct in that it helps. I've seen this for sure in startups. I just think he's incorrect in that it's necessary, or that it should be a defining characteristic of an entrepreneur.</comment></comment></comment>


How many programmers would have been unsuccessful if Stackoverflow didn't exist? - <AUTHOR> <comment><USER2> Well, there wouldn't be that much of the difference because StackOverflow is just the most popular site for asking coding question, if it didn't exist there would a different one just as big, as long as the internet is open there will always be a site like that. A better question: "How many programmers would have been unsuccessful is the internet was not open to the public?"

</comment><comment><USER3> Forgot all the programmers that came before SO?

I think Github had a much bigger impact. I enjoy seeing how other developers solved a problem I have.

SO pays off in the short term, but in the longer term you are left with nothing but superficial knowledge and badges.

</comment><comment><USER4> StackOverflow is just the path of least resistance. There was a time when developers would just have framework or language books sitting around for reference.

</comment><comment><USER5> At least one! Ha ha _cries in copy-paste_

</comment><comment><USER6> Way less than if online search engines wouldn't exist

</comment><comment><USER7> before stackoverflow there was "documentation" and "man pages"; would have worked out alright

</comment><comment><USER8> All of them.</comment>


Stop writing stateful HTML - <AUTHOR> http://www.colorglare.com/2014/11/24/stateless-html.html

<comment><USER2> >Due to the fact that JavaScript's browser monopoly is hopefully coming to an end very soon..

Aaand that's where I stopped reading. Try not to kick your articles off with dogmatic statements like this and, if you have to, at least make sure they're factual.

<comment><USER3> What's the problem? Wouldn't be better to have other choices? I think monopoly is never a good thing, especially for software.

<comment><USER4> It's not a question of whether it'd be "better" or not, it's a question of whether it's actually going to happen.

Do you _honestly_ believe Dart is going to replace or threaten Javascript "very soon"? Enough to be willing to bet on that?

<comment><USER3> I thought it was more a hope than a speculation.

</comment></comment></comment></comment><comment><USER5> > Due to the fact that JavaScript's browser monopoly is hopefully coming to an > end...

If this is so, author might want to view his page in a NoScript enabled browser. Why should the front image show itself through JavaScript if JS is on its way to meet dodo the bird?

Also, gray text on white background?

</comment><comment><USER6> The way to achieve this "nirvana" is really quite straight-forward: render all items on the server. No, not as a page-view but as the the individual items making up your page. Now, when people visit "mysite.com/index.php?search=&page=1" for the first time the server knows because the req arrives as a GET, hence it renders the whole page using the individual items (and the JS on the user site internalizes this state). When our user now navigates to "mysite.com/index.php?search=&page=2" the JS forwards the req to the server via a POST. The server now responds with ONLY the changed data which the client-side proceeds to insert/update where needed. This is short edition but this is how I do these things at the moment and it works.

<comment><USER7> Server side rendering has significant upsides but I feel one of the biggest downsides is consistently ignored when discussing it, namely that when you render (parts of) pages you burn expensive server side CPU cycles rather than the free client side cycles which in most cases noticeably affects hosting/scaling cost.

<comment><USER8> "free client side cycles"

For certain definitions of free.

I've found that sites which abuse this tend to be much less responsive and can even cause my laptop fan to start spinning like crazy

<comment><USER7> I agree. I was referring to the actual cost of the cycles but there are many situation where you need to find a balance between cost and fluent user experiences. My point was primarily that the consideration that server side resources are more expensive should be part of the evaluation.

</comment></comment></comment></comment><comment><USER9> Is it just me or is having the text "Due to the fact that JavaScript's browser monopoly is hopefully coming to an end very soon," link to Dart kind of contradictory? Since Dart just compiles to JS anyways.

<comment><USER10> Compiling to Javascript is the way Dart solves its chicken-or-egg problem.

Chrome ships a Dart VM and hopefully Mozilla, Apple and Microsoft will follow suit one day.

<comment><USER11> > Chrome ships a Dart VM

 _Google_ ships a special Dart-enabled version of Chromium (Dartium) with the Dart SDK. _Chrome_ , however, does not currently ship (with) a Dart VM.

<comment><USER10> I stand corrected.

</comment></comment></comment></comment><comment><USER12> I'm struggling to understand why. If you have a complex app, the complexity will be stored somewhere - it might be in JavaScript, CSS, HTML, PHP/Ruby/Python, YAML config files, the database, or some combination of those things. But it will always be somewhere.

Sometimes, depending on the team and the project, it will make sense to store at least some of that complexity in the HTML.

<comment><USER13> But he does talk about apps with authentication, rating systems, shopping carts etc. These in my opinion represent a complex app.

<comment><USER14> I have yet to see an app where putting all that complexity into each server side request simplifies anything...

Usually, it forces all kinds of artificial constraints on the app, such as atomic ratings counts when a looser, more cache-friendly requirement would suffice, etc.,

</comment></comment></comment><comment><USER15> There's little to no real content here. Progressive enhancement is not dead, and I hope it never will be. It's the Right Way to do things. Yes, even in 2014.

</comment><comment><USER16> What about screen readers and all those device that support people with certain disabilities?

They maybe able to access the static version, but how about their participation? What if they need to login to get access to certain information?

I just learned that certain screen readers have some support of JS. But does it work in general?

<comment><USER9> My understanding is also if you make your site accessible to screen readers, and validate it with accessibility testing, then you will have good search indexing as well.

I agree the static pages would be faster, but I feel like there is dynamic content that should always be rendered. Login pages for example are often linked in a dynamic menu.

</comment></comment><comment><USER17> Sounds like a solution looking for a problem:

"Create an AJAX request to the location (eg.: /about.html). Change the URL in the browser with the history API (this way, the back and forward buttons still work in the browser). Show a loading animation that the content is now being loaded. When the content is loaded, parse it to extract the contents of #main (you can help yourself there by adding markers in your HTML) and replace the content of your current #main section with the one you just loaded. Make sure that you handle all the links in your new #main content so they will act the same and fire off any BrowserScript required for the page that just loaded."

Aside of usability issues (what if the user has JavaScript disabled?), I don't really get how search engine spiders will be able to index the web site.

<comment><USER8> Users without JavaScript (sorry, BrowserScript!) will load links as normal.

All the endpoints serve static html. I have no idea what the point in ajaxing it is (so you can stick in a pointless animation I guess). However it would degrade nicely, and search engines would be unaffected

<comment><AUTHOR> Loading the content resources with AJAX allow you to preserve the current UI state. Depending on your website and your needs this step might be completely unnecessary.

It becomes necessary when you have elements that you want to persist on your page. That might be an audio player or the state of a menu that you want to avoid painting.

It's just about a better UX for your users.

</comment></comment></comment><comment><USER18> Having "stateless" HTML - meaning the base HTML document is the same for all visitors, across hours of time - can have significant advantages for performance and scalability. Your HTML is now cacheable, and you can host it on a dynamic CDN like Cloudflare, and your TTFB can be _really_ fast. And it will also remain fast if your site gets hugged to death by a spike in traffic.

The downside of course is that rendering different HTML based on your user, their location, cookies, user-agent, etc. is really freakin' convenient. And if you commit to static HTML, you have to do all of your customization on the client, and load real-time data with an AJAX call.

But if you want a highly-performant site, the tradeoff is worth it.

</comment><comment><USER19> Oh man, don't roll your own linking, caching, and history. Use what you get for free from the browser. You have better things to spend your time with.

</comment><comment><USER20> This is what turbolinks does: [https://github.com/rails/turbolinks](https://github.com/rails/turbolinks). Nothing new, they have been doing it for 2+ years now.

<comment><USER14> Turbolinks is a 10% solution, not a bad one in all cases, but one that lets the user avoid most of the thinking needed to build a performant site.

</comment></comment><comment><USER21> This article is quite confusing, I'm really not sure which point the author tries to make.

Anyway, reading on to the implementation section, this stuff sounds pretty standard, and people have been doing this for many years. Some implementation details changed (pushState, hashchange, etc), but this approach is ancient.

I mean, if you just want to describe a simple technique, there's no need write a long, vague and controversial introduction..

</comment><comment><USER7> This full-page-jumbotron-without-any-indication-you-should-scroll-down thing (is there a proper name for that) has to stop.

<comment><USER22> _without-any-indication-you-should-scroll-down_

Doesn't the scroll bar serve as an indication?

<comment><USER23> OSX doesn't always show it (depends on your settings). That being said, it seems like common sense to try scrolling on a webpage (especially coming from HN where these sites are dime a dozen).

<comment><USER11> It seems like common sense that a blog entry should show me substantive content immediately. A cover page is sensible on a book, because of both the size and medium, but its ludicrous on a short essay on the web and what it says to me is that the author doesn't respect the reader.

<comment><USER22> Cover pages are common in magazine articles too, why would they be disrespectful?

</comment></comment></comment></comment></comment><comment><USER24> I should have stopped reading when the author linked to dart.

Regarding SEO/performance for serving static HTML, many frontend frameworks provide a mechanism for rendering content on the server. For example, React.renderComponentToStaticMarkup ([http://facebook.github.io/react/docs/top-level- api.html#reac...](http://facebook.github.io/react/docs/top-level- api.html#react.rendertostaticmarkup)) can be used to render each static page on the server before sending it over the wire.

Also, I'm not sure how you reduce complexity by coupling view logic with backend datastore logic. In my experience it's far more maintainable to separate the backend and frontend, communicating between them via a REST API/web sockets. That way, everything is independently unit-testable and can be integration tested as well.

</comment><comment><USER14> He's right. The silliest thing about how many sites are designed is that the entire HTML is re-rendered differently for each user (so that the username can be displayed somewhere on the page) for identical content.

Doing this is a horrible waste of resources.

<comment><USER22> Isn't making extra HTTP requests just to get the username even more wasteful?

<comment><USER21> You can get several things in one request if you want to. But yeah, it's a tradeoff. The main advantage seems to be cacheability, though that can get less important if you cache e.g. template fragments instead of entire pages.

<comment><USER14> Template caching is still server side which means you are using an application process to do the same exact trivial thing over and over which could have been offloaded to a cache or to the client.

<comment><USER21> You always need to do the server-side work, no matter where the data is rendered or cached later. Like I said, it's a tradeoff.

</comment></comment></comment></comment></comment><comment><USER25> People have been trying to offload dynamic page generation to the client (browser) for as long as JS exists. It became less attractive when search engines became so dominant and important for websites' success, because they couldn't handle it. Nowdays Google does _some_ JS, but in general, it's better not to do this yet.

</comment><comment><USER26> tl;dr use pjax [1]

[1] [http://pjax.herokuapp.com/](http://pjax.herokuapp.com/)

</comment><comment><USER27> I really hope this isn't the day a new horrible term is born. "Stateful HTML"? It looks to me as if the writer is trying to talk about the "isomorphic JavaScript" principles but from a different perspective (the HTML). Am I wrong?

</comment><comment><USER28> I have never really looked into dart before, but i'm curious. Has anyone here used it, what are people's thoughts about it?

</comment><comment><USER29> What the hell is BrowserScript?</comment>


API and Other Platform Product Changes - <AUTHOR> https://developers.facebook.com/bugs/185630995395938/ <comment><AUTHOR> word of warning to anyone who wants to integrate with facebook. although their blog posts say they are only removing select endpoints, as the comments in the link above indicate, they have basically shut off access to core endpoints well beyond what they listed. instead of errors, the endpoint returns empty data.

this is extremely disappointing. our app was reviewed by FB (including source code), we have thousands of impacted users, and FB gave no indication that they would start doing this (and the issue was silent).

is a walled garden better than an API that lets users share their data? should we shut down the entire graph because of a few bad actors? is this how FB treats developers?

<comment><USER2> > is this how FB treats developers?

Yes?

Look, I hate to be "I told you so", but this shouldn't be a surprise: this is how Facebook has treated partners all along.

Remember when the big thing that drove engagement on Facebook was games? Zynga was making a mint on that. Until one day Facebook's metrics showed that the constant "Help my farm!" updates were pissing people off; they flipped a switch and games disappeared, and Zynga got kneecapped. I think it still technically exists, but it's a shell of what it was.

Then it was all about sharing as many news articles as possible, and Facebook built all these relationships with news publishers. That lasted until fake news and Facebook deciding people want more status updates from friends, and the publishers all got their traffic slashed with naught but a "I am altering the deal. Pray I don't alter it further."

When your business lives on Facebook's platform, you exist at their whim. As soon as they decide you're no longer useful, you're cut off. You really should've had a plan for this.

<comment><USER3> Not to mention the fact that that we've lived through all of this before with Twitter. Entire businesses were built on their API and then were obliterated in one fell swoop.

Time to move on to the next thing, unfortunately.

<comment><USER4> I'm out of the loop, what is the next walled garden everyone's playing in right now? Instagram? Snapchat? Youtube?

<comment><USER5> I'm hoping folks will have a "fool me twice" mentality with this.

No API is permanent and no service will ever be reliable in this regard.

<comment><USER6> On the other hand, there's been a decent number of people who have made lots of money because they were the first to build an useful product on a platform.

Examples being Buffer, Hootsuite, BuddyMedia

<comment><USER5> Sure but then you're in the boat where you have some n finite period of time to slingshot from needing API Service to having a viable enough business to live without it.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> Some argue that the recent FB and Instagram API neuterings are in response to the Cambridge Analytica scandal. However, last September, Facebook silently neutered the ability for people to gather posts from _public_ Facebook pages via the Graph API, which was damaging for FB Page research: [https://developers.facebook.com/bugs/1838195226492053/](https://developers.facebook.com/bugs/1838195226492053/)

</comment><comment><USER8> The events API had already been pretty crippled some time ago, looks like it's been made close to entirely useless now.

This is interesting to me, cause while I think their motivation was mostly about PR (although who knows, it's just kremlinological speculation), events are the main thing that keep many people I know from abandoning facebook -- it's the only way to find out about what's going on in many social circles. I contemplated trying to make something that used API to keep you in the loop on events on FB without having to actually use FB; it already wasn't really possible, now _really_ not possible.

Although wait, there is still iCal feeds for at least some read-only access.... okay, back to the my own research on the matter. :)

<comment><USER9> You can setup email notifications for event invites only.

It was the least effort way I found to not miss out on them without using the site.

</comment></comment><comment><USER10> For reference, this is a temporary pause to review policies and make necessary adjustments as per this status.

> Description We are pausing all new messaging experiences (including new > authentications on approved apps) on the platform while we review our > policies and make necessary adjustments. Learn more here: > [https://messenger.fb.com/newsroom/messenger-platform- > changes...](https://messenger.fb.com/newsroom/messenger-platform-changes-in- > development/).

[https://developers.facebook.com/status/issues/10419771376351...](https://developers.facebook.com/status/issues/104197713763517/)

</comment><comment><USER11> I've tried to tell companies time and time again that building the core foundation of the business on an external service like Facebook, Instagram, Twitter is doomed in the end. This happened 10 years ago when Twitter locked down a lot of their API access more, and is happening again now.

The CEOs and CTOs of those companies never listen, thinking "this time will be different", and yet it isn't. People in those positions don't like hearing truth that conflicts with their deeply held belief that they are different and their product/service (or mining of user data) is special and will make it through some loophole.

I wish I could monetize saving companies and investors millions of dollars with this advice, but I haven't figured that out. No one likes to hear 'no'

<comment><USER12> _No one likes to hear 'no'_

I don't think that's the whole story. "Don't build your core business around that API" ignores the opportunity that's there _now_. Your advice to build a business around something that can't be removed is sound if you care about the long term, which is sensible, but it ignores the short term immediate gain. You don't have to build a business that starts up and continues doing the same thing forever; for some businesses adapting to things like an API being removed is just another challenge to be met.

You're clearly quite cautious and like to plan far ahead. Other people don't do that. That doesn't make them wrong.

<comment><USER13> It doesn't make them wrong but it does make them careless. If you build something on a weak foundation, knowing it will all come tumbling down sooner or later you'd better make sure beforehand where to go when the floor gets pulled from under you. With that I do not mean 'the Bahamas' but rather an alternative for the external dependency which can take over its role with as limited an impact for customers as possible. Doing so is not just good stewardship but it might also reveal new opportunities which otherwise would have been overlooked. By making things like Facebook optional you both reduce your own dependency on their antics as well as Facebook's power. The former is good for your own personal well-being, the latter is good for everyone else.

<comment><USER14> > It doesn't make them wrong but it does make them careless.

No, it doesn't necessarily make them careless. It could simply make them agile and adaptable. A bird can perch on a dying limb, grow, and fly away when it breaks off.

<comment><USER13> ...but a bird which builds a nest on a dying limb leaves its dependants hanging in the cold.

</comment></comment></comment></comment></comment><comment><USER15> Many of our apps have broken from these changes. We didn't receive any clear communication from Facebook that this would happen.

The [https://developers.facebook.com/status/](https://developers.facebook.com/status/) page says this has been an issue since March 21st.

</comment><comment><USER16> Kind of nice to get to step away to be honest.

Here's an example of what happens if you try to request something:

[https://imgur.com/hOR7lbK](https://imgur.com/hOR7lbK)

</comment><comment><USER17> Time to circle the wagons and protect the core business. Collecting information and selling ads is their bread and butter. Giving third parties access to that data in order to build things gave them great marginal gains on their way to the top (sort of like Twitter), but in the current political climate the risks _far_ outweigh whatever incremental gains they could realize going forward.

Don't expect the API back any time soon.

<comment><USER18> >Giving third parties access to that data in order to build things gave them great marginal gains on their way to the top

Without Pieces of Flair and Farmville, Facebook would be MySpace.

<comment><USER19> That was when Facebook was growing. They are the incumbent now, time to kick the ladder.

<comment><USER18> > That was when Facebook was growing

Yes. Since I was replying to a comment which included the phrase "on their way to the top."

</comment></comment></comment></comment><comment><USER20> >friendlists is deprecated

Will this stop me from seeing Facebook friends that also use an application/service from within that application/service? For example, getting friend suggestions in Blizzard's or Epic Games launcher for Facebook friends.

<comment> munk-a That would be awesome.

Initially friends list matchers like that were an opt-in voluntary thing, but more recently applications have been more insistent on getting FB information to gather network data.

I'd love to see that sort of an offering die off, it's not like you can't post "Hey world, really into Overwatch right now, anyone want to join up?" on your feed yourself.

<comment><USER20> > it's not like you can't post "Hey world, really into Overwatch right now, > anyone want to join up?" on your feed yourself

My main problem with that is method that I can't guarantee that friends that play Overwatch will see my post. The timeline algorithm is too inconsistent.

</comment></comment></comment><comment><USER21> Holy shit, I'm not even using the Facebook API at the moment but this was infuriating to read. Please, someone make an FB alternative with wide open APIs where users can monetize their own data. If someone's already working on this, I'd love to know.

I will officially never try to use any Facebook API in the future.

<comment><USER22> There's Mastodon, but last time I was there it was only really big with a slightly creepy Japanese anime crowd. There just wasn't that much interesting English content to read.

Mastodon's API's are mostly open source standards which means they tend to be messy and inconsistent.

As far as user monetization the main strategy was predictable pleas for Patreon donations and some people constantly begging for money with a new crisis/excuse each day or various forms of victim hood.

I still like Twitter because it has high signal to noise ratio news feeds and power users, once you find them. Not sure how usable its going to be once they gut their Stream API in a month though.

To be honest, all social networks look like they are in various stages of epic FAIL and the perennial search for the new one that is going make it all better is probably in vain.

There are a slew of inherent structural problems in social networks many of which arise out of the fact that crowds, tribes, herds tend to bring out and amplify the worst in human nature. Its recommended you read up on mimetic theory before you play:

[https://www.ravenfoundation.org/faqs/#dialog](https://www.ravenfoundation.org/faqs/#dialog)

There is also a fundamental, difficult to resolve, conflict between the two forms of free speech identified in Ancient Greece, isegoria and parrhesia.

[https://www.theatlantic.com/politics/archive/2017/12/two- con...](https://www.theatlantic.com/politics/archive/2017/12/two-concepts-of- freedom-of-speech/546791/)

Either you allow largely unconstrained free speech and your network turns in to an abusive cess pool, or you constantly police and suppress it and it turns in to China. There isn't really an easily identified middle road.

<comment><USER23> I haven't been able to find a ton on Mastodon yet but I saw enough tech posts to not think it's just anime stuff. Others here who cheer on Mastodon have found similar results. When's the last time you used or tried Mastodon?

</comment></comment></comment><comment><USER24> > _Facebook continues to make real-time improvements to its platform to > protect people 's data. We are making the following changes to maintain > trust with people who use our products._

"real-time* is probably not the best buzzword to use when trying to spin the rapid changes as a positive thing.

<comment><USER25> they should go with the classic "move fast and break things"

</comment></comment><comment><USER26> Much of this data can still be obtained through scraping without the API. Depending on official APIs for data collection has never been a great idea, as they are often governed by very low rate limits etc. The Facebook API has been useless for social apps since the 2014 changes anyway, so they have made something that was already useless even more useless. Hopefully everyone here saw the writing on the wall in 2014 and isn't relying on the Facebook API for business processes or revenue in 2018.

<comment><USER27> What happened in 2014?

<comment><USER28> They shut down what was used by the company which I forgot the name to harvest the data that was used by Cambridge Analytica.

I don't have the details, but it was mainly around app having access to a lot of your friends data as soon as you would give the app access to your Facebook account, without any concent from your friends

</comment></comment></comment><comment><USER29> A lot of the changes FB made were breaking changes that occured overnight a few weeks back that they didn't warn any developers about... That's a pretty good indication of how much they care about their developer ecosystem.

I wonder if this will hurt them more than they gambited for though. They've clearly thrown a lot of resources at the messenger API to encourage third parties to make bots. It also seems like WhatsApp's strategy to monetize is increasly focused on businesses somehow integrating with the platform.

As a developer, though I know WhatsApp still operates as a separate entity it's still ultimately owned by FB. And even though FB and WhatsApp still have incredibly dominant market share, stuff like this makes them look like very flaky foundations for third parties to build anything over... GDPR is going to hit FBs bottom line in europe and all their growth is coming from developing markets where user ARPUs are tiny... Long story short, I don't think times are going to be sweetness and light for FB in the near term, and so this is a time where they'll want as many friends as possible. But stunts like this won't win them any friends in developers!

</comment><comment><USER30> Why can't we view the content without logging in?

<comment><USER31> so much this

</comment></comment><comment><USER32> This is why you should never cooperate with these people. Now the organization can't push back and keep apis up without feeling scared.

</comment><comment><USER33> Can anyone copy the content of the announcement into a comment so we aren't forced to login to read it?

</comment><comment><USER25> If your app depended on getting user data from facebook, you should have moved away from that anyway, they made so many pointless changes and limitations over the years that the fuss was not worth it. you can still use the feed dialogs for viral engagement.

</comment><comment><USER34> Damn they do. Damn they don't.

</comment><comment><USER35> So now they are just going to directly sell this information?

</comment><comment> oh-kumudo Can't blame them, it is a tricky business now.

</comment><comment><USER36> >You must log in to continue.

Can somebody post what the actual problem is?

<comment><USER26> I'm curious if all the privacy zealots on here see the irony in someone asking others to publicly share content that is only supposed to be accessed by a private group of people (Facebook users, in this case). Does this not violate the privacy of the person or organization that made these posts, who intended it for a specific audience?

<comment><USER37> Whether you have an account or not, Facebook is collecting information about you. They should at least tell everyone what they are allowing developers to do with the data

<comment><USER26> Developers aren't allowed to do anything with data that Facebook collects while you are not logged in. They _never_ have. The information in those private posts intended for a private audience is only relevant to people that have Facebook profiles and are either developers or have a Facebook account.

Further, even if they did allow developers to use this data, it's still a private discussion behind an authentication wall. I have seen it argued that taking such posts and publicly posting them is a violation of GDPR, and it may well be because of how broadly this law is written.

Live by the sword, die by the sword. It isn't OK to ask people to violate the GDPR just because it suits you in a given situation.

<comment><USER38> Maybe I'm confused, but how this announcement from Facebook contain personal data?

<comment><USER26> It is a post that was directed to a private group - that group in this case is Facebook account holders. So by taking that information and posting it here, it may run afoul of the GDPR. I have seen arguments that even forwarding a group email to someone not on the original recipient list is a violation, so this wouldn't be any different. It's a communication that is behind an authentication wall for a reason.

<comment><USER36> Those arguments are wrong.

The GDPR deals with processing[0] of personal data[1], not data about anything else any entity wants to remain somehow restricted. Other legal regimes may deal with disclosures of that kind, but _not_ the GDPR.

[0] 'processing' means any operation or set of operations which is performed on personal data or on sets of personal data, whether or not by automated means, such as collection, recording, organisation, structuring, storage, adaptation or alteration, retrieval, consultation, use, disclosure by transmission, dissemination or otherwise making available, alignment or combination, restriction, erasure or destruction;

[1] 'personal data' means any information relating to an identified or identifiable natural person ('data subject'); an identifiable natural person is one who can be identified, directly or indirectly, in particular by reference to an identifier such as a name, an identification number, location data, an online identifier or to one or more factors specific to the physical, physiological, genetic, mental, economic, cultural or social identity of that natural person;

</comment></comment></comment></comment></comment></comment></comment><comment><USER39> For those who can't/won't login to see this:

Facebook continues to make real-time improvements to its platform to protect people's data. We are making the following changes to maintain trust with people who use our products. These changes are never easy, but by focusing our efforts, we can put stronger protections in place to combat potential abuse. Please find a quick summary of these changes below:

Facebook Login:

App review required to ask users to share checkins, likes, photos, videos, events, and groups

Following fields are now deprecated and will return empty data: relationship_status, religion, political, friendlists, education, work, about, website, interested_in

Following Open Graph permissions are also deprecated and will return empty data: books, fitness, games, music, news, video

Taggable friends and mutual friends APIs are now deprecated

Pages API:

App review required

Page conversations will receive a new thread identifier

Require a Page access token with a matching Page for specific endpoints: /agencies, /canvases, /instagram_accounts, /leadgen_forms, /page_backed_instagram_accounts, /promotable_posts, /page/userpermissions

Deprecated /checkin_posts API and webhook

Remove social context elements: /friends_who_like, /friends_tagged_at, /video_watch_friends, /music_listen_friends

App review required to use the following edges: GET /page/events and GET /me/events

Events API:

App review required

Deprecated content edges on all events: /feed, /posts, /comments, /pictures, /videos, /live_videos, /photos

Deprecated user edges on all events: /attending, /interested, /declined, /maybe, /noreply

See User Node and Page API sections for details of /events edges on these nodes

Groups API:

App review required; API use must meet a specific group admin need

Removed some fields returned by edges on groups: to, from, likes, reactions, name_tags, message_tags, with_tags, tags, admin_creator

Deprecated APIs that share data about people in groups, including /members, /admins, /owner and a number of undocumented endpoints: /member_requests, /moderators, /former_members, /insights, /links, /tagged

Search API:

Deprecated Search API for pages, groups, events, and users

Games:

Updated Instant Games context_fetchPlayers API to limit users returned to those who have played in the specified context

Deprecated Scores API, Achievements API, /taggable_friends, and /invitable_friends

Deprecated /{app-id}/staticresources

App Insights API:

Removed age, gender and country information from the app_event metric

Instagram API Platform:

Instagram is accelerating the previously announced deprecation of the Instagram API Platform and has lowered rate limits

User Node

The following User node fields will no longer return information: about, education, friendlists, interested_in, political, relationship_status, religion, website, work.

GET /user/groups and GET /me/groups - This edge no longer returns any fields that contain User identifying information. This applies to all app Users, even app Admins querying their own User ID.

App review required to use the following edges: GET /user/events and GET /me/events (apps with user_events permission granted will still require re- review)

</comment><comment><USER40> still doesnt show who visits your profile.</comment>


Uvloop: Fast Python networking - <AUTHOR> http://magic.io/blog/uvloop-blazing-fast-python-networking/ <comment><USER2> > However, the performance bottleneck in aiohttp turned out to be its HTTP > parser, which is so slow, that it matters very little how fast the > underlying I/O library is.

This is exactly the same observation that motivated the Mongrel web server for Ruby, 10 years ago this year.

"Mongrel is a small library that provides a very fast HTTP 1.1 server for Ruby web applications. [...] What makes Mongrel so fast is the careful use of an Ragel [C] extension to provide fast, accurate HTTP 1.1 protocol parsing. This makes the server scream without too many portability issues." \-- [https://github.com/mongrel/mongrel](https://github.com/mongrel/mongrel)

And its successor Thin:

"Thin is a Ruby web server that glues together 3 of the best Ruby libraries in web history: (1) the Mongrel parser, the root of Mongrel speed and security" \-- [http://code.macournoyer.com/thin/](http://code.macournoyer.com/thin/)

In case anyone is still wondering, parsing in Ruby/Python/Lua is pretty slow compared to C/C++. That's why I personally have been really interested for a long time in writing parsers in C that can be used from higher level languages. That way you can get the best of both worlds.

<comment><USER3> It's the best of both worlds but doesn't shield you from the worst of one of the worlds. Untrusted input is still reaching code that has direct access to system memory. Hopefully not, anyway. But probably. Still, it's the way to go if performance is key.

<comment><USER2> Very true. Thankfully fuzzing tools are getting better all the time. LLVM's libfuzzer is great.

<comment><USER4> I'd recommend to watch this: [https://www.youtube.com/watch?v=y0hyqzR6hIY](https://www.youtube.com/watch?v=y0hyqzR6hIY)

He goes into detail about how these types of libraries are particularly difficult or impossible to fuzz. He uses OpenSSL as an example but I would imagine an http library being similar.

<comment><USER2> > He goes into detail about how these types of libraries are particularly > difficult or impossible to fuzz.

I just watched the video on 2x and I don't think that's a fair summary. He seems positive on fuzzing in general and mentions that fuzzing found two extremely tricky bugs in libsndfile and flac.

He does point out that there are some cases like OpenSSL that are particularly difficult to fuzz completely because they are encrypted and heavily stateful, creating transient keys on the fly and such. I don't think HTTP has this problem, for the most part.

Cool to see a video of Erik de Castro Lopo though -- I've worked with that guy since the early 2000s when I was working on Audacity (which uses his excellend libsndfile internally -- or at least did at the time).

</comment></comment></comment></comment></comment><comment><USER5> Also note that David Beazley (google him if you're not aware) has a competitor to asyncio, which arguably is also a direct competitor to this called curio:

[http://curio.readthedocs.io/en/latest/](http://curio.readthedocs.io/en/latest/)

The caveat is that it uses the new async/await coroutine bits that just landed in Python 3.5, so it only works with Python 3.5+. He also gave a talk on concurrency in python recently at last year's PyCon:

[https://www.youtube.com/watch?v=MCs5OvhV9S4](https://www.youtube.com/watch?v=MCs5OvhV9S4)

<comment><USER6> Unless I'm mistaken, the decorator @asyncio.coroutine() is equivalent to async def and yield from is functionally a drop-in for await, so you should be able to use it with at least 3.4, maybe 3.3. Not that that's much better though.

<comment><USER7> That makes it functionally equivalent to uvloop (which from my understanding is a drop-in replacement for the built-in asyncio eventloop).

</comment></comment></comment><comment><USER8> This isn't a fair comparison. the "HTTP server" presented isn't doing any checks / validation that a typical web server does.

Compare

[https://github.com/MagicStack/vmbench/blob/master/servers/as...](https://github.com/MagicStack/vmbench/blob/master/servers/asyncio_http_server.py)

to

[https://github.com/nodejs/node/blob/master/lib/_http_outgoin...](https://github.com/nodejs/node/blob/master/lib/_http_outgoing.js)

[https://github.com/nodejs/node/blob/master/lib/_http_server....](https://github.com/nodejs/node/blob/master/lib/_http_server.js)

[https://github.com/golang/go/blob/master/src/net/http/server...](https://github.com/golang/go/blob/master/src/net/http/server.go)

The benchmark is almost equivalent to testing raw eventloop performance against a complete http server.

To make this test fair, you need to write the same code in asyncio_http_server.py in other languages.

<comment><USER9> > This isn't a fair comparison. the "HTTP server" presented isn't doing any > checks / validation that a typical web server does.

How so? It uses a binding to http-parser, just like nodejs.

<comment><USER8> Parsing is just a small part of an http server. You can check the links I posted to see how much work is involved in validating http headers (after parsing), and creating http responses.

</comment></comment></comment><comment><USER10> This is quite interesting, but I don't find req/sec very interesting at all. These should be about matters of concurrency, that is, how much is being done at once, not how many req/sec overall are done (which could almost be explained away purely by the gains in lower latency).

These benchmarks seem to only use 10 clients concurrently, max. That's ridiculously low.

A few questions I'd like to see answered.

How many clients can you connect to each server, and have each one ping once per 5 mins, before the CPU gets overloaded?

How much memory is used per connection?

How does PyPy+Twisted fair in this?

<comment><USER11> > These benchmarks seem to only use 10 clients concurrently, max. That's > ridiculously low.

I've just update the post with more details on HTTP benchmarks and attached the correct full-results file [1]. The concurrency level for HTTP benchmarks is 300, not 10.

To answer other questions, I'll have to run some benchmarks tomorrow :)

[1] [http://magic.io/blog/uvloop-blazing-fast-python- networking/h...](http://magic.io/blog/uvloop-blazing-fast-python- networking/http-bench.html)

<comment><USER10> Cool! For the client test I'm referring to, these would be long-lived clients that stay around and just TCP ping for an echo server, rather than HTTP calls that connect/disconnect.

In my experience, PyPy+twisted is around 5-25x faster CPython/twisted, and smoked asyncio as well. Would be great to see how uvloop compares there, and of course, someday when PyPy supports Python 3.5, there's no reason it couldn't use uvloop via cffi I'd hope.

<comment><USER11> > [..] Would be great to see how uvloop compares there [..]

Yep, I'm curious to see what will happen there. Do you have any suggestions on what tool to use to generate the load?

> [..] someday when PyPy supports Python 3.5, there's no reason it couldn't > use uvloop via cffi I'd hope.

We'll figure that out! ;)

<comment><USER10> I wrote a tool to evaluate memory per connection one layer up (at websocket level), using autobahn. It works in asyncio, so it should work fine with uvloop.

[https://github.com/bbangert/ssl-ram- testing/](https://github.com/bbangert/ssl-ram-testing/)

</comment></comment></comment></comment></comment><comment><USER11> I'm the dev behind uvloop. AMA.

<comment><USER12> > at least 2x faster than nodejs, gevent, as well as any other Python > asynchronous framework

I did not see any benchmarks in the repo to support this. How was this statistic determined?

<comment><USER13> Building on to this, how does it compare to raw libuv in c?Personally, I'm not surprised that python (especially cython) is faster than node in this case, but I still need to see how much less overhead there is to node.

<comment><USER11> > Building on to this, how does it compare to raw libuv in c?

Building something in C is very hard. uvloop wraps all libuv primitives in Python objects which know how to manage the memory safely (i.e. not to "free" something before libuv is done with it). So development time wise, uvloop is much better.

As for the performance, I guess you'd be able to squeeze another 5-15% if you write the echo server in C.

> I'm not surprised that python (especially cython) is faster than node in > this case

Cython is a statically typed compiled language, it can be anywhere from 2x to 100x faster than CPython.

<comment><USER13> >So development time wise, uvloop is much better.

Yeah, I definitely get that. I'm just trying to see the smaller picture here.

>Cython is a statically typed compiled language, it can be anywhere from 2x to 100x faster than Python.

Ah, my bad for not knowing the difference between Cython and CPython. It seems to me, then, that this isn't really a fair comparison to node, is it? Naturally a statically typed language is going to be faster than a dynamic one. Good on you for including a comparison with Go, though.

<comment><USER14> > It seems to me, then, that this isn't really a fair comparison to node, is > it?

Isn't node written in C?

<comment><USER13> Yes, but JavaScript is still a dynamic, garbage collected language.

<comment><USER11> Most of nodejs internals are in C++ on top of libuv. Only a thin layer of JS interfaces wrap that.

Python is also a dynamic, GCed language. uvloop is built with Cython, which uses the Python object model (and all of its overhead!), and CPython C-API extensively (so it's slower than a pure C program using libuv).

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER15> Wow. What's the intuition for why python on top of libuv is 2x faster than node on top of libuv?

<comment><USER11> Two things I'd check first:

1\. The benchmarks make servers generate a huge number of objects, so maybe, the GC is under too much pressure.

2\. Another possibility is that the v8 JIT can't optimize some JS code in nodejs, or does a poor job.

That said, only careful profiling can answer your question :)

<comment><USER16> I would be interested in seeing the performance difference in NodeJS TCP echo benchmark by using piping instead of reading/writing manually:

      socket.pipe(socket);

</comment></comment></comment><comment><USER17> Asyncio is pretty fast, but as soon as you write any Python logic, request per second will drop significantly.

I'm surprise uvloop is faster than node.js since libuv was developed for the latter. Kudos to the author.

<comment><USER11> > Asyncio is pretty fast, but as soon as you write any Python logic, request > per second will drop significantly.

Sure, but it really depends on how complex your Python code is.

> I'm surprise uvloop is faster than node.js since libuv was developed for the > latter. Kudos to the author.

Thanks!

</comment></comment><comment><USER18> Looks good. Wonder why these benchmarks never include an actual database. I'm using firebase with nodejs and no matter how many requests per second my server can respond with, it's ultimately constrained by data requests and memory (ie how many connections can I wait on).

When I see numbers like 50k requests per second it's meaningless, unless I have no database or some kind of in memory cache only db.

<comment><USER19> It's not meaningless for new gen apps which trade a lot of db request for message passing. In micro-services app, when you update something, you propagate the change, and you have x client update for one db requests instead of having x + 1 db requests. In that context, broacasting quickly to a lot of clients is important.

</comment></comment><comment><USER20> Are you using this code in production?

<comment><USER11> I'd say it's not yet ready for production. The test coverage is fairly decent, though, so I hope we'll make a stable release soon.

That said, uvloop should be fully compatible with asyncio. All APIs should be ready, so you can start testing it in your projects.

</comment></comment><comment><USER21> I think claims about being faster than X require showing the code used in the benchmarking.

<comment><USER11> Everything is in the blog post: [https://github.com/MagicStack/vmbench/tree/master/servers](https://github.com/MagicStack/vmbench/tree/master/servers)

</comment></comment><comment><USER22> Time to take a rest for JS? :)

</comment><comment><USER23> It will be great to know how this compares to async frameworks in Java, Netty and Vert.x for example, in the benchmarks.

<comment><USER11> Feel free to make a PR to [https://github.com/MagicStack/vmbench](https://github.com/MagicStack/vmbench)!

</comment></comment><comment><USER24> Does it mean that uvloop could allow the use of the same event loop implementation on the three major OS?

<comment><USER11> asyncio already allows that.

uvloop, as of now, only runs on *nix; but I hope we'll have Windows supported soon too.

</comment></comment><comment><USER25> It is interesting that uvloop-streams is almost identical to gevent in performance. Gevent is based on libev, the project libuv was forked from.

What exactly is the -streams addition that makes uvloop-streams perform so much worse than plain uvloop?

<comment><USER11> Streams implementation is a pretty big chunk of Python code, that manages flow control, buffering, and integration with coroutines. And you don't always need all that stuff when you're writing a protocol, since you can implement them more efficiently as part of protocol parser.

<comment><USER25> Is it possible to add a benchmark for gevent using raw sockets not StreamServer (assuming that adds similar overhead).

<comment><USER11> AFAIK, StreamServer should actually affect benchmark in a positive way. In gevent case, StreamServer isn't about high-level abstractions, it's about making sure that client sockets always have a READ flag in the IO multiplexor (epoll, kqueue etc)

</comment></comment></comment></comment><comment><USER26> The benchmarks for node.js are terribly misleading. The node.js implementations only ever spawn a single process, and thus node is only running on a single core and uses only a single thread.

Specifically, the http server example(1), doesn't even bother using the standard library provided Cluster module(2). Cluster is specifically designed for distributing server workloads across multiple cores.

All node.js services/applications I've worked on in the past 3 years (that are concerned with scale) utilize a multi-process node architecture.

The current benchmark can only claim that a single python process that spawns multiple threads is 2x faster than a single node.js process that spawns only one thread.

This fact may be interesting to some, but is irrelevant to real world performance.

[1]: [https://github.com/MagicStack/vmbench/blob/master/servers/no...](https://github.com/MagicStack/vmbench/blob/master/servers/nodejs_http_server.js)

[2]: [https://nodejs.org/api/cluster.html](https://nodejs.org/api/cluster.html)

<comment><USER11> There is nothing misleading about the benchmarks. It is explicitly said that ALL frameworks were benchmarked in single-process and single-thread modes.

Yes, in production you should run your nodejs app in cluster, your Python apps in a multiprocess configuration, and you should never use GOMAXPROCS=1 for your go apps in production!

Running all benchmarks in multiprocess configuration wouldn't add anything new to the results.

<comment><USER26> The main premise in my comment is that the benchmarks do not resemble real world performance, and are therefore misleading.

The comment above ([https://news.ycombinator.com/item?id=11626762](https://news.ycombinator.com/item?id=11626762)) further expands on why these kinds of benchmarks, although interesting, have no real value.

Each implementation does something wildly different and responds to different inputs with completely different outputs.

To put it metaphorically, if you put a car engine in two completely different chassis and then race them on a track, you aren't gaining any real insight into relative performance of the engine in the two vehicles.

Also, just to be clear, my qualms are with the benchmarks alone, I think the library is great! Thanks for all the hard work :)

<comment><USER11> I guess I look at the benchmarks in a bit different light.

These benchmarks are primarily comparing event loops and their performance. TCP benchmark is very fair, HTTP - maybe not so much. The point is to show that you can write super fast servers in Python too, just have a fast protocol parser.

As for the HTTP benchmarks, I plan to add more stuff to httptools and implement a complete HTTP protocol in it. Will rerun the benchmakrs, but I don't expect more than 20% performance drop.</comment></comment></comment></comment>