Ask HN: How are you solving the microservices data problem? - <AUTHOR> I've seen suggestions to use a database/datasource per microservice, even if data is duplicated in those various locations. I'm interested in hearing what people who use many microservices in production are doing to solve this problem. MDM? A database microservice? Cron? <comment><USER2> Well the dream is orthogonality. It's not uncommon to have a data store like Cassandra setup with each data access micro service having its own key space. Other micro services then use the data access micro services in order to retain the single point of responsibility.

So what used to be 4 lines of code with a shared SQL db now requires at least 2 services which have to have corellation Id based logging to give you a fighting chance of working out what goes wrong, centralised log store, separate containers, monitoring, configured orchestration for the containers and some sort of communication between them ... what's not to love?

</comment><comment><USER3> I don't use a database per service, rather a single database service which others can query. Sometimes there might be some caching layer in another service, or if the data source is unique enough (eg elasticsearch) it gets its own service.

PS I'm apparently a buffoon and use microservices for even the most trivial side project

<comment><AUTHOR> I was talking with a group yesterday and that idea came up (or something similar). The idea was to have a data microservice for writes and then let the various microservices do reads from their specific db. This data microservice would handle writing data out across the various data sources so nobody else had to know about it, they just knew to send writes to that service. Is that sort of what you are doing?

<comment><USER3> Even simpler, just one service for both reads and writes. It acts as a CRUD API for the whole system. Other services are for more distinct functions like sending notifications, interacting with an API, or running some specific process.

</comment></comment></comment><comment><USER4> If you're a single developer you shouldn't be using microservices, which is an easy way to solve the problem: microservices are only useful for large organizations.

What specifically is the problem you're trying to solve?

<comment><AUTHOR> No specific problem, I just run into a lot of customers who are trying to solve the problem. I can parrot back everything from the books and the Netflix tech blog but I'm interested to hear what non-Netflix people are actually doing. Really more of just a learning question versus "I have an immediate problem to solve".</comment></comment>


Show HN: Rasta.js, anonymous domainless key-value store for frontend JavaScript - <AUTHOR> http://rastajs.errorjs.com

<comment><USER2> I looked at the code, and what this does is to make calls to a web api on the errorjs.com domain.

It sets a key using:

<http://rastajs.errorjs.com/set/yourkey/yourvalue>

And retrieves it using:

<http://rastajs.errorjs.com/get/yourkey>

It also adds a timestamp, and allows for a callback. Perhaps it should be clarified that this relies on making a web call to their server (even if that is the only way this could possibly be done).

<comment><AUTHOR> Thanks. I should be more clear about that.

The api is defined under WHY? tab, btw.

</comment></comment><comment><USER3> You might want to look at <http://openkeyval.org> if you weren't aware of it. Exact same idea.

(HN discussion: <http://news.ycombinator.com/item?id=1846088>)

</comment><comment><USER4> Unless there is something I don't understand, how can this even be slightly reliable or useful, when everyone can read any key and __write __or __replace __any key at any moment ?

<comment><USER5> I guess I could see some usefulness in a quick weekend prototyping to get a persistent app up and running.

<comment><USER6> but then why would this be better than, say, localStorage, which is local? The only purpose to this is semi-persistent _cross-domain_ information storage. It's crazy to use an external JSON-P service to store tweetable-sized messages, when you've got megabytes locally with precisely the same key/value setup. Or, if you're handling older browsers, cookies will get you several KB.

<comment><USER5> If you want to demonstrate some cross-browser communication app? I agree, this has a very limited application scope. I am more confused as to why the author made it when he doesn't seem to have a use case for it himself.

</comment></comment></comment></comment><comment><USER7> Good use of Twitter's new Bootstrap framework <http://twitter.github.com/bootstrap/>

</comment><comment><USER8> There is a typo on the "FOR DUMMIES" section, "This is a key-value dat __e __store"

</comment><comment><USER9> Would it make sense for "set" to be a POST? Or does that compromise "easy"?

<comment><USER4> It would make sense in theory, but in practice you can't make POST request to a JSONP API. So that's why you have to stick to GET request.

<comment><USER10> You can make a cross domain POST with an IFRAME but would not get the response directly. Having to use parent.postMessage, the window.name hack or polling with JSONP depending on the browser. Possible then, but not so easy.

<comment><USER4> Those hacks don't work on all platform (iframe for mobile is a good example) and often require you to have very particular setting on both sites. The only way for JSONP to work well on everything is to use script tag injection which only allows you to do GET request.

<comment><USER10> This works well on iPhone and Android mobiles. And has the same level of particular settings as JSONP.

</comment></comment></comment></comment></comment><comment><USER11> awesome! like someone else said, this is a great tool for prototyping, and likely other projects. tinydb is pretty cool as well. <http://tinydb.org/>

</comment><comment><USER12> Is this OSS? If so, where is the un-minified version and repository?

<comment><AUTHOR> Unminified JS: <http://rastajs.errorjs.com/rasta.js>

I am putting it on GitHub right now.

</comment></comment><comment><USER13> I guess I am not geek enough, but the description for this is SOOO opaque. I have no idea what this does - and I am a web developer!

Can someone explain, in simple English, what this is about and why it's good?

<comment><USER14> It's a javascript library that essentially consists of two functions ( _get_ and _set_ ) to retrieve and store some arbitrary content identified by a key string. That content is stored on the author's server though you can override the domain name and put in your own.

I think this combination of a lightweight library and free online storage could be useful for people who would like to have a static website with no functionality or storage whatsoever on their server. It could also be used in scenarios where JS code is used as glue between one or more websites and the user (for example in browser plugins).

</comment></comment><comment><USER15> how does it work ?

<comment><AUTHOR> you just include a <script> tag, and then use the API.

<comment><USER16> I think he meant - physically, HOW does this work. As in, where is the data stored and how?

<comment><AUTHOR> oh, my bad. Well, the API doesn't specify anything beyond that.

My implementation is on GitHub at <https://github.com/errorjs/Rasta.js>

<comment><USER17> you might be able to replace the server with just CouchDB configured to allow JSONP... Then users can just sign up at something like <http://iriscouch.com> to install a copy of your library on an independent server.

</comment></comment></comment></comment></comment><comment><USER18> Do keys need to be globally unique?

<comment><AUTHOR> Everything is in the same namespace.

<comment><USER19> It would be a heck of a lot more useful if it were namespaced, like S3's buckets. Let folks put into those buckets whatever they want, but make the buckets in your datastore unique, based on the domain, referer, etc.

</comment></comment></comment><comment><USER20> Fantastic! I needed that.

<comment><AUTHOR> me too, that's why I made it

<comment><USER21> what are you using it for? still don't really get it...

<comment><AUTHOR> nothing yet, I just wrote it. But basically, the idea is, you no longer need a backend to store some simple data.

<comment><AUTHOR> I provide the backend. Well, actually Heroku does

</comment></comment></comment></comment></comment><comment><USER22> I think there's a pretty limited use for this, but it's definitely an interesting experiment if nothing else. I found it so cute that I decided I'd implement a really simple server endpoint for this.

<https://github.com/rockstar/selassie>

It's not backed by anything but memory, but that's why I said "simple".

<comment><USER23> He has his own backend, written in js and also backed by redis within the package:

<https://github.com/errorjs/Rasta.js/blob/master/web.js></comment></comment>


NASA Retires Kepler Space Telescope - <AUTHOR> https://www.jpl.nasa.gov/news/news.php?feature=7272 <comment><USER2> So are they going to leave it just like that, on the orbit? Why not push towards the earth to burn on reentry or give access to students (assuming the electronic parts are still working) to play with?

<comment><USER3> Well, you have 40 years to lobby for a recovery mission, or 100 years, depending on which approach you want to target.

[https://twitter.com/NASAKepler/status/1057357823426879489](https://twitter.com/NASAKepler/status/1057357823426879489)</comment></comment>


Ask HN: How are big players handling large number of live video broadcasts? - grif-fin Periscope. According to an article from medium [1] Periscope had a peak of around half million daily broadcasts. This may mean that Periscope have handled many live broadcasts to tens of thousands of users simultaneously!
Here I can imagine some complex hybrid P2P and TURN server with regional load-balancing and limiting content exposed to users may do the trick for handling the traffic. But this will come with expensive cost.
So my question is, from point of view of a start-up which has a similar problem of scaling as traffic grows, how would you implement your handling of this traffic?
P.S I understand you may say start-up project with 10 live broadcasts would be a dream! So I will clarify, how do you gradually move so if the project is successful you can handle the traffic with minimized costs on bootstrap?
[1] https://medium.com/@somospostpc/how-many-periscope-broadcasts-are-made-daily-808ae7f32de#.w2tltjeul <comment><AUTHOR> My understanding is that companies with successful systems running at scale usually created those systems after throwing away a series of systems that ran at lower scale. In the case of video, Netflix threw away a system that sent DVD's through the snail mail.

The big problem is getting to the point where your problem is scaling. Scaling is a good problem to have.</comment>


When the Billionaire Next Door Moves Out - <AUTHOR> http://www.nytimes.com/2016/05/15/opinion/sunday/when-the-billionaire-next-door-moves-out.html?partner=rssnyt&emc=rss&_r=0 <comment><USER2> I've been saying for years we should remove income taxes, and move to a financial exchange tax, specifically on transactions in/out of the country combined with a VAT system on all imports.</comment>


The dark truth about chocolate - <AUTHOR> https://www.theguardian.com/lifeandstyle/2018/mar/25/chocolate-the-dark-truth-is-it-good-for-you-health-wellbeing-blood-pressure-flavanols <comment><USER2> That's a surprisingly in depth newspaper article! Rather than another article about how chocolate is a "superfood", or debunking the "myth" of chocolate, this is a look at how our perceptions of chocolate are affected by industry driven science. The closing paragraphs give a flavor of the piece, telling of an social experiment that I'm surprised I hadn't heard about (or at least don't remember):

 _The role of the media in helping chocolate makers exploit our failure to grasp the complexities of nutrition science was laid bare in a 2015 exposé. German television journalists set up a three-week "study" in which they asked one group of volunteers to follow a low-carb diet, another to do the same but add a daily chocolate bar, a third to make no change to their diet. Both low- carb groups lost an average of 5lb, but the chocolate group lost weight faster. By measuring 18 different things in a small number of people, the spoofers made it likely they would find "statistically significant" but fake benefits of eating chocolate._

 _The "peer-reviewed" International Archives of Internal Medicine agreed to publish a hastily written paper within 24 hours of receiving it – for a fee of €600. John Bohannon, a Harvard University biologist and science journalist in on the hoax, put together a press release. Within days stories had been published in more than 20 countries. The Mail Online, Daily Express, Daily Star and Bild were among those that fell for it._

More about how that paper came to be here: [https://www.cjr.org/analysis/the_history_behind_the_chocolat...](https://www.cjr.org/analysis/the_history_behind_the_chocolate_hoax.php)

<comment><USER3> Guardian is a lovely newspaper. I particularly like the Long Reads, almost always interesting. They have a mailing list for that, and also a weekly news one, both just full of nice, useful content.

<comment><USER4> The Guardian also made one of the greatest television commercials of all time. If you've seen it, you know the one I'm referring to.

If you haven't, watch it two or three times:

[https://www.youtube.com/watch?v=E3h-T3KQNxU](https://www.youtube.com/watch?v=E3h-T3KQNxU)

If anyone here remembers the Software Entrepreneur's Forum that met regularly in the Palo Alto area in the '80s and '90s, Will Hearst gave a talk at one of their meetings and played this commercial as an example of creative marketing. High praise from another newspaperman, and well earned.

Tangentially, Will is also a mathematician and programmer. I don't know how much code he writes these days, but back then he was known to be quite an AWK enthusiast.

<comment><USER5> I hope this would be the advert where a newspaper repeatedly unfolded to cover an entire city, backed by some funky brass.

The linked ad is much more worthy, but I've always wanted to see the other one again.

</comment></comment></comment></comment><comment><USER6> > During the 1990s, scientists became interested in the French paradox – the > now discredited observation that heart disease rates were low in France > despite a national diet high in saturated fats.

I joined a local Toastmasters club over a year ago. Last week we had a speech from a member who grew up in France, found his way to an engineering university in Florida, and now lives in Arizona. His latest speech told of how he's lived _" the French Paradox"._ A few years ago he went home to visit family. His aunt squeezed his cheek and sweetly said, _" You've become a fat American."_ The rest of the speech was about how this motivated him to return to his old French eating habits -- 5-course meals, small entrees, dairy, desert. He lost 50 pounds. One of the key points he raised was how he makes an effort to avoid most unsaturated oils.

There is no French paradox, because the French are correct to take food more seriously than Americans. That some scientists think there is a "French paradox" just shows how confused they are. IMHO, Ancel Keys' work was really just junk science [0].

[0] [https://en.wikipedia.org/wiki/Ancel_Keys](https://en.wikipedia.org/wiki/Ancel_Keys)

<comment><USER7> French here. I think there are several points in the way we approach food here in France.

There is a long tradition of gastronomy. Not saying we are the only country in the world with a good gastronomy, of course not, but it's in our genes. I think we are one of little peoples that are talking about food when eating. When you eat with other people, there is always a moment when you start talking about a restaurant, or a time, where/when you had a great meal.

We are also obsessed with our traditional meals or food. For example, close to each dairy farm have its sort of cheese. A lot of them will never cross the US border:-) There are moe than 1200 sort of cheese [1] and even protected ones, meaning the recipes and origin are protected by 'law' [2].

And that's also true for ham, delicatessen (and we love those), meat, poultry, and everything coming from unindustrialized farms (or not too much).

That's something we really care about. And because those foods taste something, there is no need to add sugar or other in it.

Of course, that's for the tradition picture. But we also eat junk food, microwaved food (even more since the 70's crisis where working or finding work became harder and harder each year). We just went 3-4 decades eating bad, especially in cities, and the obesity epidemy is somthing real in France too.

Fortunatly there was a wake up call in the middle of the 2000's and more and more people try to come back to less industrialized processed food.

And in conclusion, there's something true for French : we LOVE to eat !

[1] List in French : [https://fr.wikipedia.org/wiki/Liste_de_fromages_fran%C3%A7ai...](https://fr.wikipedia.org/wiki/Liste_de_fromages_fran%C3%A7ais) [2] Short list in English : [https://en.wikipedia.org/wiki/List_of_French_cheeses](https://en.wikipedia.org/wiki/List_of_French_cheeses)

<comment><USER8> What is delicatessen? In USA that just means cold cuts of meat.

<comment><USER7> Well I used Google Translate, but I guess it's something like that. The french word is Charcuterie.

I haven't found a website in English, but here some pictures and classification (in french)

[http://www.cuisinealafrancaise.com/fr/produits/boucherie- cha...](http://www.cuisinealafrancaise.com/fr/produits/boucherie- charcuterie/charcuterie-terrines-pates)

Searching was also the occasion for me to remember that french gastronomy is since 2010 "Representative List of the Intangible Cultural Heritage of Humanity" :-)

[http://us.france.fr/en/information/gastronomic-meal- french-5](http://us.france.fr/en/information/gastronomic-meal-french-5)

<comment><USER9> We use the French word in the states.

<comment><USER7> Oh ok ! Learned something, thanks.

<comment><USER9> I mean, to be fair you'll also see antipasto, deli tray, meat & cheese board or even in some German influenced communities "vespers".

But if you say charcuterie you'll be understood.

<comment><USER10> Interesting to see Vesper (pronounced Feshper where I live). That's a distinctly southern German term that not even most Germans will use.

<comment><USER9> I've seen it used mostly in small towns in the Midwest that were strongly German immigrant communities.

If you go to the upper Midwest you will similar odd uses of Scandinavian words.

It would not surprise me at all to learn that these communities are using archaic or even incorrect words.

<comment><USER10> It's correct and not archaic, it's just something very localized in Germany, which I wouldn't necessarily expect a mixed immigrant community to adopt.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER11> I wonder how long before we start seeing studies about the benefits of social media or casual games. "People with more than 500 Facebook friends live up to 2 years longer." "People who spend more than $100/mo on loot boxes find jobs 17% faster."

Just do enough studies and the benefits will show.

<comment><USER12> > Just do enough studies and the benefits will show.

Indeed, the latest research shows that people who do more than 200 studies get 15% more benefits.

</comment></comment><comment><USER13> Just reading the nutrition label on my bar of dark chocolate says it has a significant amount of fiber and iron which makes it better than most other desserts. I don't eat it like I'm eating vegetables. I eat it like it's a treat that is better for me than other treats.

</comment><comment><USER14> In general, I'd be skeptical of positive claims about any single food as a health solution. There might be foods that are especially bad, but even then, there's rarely a situation where one food, if the rest of the diet was "healthy" (generally defining as non-processed and containing variety among fresh ingredients that include whole grains, produce, and proteins), would be problematic in moderation, unless the consumer was allergic to it.

Eating poorly can hurt, but there's not one "simple trick" that can change that. People want some kind of antidote magic bullet to the health issues we have, but food is very unlikely to fill that role. A good article: [http://www.grubstreet.com/2018/03/ultimate-conversation- on-h...](http://www.grubstreet.com/2018/03/ultimate-conversation-on-healthy- eating-and-nutrition.html)

</comment><comment><USER15> Lindt 78% cocoa surely has a positive impact on my mental health. I find one or two squares at a time are enough due to the richness of the flavour.

<comment><USER16> Is this an advertisement?

<comment><USER15> Not at all. Just genuinely like it and 78% seems like the "sweet spot" for me. Where the 70% is a little too easy to over eat and the 85% is just too rich, almost as if it's a different thing, not quite "chocolate".

</comment></comment></comment><comment><USER17> See also: [https://news.ycombinator.com/item?id=16673382](https://news.ycombinator.com/item?id=16673382)

</comment><comment><USER18> What should one do, if one wants to try "what the Aztec's called the food of the gods"?

<comment><USER7> Find a place where people actually grow cocoa beans. That sound stupid, I know, but I'm not sure there are a lot of place else you can taste raw cocoa.

I once saw a TV report about a chocolate maker in Belgium who bought beans directly and making all the process by himself. Perhaps some other do that ?

I have the chance to live in a carribean island where there's a place where they grow cocoa. So you can test (and taste) it in its raw form.

It's particularly bitter ! And eons from chocolate.

I was the only one in a group of five to appreciate it. But just a sip :-)

<comment><USER19> You're a little off base there. You can in fact make your own chocolate bars at home [http://chocolatealchemy.com/](http://chocolatealchemy.com/)

Not an ad, just an anecdote that you don't have to travel far for raw cocao.

<comment><USER20> >>You can in fact make your own chocolate bars at home

And it isn't that difficult really. There are lots of places you can get raw cacao from and recipes for chocolate bars are actually quite simple. The best part about making your own chocolate bars is that you can experiment with how much sugar, almonds, and cinnamon to add. Roast the almonds and cacao beans to your liking, crush them all together until you get a nice dough texture and voila! Chocolate.

</comment></comment></comment></comment><comment><USER21> Chocolate keeps me regular.

</comment><comment><USER22> TL;DR: Most heath claims done by scientific studies are fake

</comment><comment><USER23> It's amusing to see a British paper attacking the health benefits of dark chocolate, given what they sell as "chocolate" in stores. After having had unfortunate opportunities to try it, I wouldn't touch it with a 10-foot pole.

<comment><USER24> Which brands? if you have only ever eaten Cadburys going to a 70+% cocoa might be an unusual taste, and in America big brand chocolate is even more adulterated than it is in the UK

<comment><USER25> Comparison of th ingredients of Cadury's Dairy Milk in the UK vs US [0]:

> According to a 2007 report in The New York Times, a British bar contained > (in order) of milk, sugar, cocoa mass, cocoa butter, vegetable fat and > emulsifiers, whilst the American version manufactured by Hershey started its > ingredients list with sugar. It also listed lactose, emulsifier soy > lecithin, and "natural and artificial flavorings".

Cadbury's is typically the cheapest brand of chocolate in the UK. The UK got an exception from EU law to create a new type of 'family milk chocolate' that only contains 20% cocoa solids instead of 25% as is required in the rest of the EU to call something milk chocolate [1]

[0]: [https://en.wikipedia.org/wiki/Cadbury_Dairy_Milk#Ingredients...](https://en.wikipedia.org/wiki/Cadbury_Dairy_Milk#Ingredients_and_tastes_for_local_markets)

[1]: [https://en.wikipedia.org/wiki/Types_of_chocolate#Types](https://en.wikipedia.org/wiki/Types_of_chocolate#Types)</comment></comment></comment>


Rudimentary GooglePlus API - <AUTHOR> http://point7.wordpress.com/2011/07/10/rudimentary-googleplus-api/

<comment><USER2> That's fantastic, well done.

Is there potential for Google to block me for too many requests? I somehow doubt they'd block me unless I was hitting the servers with massive load.

This G+ engineer mentioned an official API is in the Pipes:<http://anyasq.com/79-im-a-technical-lead-on-the-google+-team>

</comment><comment><AUTHOR> Link to actual code for his GAE app. [http://code.google.com/p/emlynoreganappengine/source/browse/...](http://code.google.com/p/emlynoreganappengine/source/browse/trunk/gpapi.py)</comment>


Follow-up: Why there is no talent - <AUTHOR> http://timeless.judofyr.net/why-there-is-no-talent

<comment><USER2> I liked the original article, it was a useful idea for someone with aspirations to be great. The core takeaway for me was simply this: thinking about talent is counterproductive. If you think you have no talent then you are prone to give up, if you think you have lots of talent you are prone to coast. The only way to be your best is through deliberate and focused hard work.

This article undermines that idea by thinking too much about talent. Look, if you work really hard at something for a long time, and discover that you don't enjoy it or you just aren't any good at it, it's okay to conclude you have no talent for it and to move on. But if you are trying to be better at something, philosophizing or even reading science about talent is pointless wanking that will certainly prevent you from actually doing the work to become great.

</comment><comment><USER3> He starts out saying he wasn't making a scientific essay, just an emotional one. And then he goes on to try to make it scientific.

He talks about international chess players, and how long the average person takes to get there, versus those with 'talent'. He then compares some famous players (without proving they have 'talent') to the average. They got there 10% quicker than the average (which includes 'talented' people, but that's not significant in his mind. That's not science. That's just picking some stats and pretending they mean what you say they mean.

I'm sure I could pick stats that 'prove' the opposite if I spent some time looking. I've got a friend who recently started painting and is mind-blowingly good compared to other students who have studied about as long, for example.

<comment><AUTHOR> I wasn't comparing some average people with talented people. I was simply showing that it takes time to reach a certain level of expertise. This implies that even if you have a talent, you'll _still_ have to invest a lot of time.

"A friend" is not stats. This is stats:

 _Long periods of necessary preparation can also be inferred for writers and scientists, although the starting point of their careers is more difficult to determine. Scientists have reported that they made a career decision during their middle or late teens, whereas they most often published a truly major contribution one or two decades later (Lehmann, 1953). Raskin (1936), who analyzed the 120 most important scientists and 123 most famous poets and authors in the 19th century, found that the average age at which scientists published their first work was 25.2; poets and authors published their first work at the average age of 24.2. Moreover, many years of preparation preceded first publication. The average ages at which the same individuals produced their greatest work were 35.4 for scientists and 34.3 for poets and authors. That is, on average, more than 10 years elapsed between these scientists' and authors' first work and their best work. In many other domains, the highest level of expert performance is displayed by individuals with more than 10 years of experience: evaluation of livestock (Phelps & Shanteau, 1978), diagnosis of X-rays (Lesgold, 1984), and medical diagnosis (Patel & Groen, 1991). This evidence is consistent with Gallon's (1869/1979) claim that motivation and perseverance are necessary for attainment of eminent performance._

</comment></comment><comment><USER4> The title is misleading; even he admits there is talent. Sure, it's overplayed how much it matters, but that doesn't mean it needs to be exaggerated from the other end of the spectrum.</comment>


Using CAPTCHAs to get more followers on twitter. - <AUTHOR>

Such a service could work like this:
* you submit a selection of your tweets that you are particularly proud of
* you also submit a CAPTCHA to check whether someone looking at your selection really looked at it carefully
Example:  such a CAPTCHA might ask the user to select the tweet in your selection that satisfies a particular criterion
Your tweet selection will be shown to k people provided that you correctly answer the CAPTCHAs in ~ k selections.
You could have people use tags to facilitate search/browsing of tweet selections. <comment><USER2> I find that followers(/users) that you have to trick into staying aren't worth it and will probably not stay.

<comment><AUTHOR> There's no trick here. They have final say on whether to follow you.

<comment><USER3> If your tweets are of their interest, they will find you. I search twitter all the time for topics that interest me such as Django.</comment></comment></comment>


Linus Torvalds Explodes at Red Hat Developer  - <AUTHOR> http://linux.slashdot.org/story/13/02/25/1251236/linus-torvalds-explodes-at-red-hat-developer

<comment><USER2> > Linus said what most free software user feel and wanted to say from the very > beginning but neither had the strength or conviction, that Linus has

So it takes strength and conviction to be rude and condescending? I'd say it takes strength to remain polite in a heated argument. I'm not impressed with Torvalds' attitude.

<comment><USER3> Linus is one of the nicest people you'll ever see. He's just a massive troll/flamethrower when it comes to online discussions. He acknowledges so himself. I don't mind it, Linux is his baby and if you don't like interacting with him you can just fork it and go your own way. Nothing stopping you.

I think nobody takes Linus's insults at face value anymore. I'd actually laugh my ass off if I was a kernel developer and got told off by Linus.

<comment><USER4> There is a problem that flaming is seen as normal, acceptable behaviour in some communities.

People see Torvalds doing it, they see de Raadt doing it, they see a bunch of people doing it, and so they think it's okay to do it in their email list.

This increases developer churn and burnout, and that's not something that OpenSource can afford.

I think it's a shame if young people are learning how to collaborate with others from these broken models, rather than learning effective skills. Especially if inter-personal skills are more likely to be weak in the dev community.

Having said all that, I kind of agree that it's okay for someone to be an arse on their own pet project. If it becomes unbearable people could just fork it split and the project.

</comment></comment></comment><comment><USER5> Not exactly political, but the man has a point.

Better explanation here linked from Slashdot here (the actual mailing list site is down.) [http://www.muktware.com/5276/linus-torvalds-secure-boot- supp...](http://www.muktware.com/5276/linus-torvalds-secure-boot-supporters- not-dick-sucking-contest)

</comment><comment><USER6> He's right, but Red Hat isn't necessarily wrong. Red Hat's doing what's right for their consumers, but Linus is speaking about what's right for the ecosystem. They're different groups/people with different priorities. While I tend to side with Linus on this, I see the values of Red Hat coming up with a working solution, even if it is catering to Microsoft. I'd love to see something in userland and I don't see why the kernel team needs to concern itself with what vendors want to trust. Leave that to Red Hat and Canonical.

Regarding his words: I honestly don't know why I'm still surprised when he does/says things like this, and I still don't know how I feel about it. The way he instantly reaches for his bag of obscenities seems a bit childish, but he does more often than not get his point across.

I have to wonder if he uses such language so often because he knows tech news is going to report on it when they might not if he were to gently rebuke a kernel dev? It should be noted that after his rant at Nvidia ([http://www.theverge.com/2012/6/17/3092829/linus-torvalds- fuc...](http://www.theverge.com/2012/6/17/3092829/linus-torvalds-fuck-you- nvidia)), Nvidia driver support became a hotly discussed topic and very soon became significantly better. In that regard, Linus seems to get things done and for that, I commend him.

On the other hand, he tends to curse and complain a lot on his g+. It's fairly likely that's just all him.

</comment><comment><USER7> Can anyone explain or share a link explaining what was a high level purpose of the RedHat patch? (besides winning the contest, because I understand there was no such thing)

<comment><USER8> _"The high-level view is this: Microsoft wants to ensure that nobody can run unapproved software on their home computers. As a first step toward this nightmare, they bullied computer makers into shipping a bootloader signature system that could potentially prevent people from running GNU/Linux. Red Hat, a multibillion dollar GNU/Linux distributor, decided to play along and got a special signing key from Microsoft. Linus apparently does not want to play along (and I commend him for it)."_

Taken right from the comments on the linked article: [http://linux.slashdot.org/comments.pl?sid=3492573&cid=43...](http://linux.slashdot.org/comments.pl?sid=3492573&cid=43002783)

</comment></comment><comment><USER9> I would have probably done the same under the circumstances. The solution was a crock of shit.

You can only take so much.

</comment><comment><USER10> I find it weird that "dick" was obscured more than "fucking" was.

<comment><USER11> In the original, Linus had already obscured "fucking", but not "dick". Perhaps the automated obscenity filter just didn't pick up the "f*cking".

</comment></comment><comment><USER12> Well it certainly gets him some celebrity, as if he were in need of any more. It seems Linus Torvalds lashes out on someone every month, and it's probably not an attitude that makes people want to cooperate with him. Or are they used to it by now?

<comment><USER13> From seeing the results of the flames it appears most people are used to it now, which I can't decide is completely horrific or not.

</comment></comment><comment><USER14> "People who are offended should be offended." -Linus Torvalds

</comment><comment><USER15> Kernel drama, will this be on TMZ?

It elicits the same emotional knee-jerk response, just don't.

</comment><comment><USER16> Indeed the kind of argument is inappropriate to say the least. Information content below 4bit in a whole message?

</comment><comment><USER17> He may be right but that doesn't mean he doesn't sound like some 14 year old douchebag on his XBOX.

</comment><comment><USER18> ...and people get on Stallman's case for being antisocial and offensive.

</comment><comment><USER19> does mjg still work fo rh I tought he went to openstack?

</comment><comment><USER20> Riveting stuff.

</comment><comment><USER21> Frankly, I think Linus Torvalds may be the next Steve Jobs.

This is very Jobsian. He knows what's right, and he's dressing down people who also knew what was right but did the wrong thing anyway. People act as if Jobs was a tyrant badmouthing random innocent people. He wasn't. He was actually pretty genial most of the time. What would set him off was not when someone made an error, but when someone did the wrong thing and they knew it was wrong at the time, but did it anyway.

Jobs was the keeper of the flame of "do the right thing" (my phrase for it) which always involved the right thing for the customer (which is why Apple doesn't follow trends, and rather than make netbooks made the iPad, a superior customer experience.)

Linus is doing the same thing here. For Torvalds the customer is a different customer, both linux users but a lot of developers and the open source community at large. But he's keeping the flame as he sees it, and history indicates he's pretty accurate.

As to another commentators wondering if this would happened if the submitter was female, it really shouldn't matter. I'd like to think that Linus reacted to the error, not the person. It's true that taking it down a notch or two and being more diplomatic is appropriate, almost all the time. It's clear that Torvalds is this way almost all the time, which is why he has such a lovable teddy-bear image, for the most part. The power of blowing up on someone is not when you're doing it, but in the knowledge that there is shit up with you will not put. That's the power.

Also, there's nothing really that gender specific in what he said. Both men and women could engage in hypothetical "dick sucking contests".

Frankly, the average female engineer I've known is tougher than the average male engineer I've known (who tend to be a bit on the wimpy side, while the women tend to be a bit less wimpy than average for people.) But that's just my experience, and consequently anecdotal. The point being that I don't really believe that female engineers are desperate for people to protect them, and that most of the "software development is _So Sexist_!" people are non- engineers looking for an excuse to be outraged. Some evidence: all the hate towards "brogrammer" stuff, which it is painfully obvious to everyone inside the industry is an inside joke lampooning male programmers by contrasting those pasty nerds with the tanned jock stereotype that beat them up in high school. To act like "brogrammers" are perpetuating a male sexist culture is to, in the most profound way possible, not get the joke!

However, there is sexism... and the reaction from the sexists would be _much_ different if he had been addressing a female. But that's not sexism on Linus's part- in this hypothetical he was saying the same thing in both cases. But if he'd said it to a female, the knee jerk sexists who want to see sexism everywhere (except in themselves) would have reacted quite differently.

<comment><USER22> Third forum where I see this discussed - and same as in the other 2 a lot of the discussion here is again about his choice of his words instead about the content. I don't think that's a good sign.

<comment><USER23> > _"and same as in the other 2 a lot of the discussion here is again about his > choice of his words instead about the content"_

Yes, and this is an important lessons to people who underestimate the importance of communicating effectively. If you walked onto the stage at the Oscars wearing assless chaps, you can hardly blame people when they can't remember what your thank-you speech was about.

Similarly, when you throw around ad hominems about your opponent performing fellatio on a competitor, you cannot blame people when the discussion recenters around it.

<comment><USER24> Do you really think that the people who actually matter failed to receive the message?

No, spectators on slashdot and HN do not actually matter, despite how hard our ego may make it to internalize that.

<comment><USER25> It's an embarrassment to our entire industry. It's one of the main reasons people avoid contributing to open source projects. Yes it matters. People who have the maturity and communication skills of 14 year old boys are not the only ones that can make worthwhile contributions.

<comment><USER24> Torvalds being a meanie is dragging down the entire industry? That seems like quite the leap. Where are all of these people with patches that they have been holding on to for fear of the wrath of Torvalds, and why haven't they banded together and just ignored him?

Unlike bullies in corporations, this guy is incredibly easy to just ignore; the only reason people don't ignore him is because despite being a meanie, he still commands respect. If he didn't, he wouldn't be in the picture.

<comment><USER25> This isn't about one individual. Offensive, sexist, bigoted communication is standard in the industry. There are mini-Torvalds (and mini-ESRs and mini- DHHs) everywhere who think making derogatory comments about women or otherwise being gratuitously rude is how you prove your worth/"manliness" and a good way to run a project. Bad behaviour filters down, especially when people on HN or slashdot applaud it.

>Where are all of these people with patches that they have been holding on to for feel of the wrath of Torvalds, and why haven't they banded together and just ignored him?

On my hard drive and a million other people like me. Not for the linux kernel in my case, but other open source projects that I don't post my fixes to because it's probable that I'll just get flamed and it isn't worth the stress. If you don't realise how endemic this problem is then I can only presume you don't know any programers who aren't part of the 'boys club'.

Torvalds can get away with it because linux is huge, but there are hundreds of other projects that struggle through lack of contributions.

Next time some software you use crashes or hits some kind of bug, consider that you are probably not the first person to experience it and somebody somewhere probably already fixed it but didn't upload the patch because they didn't want to get abused.

<comment><USER24> No, Torvalds doesn't get away with it because Linux is huge. In a world where Linux is huge _and_ people didn't value his input, then he wouldn't get away with it. The open source ejects people with bad attitudes who are not worth the trouble, just look at glibc and Drepper's reign of terror.

If there are really _millions_ of developers sitting on patches because they don't want to deal with mini-Torvalds, then you really should start a movement.

<comment><USER25> It seems like you still don't believe me that people keep patches to themselves because the open source community is so unpleasant to deal with. We had several huge threads about this the last time some alpha jock devs got called out for being assholes. Here are some examples:

<https://news.ycombinator.com/item?id=5112713> <https://news.ycombinator.com/item?id=5112665> <https://news.ycombinator.com/item?id=5112513> <https://news.ycombinator.com/item?id=5112763>

<comment><USER24> Oh, I believe it happens, I just don't believe that it is as pervasive as you suggest. If it were _millions_ sitting on good patches for no reason other than a few people in the "in crowd" being caustic, then the developer-power represented by that group would rival the developer power of the big meanie "in group". Seriously, if that is actually the case, organize.

Here is my perspective though: for the past week I have been sitting on a few commits for git that I would get flamed for if I aired them publicly. Why am I so sure I would get flamed? Because if I am honest with myself, it is because the change is shit. The change is not backwards compatible, has only hypothetical use-cases, and has questionable support in the UI. Until I resolve those things I know it would be flamed (or worse, and more likely, ignored). Now, I'm not sitting on it because I know it would be flamed, I am sitting on it because I know it is shit. If I fix those things, and I don't conduct myself like an asshole when my baby gets curtly shot down, I am fairly confident that I won't be verbally abused. If I am, who gives a shit?

I suspect most people sitting on patches for fear of being flamed, if they are honest with themselves, are so sure that they will be flamed because they understand why they would be. Are there a few who have good changes that are irrationally afraid of being flamed? _Yes_ , I am certain of it. Are there some projects currently headed by people who flame good patches? _Absolutely_ , glibc a few years ago was such a project... but Linux is not one of those projects today.

<comment><USER26> It happens in the corporate workplace, too.

<http://rachelbythebay.com/w/2012/10/14/2gb/>

I found a problem in production, figured out what was going on, wrote a workaround, mailed out a patch, and ... they hated it. I didn't want to fight forever. So, I took my ball and went home, so to speak.

Months later, a different, nicer, person came to me and asked if I still had it. Fortunately for him, I had kept a copy of the change separate from our SCM in my home directory. I handed it over, he merged it, and that was the end of that problem.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><AUTHOR> >Guys, this is not a dick-sucking contest. If you want to parse PE binaries, go right ahead. If Red Hat wants to deep-throat Microsoft, that's _your_ issue.

I wonder what would've happened if he was addressing a female kernel developer. Would he have toned it down or would it have been the same? On one hand I like the straightforward talk without beating around the bush, but on another, taking it down a notch or two and getting the same idea across more diplomatically seems to be the better answer.

<comment><USER27> I wonder what the reaction from the community would be. Probably not very good... which is bad since the meaning of those words, in this context, is clear. And it's not really offensive, although there are more polite forms of course.

<comment><USER23> > _"And it's not really offensive"_

Wait, someone using crude, derogatory language to describe someone else is _not offensive_? Describing your opponent as wanting to deep-throat a competitor is merely _impolite_ now?

How socially clueless are we around here?

I'm so very sick and tired of the apologists here. Our industry is _known_ for prima donnas who are constantly at each others throats, with no semblance of civility whatsoever. We are the only industry I've ever seen where we _take pride_ in being callous, insensitive, and deliberately terrible to each other.

All under the guise of "not playing by The Man's rules".

<comment><USER27> He wasn't describing anyone, just their actions. And it's perfectly clear what it means.</comment></comment></comment></comment>


Binary is the past, Korean researchers develop ternary semiconductor tech - <AUTHOR> https://www.zdnet.com/article/korean-researchers-develop-ternary-semiconductor-tech/ <comment><USER2> Hasn't this style of computing been attempted previously by the soviets, why hadn't it caught on previously? From my reading of the article it's making the claim that as semiconductors become smaller, power leakage becomes more of a concern and the major breakthrough here is that ternary logic semiconductors would have an inherently better energy efficiency as it naturally stores more information. Has power leakage become enough of a concern that it makes development of these semiconductors more worthwhile?

</comment><comment><USER3> Stopped right here:

"For example, to express the number 128 in the current binary system, 8 "bits" will be required. With the ternary system, only 5 "trits" will be required."

Does that mean 8 bits != 5 trits? What is the 8bit eqivalent, 8 trits?

Cool to see an effort being made to progress semiconductor technology.

<comment><USER4> with 5 trits you can represent 3^5 = 243 states. With 8 bit you can represent 2^8 = 256 states. Very close but not the same.</comment></comment>


Law firm bosses envision Watson-type computers replacing young lawyers - <AUTHOR> http://arstechnica.com/tech-policy/2015/10/law-firm-bosses-envision-watson-type-computers-replacing-young-lawyers/ <comment><USER2> It would be interesting to hear how these bosses reason regarding how junior lawyers are supposed to gain years of experience when the entry level jobs are scrapped. Are they all mentally hoping that some other firm will take the cost?</comment>


IFTTT THIS: what missing channels do you want on IFTTT? - <AUTHOR>

I just suggested AnyDo via https://ifttt.com/help/channel_suggestion<p>I'm interested to see what's on everybody else's wish list, but I don't have enough karma to create a poll: https://news.ycombinator.com/newpoll <comment><USER2> evernote, google calendar, remember the milk, diigo - and not only more channels, but also more actions for every channel.

<comment><AUTHOR> Actually all but remember the milk is currently available as a channel.

However, I agree that additional actions would be nice. My favorite would be extracting links from emails, so that I could send them to pocket (from reading list newsletters).</comment></comment>


Parallel Random Numbers: As Easy as 1, 2, 3 (2011) [pdf] - <AUTHOR> http://www.thesalmons.org/john/random123/papers/random123sc11.pdf <comment><USER2> As I commented on reddit;

I've not read much, but the start where it says

> There are two approaches to parallelizing a PRNG—multistream and > substream—but both approaches have practical difficulties for conventional > PRNGs.

just screams "use PCG random!" to me. PCG random numbers support good, independent random streams really easily and also support substream partitioning. These don't require any challenging seeding, and they're some of the fastest RNGs out there. They're also small - 64 bits for a 64 bit period, 128 for 128 bit period, etc. Probably double that if you need streams, unless you're using their address for stream splitting.

'Course, there was no option for this in 2011.

Also, I'd be interested to know if the PCG test in Figures 7 and 15 of the paper[1] can be applied to this generator and, if so, how it fares. It's the only test I know of that isn't pass-fail, so helps give extra context on how strong an RNG _actually_ is.

Also, where it's said

> On the other hand, many of the most widely used PRNGs fail quite > dramatically, including all of the linear congruential generators

do note that a 92 bit LCG outputting 32 bit integers, and a 128 bit LCG outputting 64 bit integers _do_ in fact pass the statistical tests. LCGs are, in many ways, actually pretty good with larger state sizes. Not that implementers will take note :P.

[1] [http://www.pcg-random.org/pdf/toms-oneill-pcg- family-v1.02.p...](http://www.pcg-random.org/pdf/toms-oneill-pcg- family-v1.02.pdf)

</comment><comment><AUTHOR> Summarizing, the paper suggests that you can generate high quality pseudorandom numbers by hashing a counter with a cryptographic hash (such as AES). Since AES has hardware support in modern processors, this is fast: less than 2 cycles per byte of randomness. If you do fewer "rounds" of encryption than used for cryptography, you can pass all existing tests for randomness with run time of less than 1 cycle per byte. Using a counter as the state makes it very easy to skip ahead in the sequence, and to distribute "streams" across multiple processors.

<comment><USER3> I'm sort of surprised this could be a paper published in 2011. Isn't this pretty much the obvious thing to do? Counter hashing is a well known way to generate good random numbers, and it seems almost as obvious how you'd scale to multiple processors.

<comment><USER4> Yeah, considering what was described is essentially aes-ctr

</comment></comment></comment><comment><USER5> is the 'web' button on HN new?</comment>


Good Engineer / Bad Engineer - <AUTHOR> http://owocki.com/good-engineer-bad-engineer/

<comment> rishi-dragon A good Engineer is not afraid to push back in the interest of the company. A bad Engineer is a cog in a system and cannot think for themselves.</comment>


Ivory: an embedded domain-specific language for safer systems programming - <AUTHOR> https://ivorylang.org/ivory-introduction.html <comment><USER2> Galois is essentially a commercial R&D lab for businesses and governments. Although having trouble a while back, this business model plus talent at solving problems has landed them steady contracts. Even better, they open source lots of their tools they use for high-assurance software. Ivory's main use that I know of is SMACCMPilot program for high-assurance drone. They give details some of you want here:

[https://smaccmpilot.org/software/properties.html](https://smaccmpilot.org/software/properties.html)

Also, check out their blog, Github, and talks for lots of interesting stuff. In case anyone wonders, I have no affiliation with them: just a high-assurance researcher that gives props to those in field doing solid work, esp if FOSS- friendly. :)

</comment><comment><USER3> Embedded.com ran a story about Ivory and Rust recently: [https://www.embedded.com/electronics-blogs/say- what-/4460422...](https://www.embedded.com/electronics-blogs/say- what-/4460422/Achieving-memory-safety-without-compromise)

</comment><comment><USER4> I have not dug into this, but I am curious: how would you write multiple interacting, concurrent, timing-sensitive tasks with this? I am thinking about things like multiple complex protocol stacks on top of different interrupt driven I/o ports (uart, I2C, SPI) in parallel with a main application that is supervised by a watchdog.

<comment><USER5> [https://ivorylang.org/tower-overview.html](https://ivorylang.org/tower- overview.html)

> The Tower Language is an eDSL for composing Ivory programs into real-time > systems. Tower programs specify communication channels, tasks, and signal > handlers, and generate Ivory code which implements scheduling and > communication for real-time operating systems.

<comment><USER4> Interesting! This seems to be in very early development. I do not fully understamd the simple example, but somehow the basic idea and delarative nature feels promising to me. I do not have a good enough understanding of this. I fear that a single central declaration of all the tasks and communication channels might get unwieldy for a system with realistic complexity.

</comment></comment></comment><comment><USER6> In short: a DSL implemented in Haskell, allows to describe code with mutable state and various static guarantees around it.

</comment><comment><USER7> Their Hello World example has a lot of boilerplate.

</comment><comment><USER8> I do not understand the focus on memory corruption, it is not the major problem in embedded development. In my experience, the vast majority of problems were due to logic failures. Sometimes there was a buffer overflow which was detected in an old function when something new was implemented somewhere else..

For me the way to go are tools like matlab simulink to better figure out a complex program, and not yet another language trying to catch memory corruption bugs.

<comment><USER9> It's probably because memory issues are simultaneously one of the simplest, most easily-defined issues to solve and also potentially quite severe.

The more important issues we face are also significantly more difficult to solve with a simple tool, so there's correspondingly fewer solutions to even look at and they're often more disruptive to test than a new language.

<comment><USER8> Indeed.

Anyway i would love to have an open source Simulink-like IDE which generates C code. There is currently not much choices in model based tool, and none are open source.

</comment></comment></comment><comment><USER10> Sounds cool but hasn't been updated in months. Copyright still has 2017 for end date. Sort of implies project is no longer maintained.

<comment><USER11> It seems so - looking at their Github repo: [https://github.com/GaloisInc/ivory/commits/master](https://github.com/GaloisInc/ivory/commits/master)

Have a look at the pull requests and issues, I'm wondering if this may be an internal project from GaloisInc but not actively maintained externally.

<comment><USER12> Indeed. Galois have a reputation, at least in the Haskell community, for designing, building and releasing really cool stuff -- but then not maintaining it for much longer than the internal project requires. Galois is primarily a consulting firm and the amount of time they have for projects depends greatly on how useful they are to their current consulting arrangements. That said, I don't speak for them in any capacity -- these are only my personal observations.

</comment></comment></comment><comment><USER13> The syntax really leaves something to be desired.

<comment><USER14> It does seem quite a bit verbose for a simple print statement.

<comment><USER2> To add to other comment, the main goals of high assurance systems are twofold:

1\. Design systems that either never fail in field or fail safe. Many also want recovery mechanisms that always work.

2\. Part many miss: convince other people from buyers to regulators they did No 1.

One reason both Ada and formal specifications are so verbose is that lots of detail that's implicit in lots of languages are explicit in them so they can be reviewed. People overlooking detail due to verbosity is a common problem. People in this industry are disciplined enough to look at stuff in detail, though. So, the tradeoff of languages in this field is to optimize for software being read by people who want no stone unturned.

Now, what I cant tell you is how much verbosity is due to it being embedded in Haskell or just its own design. Verbosity doesnt surprise me, though.

<comment><USER15> It really seems ironic to me for "embedded in Haskell" to lead to "verbose".

</comment></comment></comment></comment><comment><USER16> Searching for embedded development jobs by the keyword "embedded" is already an exercise in manually filtering out phlebotomist jobs, teaching positions, histotechnologists, all sorts of people who think they're differentiating their offered position by saying "embedded with a team", as if thats functionally different from "working with people". Now weve added functional programmers.

Yet it remains by far the most relevant keyword in my experience. I would think "firmware" would be a better, or at least sufficient catch-all.

<comment><USER10> Actually even the use of embedded here is somewhat ambiguous. Embedded as in devices, or embedded as in embedded within another programming language. I think it might mean the latter here.

<comment><USER17> You are correct. The first bullet point on the page defines what embedded means for Ivory.

> Embedded: Ivory is implemented as a library of the Haskell programming > language. Ivory programs are written using Haskell syntax and types.

An "embedded DSL" is written inside a host language. It is different from a DSL which is parsed from characters using an interpreter or compiler.

I agree it's a confusing term in this context. I've also used the term "hosted". Wikipedia also suggests "internal". [https://en.wikipedia.org/wiki/Domain- specific_language#Domai...](https://en.wikipedia.org/wiki/Domain- specific_language#Domain-specific_language_topics)</comment></comment></comment>


The Facebook Places logo is a four. Inside a square. - <AUTHOR> http://i.telegraph.co.uk/telegraph/multimedia/archive/01699/facebook-logo_1699507c.jpg <comment><USER2> Square? Really? I would say that is a rectangle. But I guess geometric precision would not have given you the headline you were going for :-)

<comment><AUTHOR> hehe a friend of mine said the same thing, but to me it really looks like a square! Depends on the perspective I guess.</comment></comment>


Ask HN: What acquisition do you predict will happen next? - <AUTHOR>

Lets see if we can collectively predict the future and give the SEC a headache if insider trading around the acquisition becomes a question. <comment><AUTHOR> Google buys Airware

</comment><comment><USER2> Nintendo buys Technical Illusions.

</comment><comment><AUTHOR> Microsoft buys Rackspace

</comment><comment><USER3> Apple buys Nintendo

</comment><comment><USER4> Google buys TWC.

</comment><comment><USER5> Alibaba buys Overstock</comment>


Usbkill anti forensic: usb – kill - <AUTHOR> https://github.com/hephaest0s/usbkill/blob/master/README.md

<comment><USER2> Cool :)

The system() calls seems to limit it to Linux, though - any plans on replacing them with libusb or something similar?

e: I might give that a shot later today if I have some time, actually. I'll send in a pull request :)

</comment><comment><USER3> I'd love a version for all unix like systems.</comment>


For Workers, Less Flexible Companies - <AUTHOR> http://www.nytimes.com/2014/05/20/business/for-workers-less-flexible-companies.html?hp <comment><USER2> Anecdotally: while the NYT suggests that two employees who are indistinguishable from one another make it easier to grant them flexible hours, I think that tactically, you're much, much more likely to get flexible hours (along with "anything else you want") if _nobody_ substitutes for what you do.

This is also likely underlying the observation "a lot of firms quietly offer better-than-standard flexibility to a small section of their employees." Of course they do, for exactly the same reason that they quietly offer better- than-standard salaries. Somebody with something they wanted said "The price of us working together is X, Y, Z, and I work from home 2 days a week." and the firm said "Cool, we can live with that."

<comment><USER3> If you like academic papers, there is a great one by Claudia Goldin. Her topic of interest is gender pay gaps (boring), but it goes into detail on pay nonlinearities which is quite interesting. Basically, she goes into a lot of literature and does some work herself showing that for many jobs, work output is a nonlinear (e.g. y=x^2) function of hours worked.

A nonlinear pay function is generally related directly to nonlinear work output. Her working example is pharmacists - you can easily swap two half-time pharmacists for 1 full time one or vice versa.

On the other hand, consider your top trader - his job is keeping the entire strategy in his head (roughly a 30 hour/week job) and being around when the market is open (another 35 hours/week). You can't replace him with 2 30 hour/week traders, each of whom keeps half the strategy in their head and are available half the time.

[http://www.aeaweb.org/aea/2014conference/program/retrieve.ph...](http://www.aeaweb.org/aea/2014conference/program/retrieve.php?pdfid=1103)

Flexible hours will, of course, be more prevalent in jobs and industries where Output(hours) is a linear function.

(Gender pay gaps are not intrinsically boring, but the inherent "turn of your mind because politics" makes it far less interesting.)

<comment><USER4> I would assume "nonlinear" output means that their productivity increases the more hours they spend. Any job requires ramp-up time, some more than others, but it does not mean the output in non-linear. All your example illustrates is some jobs (like software development) can't be brute-forced by hiring more people irrespective of skill - two mediocre programmers are not a replacement for one good one.

<comment><USER5> It means that the person's output is not simply a multiple of the number of hours that they work, but that for each unit of time they work their output increases compared to the previous unit.

For example:

        Linear
        output = time * k

        Non-Linear
        output = time ^ k

In practice it means that for jobs that are linear, it doesn't matter how many hours any individual works as long as the total hours worked remains the same - assuming that they're all of the same skill level. Doctors, for example, are mostly shift workers so the output of one doctor working for 12hrs is pretty much the same as two doctors working six hours each.

For a job that has non-linear output, two people of the same skill who each work six hours, will be less productive than one person of the that skill working twelve hours. Easy enough to see:

        12 ^ 1.5 = 41.6
        2 * 6 ^ 1.5 = 29.4

In that case, splitting the job between two people results in an output that's 70% of the output of that job being done by one person.

Basically, it's saying that many workers are not fungible assets, no matter that they share the same level of skill.

<comment><USER6> Another thing to consider (for software engineers at least) is hours per day, vs days per week.

It can take a few hours to ramp up productivity and get in the zone. On the other hand, in a well organized team if a few people take a day or two off, not much would be lost.

</comment></comment></comment></comment></comment><comment><USER7> It's painful to see how inflexible some of my clients are with their employees. Those that do claim to offer flexible work are clearly holding back in other areas, such as fair pay (for women especially, but everybody in general) and benefits. The turnover rates at these places are just as bad as you'd imagine--they have an amazingly hard time retaining talent. What's left is a core group of cowering individuals who seem to become love-it-or-leave-it evangelists.

Having worked for a similar business before leaving to start on my own, it still hurts to think about all the people there who were medicating their work issues, and the speech disorder I started to develop from the unnecessarily punitive environment. A doctor friend told me he was really proud that I quit that job from a health POV. The speech disorder went away almost immediately after I gave notice.

This was a company of 35 employees that was making profits of around 40 million a year, IIRC.

<comment><USER8> What kind of speech disorder was it, if you don't mind my asking?

<comment><USER9> My guess would be a stutter; I have seen this in high-pressure work environments.

</comment></comment></comment><comment><USER10> My current company allowed me to set my own hours and location when I was contracting for them. When I went full time, there was a verbal understanding that I would be onsite _more_ and work _more_ regular hours, but that I would still have significant flexibility. In reality, if I come into the office at 9:01 the program manager throws a fit. And if there's a big winter storm and I could either (a) spend 3 hours commuting each way for 2-3 hours at the actual office or (b) doing 8-9 hours of actual work from home, he still insists I come into the office. So yep, the company says it's flexible, but not so much in reality.

<comment><USER11> The "program manager" my not understand quite how your deal was worked out and just be an old fashioned butts-in-the-seats manager who still believes that his job is simply to make people come in.

His superiors might be very upset if he ends up prompting you to leave. They may have no clue this is going on. Talk to the original people and tell them it's not working out.

<comment><USER10> Ahh, if only it were so simple.

The program manager wasn't initially aware of the arrangement. When I mentioned it to him, he basically threw a professional fit along the lines of "To get work done I need you here when everyone else is here." He'll even readily admit that I got plenty of work done while contracting and setting my own hours and location - enough that he and the company wanted me salaried - "but it's not the same now". The execs that I negotiated with don't have much backbone and won't stand up to him or our owner. They are well aware of the situation, and when I go through them and leave the PM out of scheduling, they're always okay with whatever I say I'm going to do (I don't even bother asking, I just tell them); after the fact, he'll huff and puff for a while, but he never actually says anything explicitly. Unfortunately, he and I work very closely together, so I don't often have the opportunity to go through the execs.

The night before a particularly harsh snowstorm, I even had a conversation with him about working from home the next day. We talked about what I could do from home, I literally showed him the printouts of the background material (and had digital copies on our office server and on my laptop), and he said he was okay with it. When I wasn't at the office shortly after 9:00am the next morning he started calling me. Even though I had already been working for close to an hour and sent him updated files showing what I had already completed, he wanted me to drive in.

To add to the frustration, we frequently have to travel for work. Of course, no one, including the PM has a problem with work done remotely in those situations.

<comment><USER11> I don't know your situation, but the good thing about spineless uppers is that they are often as unwilling to work _against_ you as they are _for_ you. This PM is not actually this irrational. He behaves this way because hes become accustom to getting away with it. I don't know how much you "need" the job, but I'd try just telling him how its going to be and then sticking with it. Unless he has direct firing authority (that he actually has the political capital to use), he'll likely complain to upper management and get the same disinterested shrug you received. "He seems like a good employee, I'm sure you can work it out".

Caveat emptor of course. I have a sample size of 2 in my personal life and its worked for me once (but wonderfully so). The other time, it got me out of a bad situation that I should have been working harder to leave anyway (with good references even).

<comment><USER10> I've debated doing just that, but in the end the environment and expectations have become completely toxic, so it's more important for me to find another job. Unfortunately, as I mentioned earlier, there are a lot of constraints, so I'm putting my energy into my own start-up.

</comment></comment></comment></comment></comment><comment><USER12> My flex time experience going from 5 8s to 4 10s:

No rush hour means daily time away from home went from 8 + 1 lunch + 2 times (1) commute = 11 hours to 10 + 1 lunch + 2 times (.33) commute = 11 hours 40 minutes. So I'm trading 40 minutes per working day away from home, for a 3 day weekend every week...

Also I'm sure you won't be surprised that only driving to work 4 times instead of 5, saves me nearly 20% of my commute expense, which does add up over time. That's 40 miles a week, which is about 1.3 gallons of gas or the IRS thinks its worth $22.40 per week or well over a thousand bucks a year posttax lets call it "two grand per year" pretax.

I work at home on occasion due to winter weather or illness or whatever reason, and that's pretty nice. I would work at home much more other than local interdepartmental jealousy type issues that prevent it. Organizationally I already work with people all over the country and once you're 500 miles from your "closest" coworker (by some metric of closeness, I guess) then no one cares what office you're in or if you're at home. Obviously this doesn't work at one site open plan startups, but its OK for a megacorp size employer.

</comment><comment><USER13> I'm going to begin working remotely soon (I joined early and have worked with the CEO and other core folks before, so it wasn't that hard). Do HNers have any advice (financial, work-life balance etc)? I'm going to be earning in the US while I live in Antwerp, Belgium.

<comment><USER2> I'd make a conscious effort to overcommunicate. Our weird little monkey brains don't handle the case "There exists another monkey in another time zone. He's part of the tribe! I would sure like to pick his nits!" all that well. You're going to miss out on a lot of the spontaneous happenings around the office which both create/solidify social bonds and _also_ lubricate the important, consequential decisions for your work.

It helps to have companies which are used to working with remote people, since they evolve e.g. email / Hipchat work cultures rather than "I think I'll just walk down to Bob's desk and ask him about that" cultures. If you're not in one of those, push for the cultural changes you'll need, while recognizing that that will be tough.

I also had the time zone issue working against me, like you will. I'd sign into Hipchat (or whatever it was) when I started my "work day", say "Here's the plan for today", work my day, and then verbally sign off in the evening. This meant that every morning when folks got to work they'd see "Oh yeah, that's right, Patrick is indeed working with us, even though I'm not seeing the artifacts of that work in front of me."

A company I worked at had an institution of telling everyone in the company every Friday "Here was the plan for the week . Here's what I actually did. Here's what I'm doing next week." That's a great institution for all knowledge work, but it's particularly important if you're essentially a black box. I tended to overcommunicate in those -- e.g. not "I prototyped the tour." but rather "The focus of this week was implementing the tour. I spent most of Monday and Tuesday looking at Javascript frameworks. See this page on the Wiki for my thoughts. I eventually decided on $CLIENT_SENSITIVE_INFO_ELIDED_HERE and started whiteboarding the actual tour on Wednesday. Thursday I had a meeting with Bob about actually deploying it. Current status: prototype is working in the testing environment, working on tightening up edge cases, anticipate shipping to production next Friday as planned."

Minor note about working from home: I seem to be much more productive when I successfully sustain something approaching a normal schedule. I generally do my best work when I can chunk the day up. Pre-breakfast is family time, dish hitting sink through lunch is email time, context change to a cafe, cafe time is for writing, context change back to home, home time before dinner is programming time, "Honey dinner's ready" means the day is over unless there is something on my calendar for the midnight shift.

<comment><USER12> "I tended to overcommunicate in those"

I found a clipboard, pen, and paper to be the simplest, easiest to use, and highest productivity system for this. Split the paper up by day and make sure to fill the fraction of a page each day, that's about right. Work on it through the day and its no big deal.

There is some politics involved, you don't want to explain later, perhaps at review time, why "contemplated use of XYZ technology" was not implemented. Never write down anything except what you actually completed. Your examples are good. If you don't want to use AngularJS never refer to it by name unless you can't avoid it.

<comment><USER14> "Never write down anything except what you actually completed."

I disagree.

Documenting and sharing failures is important too. It's useful to look back and analyze sources of mistakes, misjudgments and inefficiencies.

It's also important to know for the manager to know that implementing {successfulTask} was actually fast, so it would be low cost to implement it next time.

<comment><USER12> May be a language impedance mismatch rather than actual disagreement.

Everyone on both sides of review time knows that "considered the use of AngularJS" only minimally requires 10 seconds or so. So writing that down doesn't mean much. However, a completion like "implemented a helloworld class AngularJS demonstration, and determined for X,Y,Z reasons it would be inappropriate for project Q" would be totally valid.

There are also corporate culture issues, nobody here gets a bonus for stuff that doesn't work, so it might be useful to separately document that data, but...

Another corporate culture issue relates to coddling, some employers are like the mother duck with the ducklings following her and others are like the building trades. Some places promote useful career advice and training so discussing failures might lead to training, experiments, etc. On the other hand some places just don't care, much as I really don't care if my plumber doesn't like a certain brand of pipe wrench.

<comment><USER14> When stated that way -- I agree:

1) State your "unsuccessful" tasks as completed accomplishments ("learned XYZ").

2) Do not include "learned that we should not use XYZ" into your "give me my bonus" pitch.

</comment></comment></comment></comment></comment></comment><comment><USER15> I think successful companies will start to differentiate themselves to workers via flexibility first working arrangements. Productivity measured by visibility will fade into the background as we use systems that retain more of our behavior data. We will in the next five years have a holistic view of how organizations function via transparent ambient metrics, like measuring stress level from vocal markers in a voice chat. That is one thing about pervasive data collection and automatic processing, it won't be subjective and it can't be gamed.

I know I have been on unproductive teams and had wonderful, enriching experiences on others. It would be nice if the digital ai manager could automatically determine who works best together and build those schedules.

Team management will I think, fade into the software.

Knowledge organizations that do not embrace a future of lower hours and more flexibility will be relegated to sections of the industry that turn out clones of clones (Zynga, PSDtoWeb, turn key CRUD web apps, etc).

Ernest and Young seems to get it.

</comment><comment><USER16> I have worked at two companies where people working remote is not an exception. Both companies started off with a strong tradition of distributed teams where it makes sense to build a culture that is centered around the fact that some co-workers will be in different time zones and also in a different physical location. Everywhere else, remote/WFH sort of works. But mostly doesn't.</comment>


Real-Time Django: Get Started with Django Channels - <AUTHOR> https://blog.heroku.com/archives/2016/3/17/in_deep_with_django_channels_the_future_of_real_time_apps_in_django <comment><USER2> The best thing about Django is its documentation. It is one of the best (if not _the_ best) documented projects I have ever used. Example: Let's say you are reading about Django authentication related stuff and somebody links for further clarification to [https://docs.djangoproject.com/en/1.7/topics/auth/default/](https://docs.djangoproject.com/en/1.7/topics/auth/default/).

Bam! You immediately know it's outdated (emphasized by the headline) and switch to [https://docs.djangoproject.com/en/1.9/topics/auth/default/](https://docs.djangoproject.com/en/1.9/topics/auth/default/). This might seem minor, but I highly appreciate such attention to detail. And I really like the official page's layout, look and feel which concentrates on information, rather than stupid, flashy animations. Ha, looks like I'm getting old.

<comment><USER3> Absolutely in agreement. I am 2 years into my app dev career, all of it spent pushing .NET around in the enterprise.

But I need to expand my skill set, I need to continue working remote, and I'm interested in OSS in general. Honestly, Python and Django seem like heaven compared to the other language/framework ecosystems I investigated. Not gonna name any names there...

But the documentation for Python and Django is A++. It's just really, really good. I can't praise it enough. The whole setup is elegant, intelligent and accessible. I really appreciate that.

<comment><USER4> I'm in a bit of the same boat lately, deciding between updating my skills to the treadmill of JS frameworks, or Rails 5, or Django. Have you found any good leads on Django remote work?

<comment><USER3> I did a cursory survey, and saw that remote Django jobs existed, but I didn't do any due diligence. I figured I'd learn the stack first. ;)

My rough impression is that Rails remote jobs are relatively thick on the ground, but that any OSS dev stack will be better represented in remote job postings than any enterprise stack. So since I prefer Python to Ruby, and Django to Rails, I figured I'd take a leap of faith.

JavaScript is simply not going to be my main dish, not for the time being. Things are just too crazy there. I don't have time to play whack-a-mole with my career skill set.

</comment></comment></comment></comment><comment><USER5> This is great news. Django is a great web dev tool and having websockets support is icing on the cake. I guess this adds more weight to the thought I've been having: That Web applications are moving away from MVC and more into messaging layers. Front end JS frameworks have pushed things to be this way. Which brings the Web into a pseudo native environment of sorts. Anyhow, will be happily tinkering with this from today onwards.

<comment><USER6> For building clustered backend services, messaging is great. And Django Channels looks awesome.

However, in the context of the web (the client/server boundary), I think we need to be careful about how messaging is used. The web is made up of resources with URLs. HTTP is typically used for data transfer, and for good reason.

I sometimes see webapps communicating entirely over WebSockets. I don't mean just the realtime push part, I mean everything, request/response traffic and all. I understand that HTTP is suboptimal in certain contexts, but let's not throw the baby out with the bathwater.

<comment><USER7> > However, in the context of the web (the client/server boundary), I think we > need to be careful about how messaging is used. The web is made up of > resources with URLs. HTTP is typically used for data transfer, and for good > reason.

"Careful" == do not break urls, use pushState and make sure equivalent document is returned for GET.

<comment><USER6> Sounds good to me. :)

</comment></comment></comment></comment><comment><USER8> Nice to see Django moving forward but is still backwards friendly. Love that.

"Channels is to become a built-in feature for Django 1.10, but in order to aid adoption and to encourage community usage and support, it will also be backported to Django 1.8 and 1.9 via a third-party app."

ASGI seems to be a very important piece of this.

"Despite the name of the proposal, ASGI does not specify or design to any specific in-process async solution, such as asyncio, twisted, or gevent. Instead, the receive_many function can be switched between nonblocking or synchronous. This approach allows applications to choose what's best for their current runtime environment; further improvements may provide extensions where cooperative versions of receive_many are provided."

</comment><comment><USER9> I am consistently impressed with the thoughtful API abstractions django develops. They were a little late to the game on this — you had to use other libraries to do WebSockets for a while. But they did this right.

<comment><USER10> maybe it is possible to be more specific and say "I am consistently impressed with the thoughtful API abstractions Andrew Godwin develops". There are other great Django developers of course, but he is just insanely good.

<comment><USER11> I think part of what he's insanely good at is carefully soliciting feedback from other people, particularly those with a lot of experience with similar but distinct problems. The final spec goes back close to a year ([https://www.aeracode.org/2015/6/17/beyond-request- response/](https://www.aeracode.org/2015/6/17/beyond-request-response/) [https://groups.google.com/d/topic/django- developers/mt1mTNvc...](https://groups.google.com/d/topic/django- developers/mt1mTNvc0Ew/discussion)) and the polish really shows.

I think of that as a "senior developer" skill which is easy to underestimate since it doesn't directly translate into tons of commits but is so critical to the long-term success of a project.

<comment><USER12> 'the polish really shows'

Can you explain what you mean by this?

<comment><USER13> polish as in shine, not Polish as in Poland

</comment></comment></comment></comment></comment><comment><USER14> To get more insight into the design of channels, see (my coworker!) Andrew Godwin's article "Laying the Channels Groundwork" at [http://www.aeracode.org/2016/1/3/laying-channels- groundwork/](http://www.aeracode.org/2016/1/3/laying-channels-groundwork/)

</comment><comment><USER15> Here is a good interview with WSGI/Django devs talking about the rationale and starting work on the Django Channels project.

[http://pythonpodcast.com/wsgi-2.html](http://pythonpodcast.com/wsgi-2.html)

<comment><USER16> The big question is if other frameworks will adopt this ASGI/Channels model also, or will it remain a Django-specific thing.

</comment></comment><comment><USER17> It's great to see Django getting first class support for real-time. I remember building a hacked-together real-time chat 10 years ago using Python using ajax, but I haven't done much since. I'll have to check it out.

</comment><comment><USER18> It's great that Dijago Channels will allow a developer to use same framework and ORM to build the WebSocket based applications. However I think from the deployment and scaling plan, it's better to keep HTTP / REST servers separate from the Web Socket servers. Both models scale differently. So keeping them on different infrastructure would allow to scale those 2 systems independent of each other.

<comment><USER19> As far as I can tell, they are. In production you'll run your WSGI servers for the HTTP/REST side of things, your "ASGI" servers (with daphne) for the websockets side of things, and your workers, all separately. That should mean that each can be scaled pretty much independently.

</comment></comment><comment><USER20> This is great news. For those with flask apps, check out flask-socket[0] for websocket support.

[0]: [https://github.com/kennethreitz/flask- sockets](https://github.com/kennethreitz/flask-sockets)

</comment><comment><USER21> I did some Django years ago and if I remember correctly Django wasn't a "server" ie long running process but more like CGI. So how does it work exactly ? is there some python code running as a demon polling socket events and interacting with the actual Django app ?

<comment><USER22> The underlying model for all Python Web apps -- WSGI -- is CGI-like. But the actual deployment of WSGI almost always involves a long-running process or processes, which keep the application code in memory and then expose the appropriate WSGI API to whatever Web server you're using. Switching that from "expose WSGI API" to "expose ASGI API" gets you Channels :)

</comment></comment><comment><USER23> This sounds amazing! Very excited to give it a try. I am working on a side project that I wanted to add real-time capabilities to and I'm not very happy about my Go + Django hybrid solution.

</comment><comment><USER24> I'm someone who moved to django from meteor (for work) and at first I was shocked at how similar they were, but after that I was shocked at how out- dated django seemed.

Websockets was just one of those issues so it's good to see it addressed. However, with meteor's DDP there's still no comparison. Looking ahead to Reactive GraphQL that meteor is working on, django seems to be permanently one step behind for the foreseeable future.

These are just my opinions, but overall definitely great news for django developers.

<comment><USER25> So does meteor support SQL backends yet (not talking unsupported plugins or whatever MDG is promising to do Real Soon Now).

If it's still tightly coupled to MongoDB then there is zero chance I can see it being used for anything more serious than an MVP or hackathon project by a company with non-trivial data requirements.

</comment></comment><comment><USER26> Does this replace Celery+RabbitMQ/Queue service?

<comment><USER27> From the article:

"Remember: Channels is a general-purpose utility for running background tasks. Thus, many features that used to require Celery or Python-RQ could be done using Channels instead. Channels can't replace dedicated task queues entirely: it has some important limitations, including at-most-once delivery, that don't make it suitable for all use cases. Still, Channels can make common background tasks much simpler. For example, you could easily use Channels to perform image thumbnailing, send out emails, tweets, or SMSes, run expensive data calculations, and more."

<comment><USER28> So what can't it do that celery does?

<comment><USER29> Celery does a ton of things that channels doesn't currently do. Celery has a lot of workflow concepts built in (Chains, Chords, etc). Celery also has prioritization, and a fairly robust ecosystem that channels may take a while to deliver.

</comment></comment></comment></comment><comment><USER30> I surmise that hendrix, based on Twisted, will be the first true ASGI / Django Channels backend.

<comment><USER31> The problem with Twisted is that everything needs to be rewritten for it, like a special snowflake. Hendrix is an example of that. The advantage of Django is you can use any python library without issues.

<comment><USER30> Really? I have exactly the opposite impression: that Twisted is happy to consume any streams of data you provide, while Django is only happy if you comply with the dictates of the LazySettings object.

In any case, I think you'll find hendrix unbelievably easy to use - here's a talk that gives some detail: [https://www.youtube.com/watch?v=92VeMkjM1TQ](https://www.youtube.com/watch?v=92VeMkjM1TQ)

<comment><USER31> Yes, really. What if the library you are using uses blocking IO? What if it reads a file using a plain 'with open("file") as fh:'? Now you've blocked every connection in your twisted server. No warnings or errors, just strange intermittent pauses on every connection leaving you scratching your head.

This isn't weird esoteric packages either. Ever used requests? SQLAlchemy? Django's ORM? You can't use them with twisted.

Twisted proponents don't openly say this up front as it's not a great story, and their response is usually "just" port the library.

Or maybe, put it like this. If Django and Twisted work well together, why does Hendrix exist at all? Just use Django. Or why does klein exist? Just use werkzeug. You'll see lots of this rewriting snowflakes.

Just a quick search gives me txamqp, txmongo, txmandrill, txflask, txcelery, txdocker, txldap, txgithub, txrequests, txstripe, txzookeeper and on and on and on. Have a look: [https://pypi.python.org/pypi?%3Aaction=search&term=twisted&s...](https://pypi.python.org/pypi?%3Aaction=search&term=twisted&submit=search)

And then there's multiple ones of each to choose from. Look at amqp or reddis. There's something like four implementations of each. Even something like requests, theres treq, rxrequests, requests-twisted. Which one should I use?

And then there's Python 3. Only half of twisted works on Python 3. Which half? I guess one finds out when they give it a go.

<comment><USER30> > This isn't weird esoteric packages either. Ever used requests? SQLAlchemy? > Django's ORM? You can't use them with twisted.

I'm left completely scratching my head here. I use all three of these packages routinely with Twisted.

Are you saying that you are trying to share the reactor thread while blocking with, for example, requests.get()? Obviously you can't do that - why would you even try? Just run requests.get() on another thread.

On the other hand, if you, for example, use deferToThreadPool with a bunch of Django ORM calls, you can happily go on serving requests from another ThreadPool. This works like gravy.

These various adapters that you've described: in every case, their existence is not a testament to an inability to run their respective libraries' blocking I/O with Twisted; on the contrary, they provide support for actually using them with a proper Twisted protocol.

The fact that so many of them exist doesn't mean that Twisted is doing anything wrong, it means that people really like Twisted and want these various packages to be able to talk directly to a Protocol or Producer without having to maintain that code in their project.

If you want to run Django in Twisted without hendrix, go ahead: use the WSGIServer built in Twisted. However, you'll probably find that you are building lots of tooling around the _awesome things you want to do with Twisted_ (ThreadPool tuning, websockets, concurrent functions running in views, and much more). So, instead of having to write all that yourself, hendrix ships with it.

For my practice, the Twisted ecosystem is the finest part of Python.

</comment></comment></comment></comment></comment><comment><USER32> Channels sound pretty similar to Observables/Streams/Signals from the reactive world. Weird that they didn't mention it.

<comment><USER33> From what I understand, Channels' provenance is from Go (scroll down to the What is a Channel? section): [http://channels.readthedocs.org/en/latest/concepts.html](http://channels.readthedocs.org/en/latest/concepts.html)

<comment><USER31> "Go channels are reasonably similar to Django ones"

Really? Only at a surface glance. Having used channels in both Go and in Clojure, I would say they are nothing like Django channels. The only thing they share is they are like a fifo pipe.

In Go and Clojure channels are an in-process async construct. They have nothing to do with the network at all. (There may be libraries that expose their network connections in the language as channels, but the channel itself is completely in process).

In these languages there is no 'routing' that needs to be set up. There is no 'linearisation' problem. They are first class and can be passed in and out of functions.

Also most importantly, pulling from or pushing to a channel _appear_ to the programmer as a blocking operation, while under the hood the language inverts control to create a non-blocking situation. Send and receive on the Django channels look to be non-blocking _and_ appear to the programmer to be non- blocking (correct me if I'm wrong, please).

Saying all this I'm not opposed to calling Django channels, channels. Channels is a generic term, and what is being done here in Django can be very much described as a channel. Just remember that they are actually very different to the "channels" as used in Go.

</comment></comment></comment><comment><USER34> Does Nginx support ASGI? What's the recommended production ASGI web server?

<comment><USER35> The recommended ASGI server seems to be Daphne[0]. Nginx doesn't need to speak ASGI natively (as it doesn't speak WSGI natively), more likely Daphne would replace the WSGI server (gunicorn, etc) running behind nginx.

[0] [https://github.com/andrewgodwin/daphne/](https://github.com/andrewgodwin/daphne/)

</comment></comment><comment><USER36> I love the chat implementation. What would the other possible usage scenarios be?

<comment><USER23> A real time game using websockets e.g.

</comment></comment><comment><USER37> Can we come up with a new word for this? Real-Time has a definition w/r/t computing, and it's certainly not "Python code, running in a C runtime, on top of a non-realtime OS."

<comment><USER38> I'd refer to it as just "asynchronous". I'm not sure why they felt the need to redefine.

<comment><USER16> AJAX was already async (that's where the first A comes from..), so it makes sense to have new name for new generation

</comment></comment></comment><comment><USER39> Way to go DJANGO

</comment><comment><USER40> I assume this also means support for Rails 5's ActionCable.</comment>


How important is it to know C - <AUTHOR>

<comment><USER2> You can be a programmer without knowing C, but there will always be a void inside you.

</comment><comment><USER3> What do you want to do with your life?</comment>


Ask HN: Yaibe.com  - <AUTHOR>

Hi HN. I'm a culinary school student interested in creating a marketplace of sorts for food outside of traditional eating establishments.
This includes people selling food out of their homes, serving dishes in warehouses after hours, and the like.
I understand this is legally a gray area but, from what I understand, so was Airbnb's model.
My idea of the MVP is a marketplace where amateur chefs and adventurous foodies find each other and transact.
I figured the first step was to create a launch page and garner interest in the top foodie cities. So I'm focusing on that right now.
How would you get this off the ground? <comment><USER2> I'd say: very quickly build an visually attractive, convincing mockup filled with example data (photos etc.). Someone recently posted here such one (it was something what looked like Pinterest but for reviews/recommendations). Then check if ppl are even trying to interact with it, explore etc.</comment>