Researchers Map The Sexual Network Of An Entire High School - <AUTHOR> http://researchnews.osu.edu/archive/chains.htm <comment><USER2> This article is from several years ago. When I read it then the thing that stood out to me is that the graph doesn't display the timing of the sexual relationships. So to say that someone who had sex with just one person is exposed to everyone in the graph is silly, because that relationship might have happened when both were virgins, and hence no such exposure happened.

I sent an email to James Moody pointing out this obvious flaw in the conclusions, and he responded saying that he agreed. His original work was not intended to show the chronology, and the article draws conclusions that he didn't claim.

<comment><USER3> Does it matter? Wherever there is a link, (IE persons A and B both slept with person C) there was an exposure. Unless they were simultaneous, in which case I went to the wrong high school.

<comment><USER4> In your example: if person A slept with person C before B did then B has an exposure to A, but A has no exposure to B.

<comment><USER3> Right, so there's one exposure regardless. You don't know who it is I suppose, but you know it's there.

<comment><USER5> AB then CD then BC: the graph looks like A-B-C-D but there's no chain A->D or D->A that actually permits infection.

</comment></comment></comment></comment></comment><comment><USER6> Obligatory:

<http://sexchart.org/sexchart.9.15>

(This charts the relationships of the informal collection of people from #hack, #phreak, and god knows what other EFNet "underground" channels).

A smart guy we hired wrote a traceroute for this (including an FSM parser for the ASCII art); in an attempt to one-up that, I wrote one that did all-points shortest path and could answer questions like "how many hops am I from X if you take Y out of the picture". We used it to test our routing code at Sonicity; it was handy.

<comment><USER7> Ahh, too bad I can't upvote you a 100 points. Words fail me when confronted with this chart. I'm taking up the challenge to parse the ASCII art to convert to Graphviz as my next project.

<comment><USER6> Just scan it looking for the first in a run of alnum characters, build a table of nodes, and then scan the perimeter of each node looking for a character that starts an edge (`'|- etc). Then write a little state machine for following each edge, and build an adjacency list.

I really ought to use this thing for C class.

</comment></comment></comment><comment><USER8> Some pretty interesting patterns there. One of the more interesting was that people who have had lots (5 or more) partners had tended towards 'unpopular' partners (zero or 1 other partners).

Also I wonder if 2 homosexual relationships (that I can see) is in any way accurate or due to embarrassment to admit such a thing even on an anonymous survey.

<comment><USER9> Though I do not have any statistics and I am not familiar with American high school culture, I believe that not many homosexuals are romantically/sexually active in high school. People in this age are still discovering these things, and I don't think that most of the homosexuals fully realize what their orientation is like. Even if they do, actively seeking partner is looking for trouble in high school reality -- children and teenagers are so cruel towards people different from them. I did not know of any of my school acquaintances to be homosexual, and the possibility of all of them being straight is kind of odd, considering the percentage of homosexuals in society.

<comment><USER10> "Though I do not have any statistics and I am not familiar with American high school culture, I believe that not many homosexuals are romantically/sexually active in high school. People in this age are still discovering these things, and I don't think that most of the homosexuals fully realize what their orientation is like."

Two things:

1\. Yes they are sexually active. They just have to be more discrete.

2\. You don't "discover" that you're gay any more than you "discover" that you're straight, and if it does happen it happens before high school. I can think of things going back to third grade that pointed towards me being gay. Now, whether people choose to accept their sexual orientation is a different matter.

<comment><USER9> > You don't "discover" that you're gay any more than you "discover" that > you're straight (...) In perfect society it would be like that. However, the > culture I live in revolts around straight relationships, and there's just no > place for homosexuality, except of maybe designating some people as "them", > in contrast to "us". It sucks, but it is the reality. Children growing in > this kind of society come to think that being straight is "default". That's > why I do not think that situation is symmetrical -- it takes more effort to > acknowledge that you are gay than that you are straight in this kind of > culture.

</comment></comment></comment></comment><comment><USER11> What a pity they didn't add the question 'do you practice safe sex' and colored the dots accordingly.

It would be of far more educational value to the group that was studied _and_ all their peers.

Side note: In the US there are about 750,000 teen pregnancies annually.

<comment><USER12> That was not the point of the study. The point of the study was to examine the relational map within the high school. It was not to examine sexual hygiene of students in the school.

> " _It would be of far more educational value to the group that was studied > and all their peers._ "

How is that so?

<comment><USER11> > That was not the point of the study.

I realize that.

> The point of the study was to examine the relational map within the high > school. It was not to examine sexual hygiene of students in the school.

No disagreement there.

>> "It would be of far more educational value to the group that was studied and all their peers." > How is that so?

Because it would show them in a fairly easy to understand graph how STDs spread through such a network.

Having the 'outside world' connected wouldn't hurt either.

</comment></comment></comment><comment><USER9> Can someone explain to me why I do not see isolated vertices in this graph? When I was in (Central Europe) high school, I recall that apart from me, there was considerable amount of people not involved in any kind of relationships, and even not counting them, many people used to have partners from other schools. Is it really like this in American high schools, or did the researchers just choose this way of presenting the results?

<comment><USER13> The article states that just over half were sexually active. So they must not be including celibate students.

<comment><USER9> I meant the graph linked in the adjacent comment: <http://researchnews.osu.edu/archive/chainspix.htm> The description states that it presents romantic connections, not the sexual ones. However, rereading the article makes me think that they did not take single students into account when creating this graph.

</comment></comment></comment><comment><USER14> As I studied in a male only institution, we used to rush to the the girls high school, it was a five minutes walk. Weekends were devoted to establishing new connections (trying to), we were struggling to find partners, specially when approaching Christmas. Good old time. I imagine studying in a mixed sex high school should be better to get more relations, but is not so clear. We strive to do it our way.

</comment><comment><USER15> The actual article mentioned in the link: <http://www.soc.washington.edu/users/stovel/Chains.pdf>

See also: "The web of human sexual contacts" [http://www.nature.com/nature/journal/v411/n6840/full/411907a...](http://www.nature.com/nature/journal/v411/n6840/full/411907a0.html)

(Non pay-wall version: <http://arxiv.org/abs/cond-mat/0106507> )

</comment><comment><USER16> I don't see a better way to do it, but what would make them think that results based on asking teenagers who they are having sex with would be reliable/actionable? This isn't even addressed in the article?

<comment><USER17> That's probably because this is a press release/internal news item, not the research paper itself.

That said, I have no idea if they discuss that in the paper either.

</comment></comment><comment><USER18> I made a sex graph for my social group several years ago (names blocked out). <http://bit.ly/bHPjN4>

It was enlightening for everyone.

<comment><USER19> Damn, that square with seven edges is no "square" at all. He/she slept with half your friends of the opposite sex!

</comment></comment><comment><USER20> "breaking one link in the chain – any link - will stop that part of the network from spreading any further"

Interesting. I wonder whether the "save sex till marriage" movement is having much of an impact in slowing the spread of STDs.

My impression is that they don't change many teenagers' behavior in the long run. But for this specific effect they wouldn't have to change more than a few to have a big impact.

<comment><USER21> I'd be careful with inferences like that. It's not a directed graph, so talking about flow in time is very speculative.

<comment><USER11> And it does not document promiscuity either (in time), for all we know these are nicely serialized or it could be one big orgy.

It also keeps the relationships within the school, which is not a realistic picture whatsoever, and once you add in the outside world (especially to that larger chunk of the graphic) all bets are off.

</comment></comment></comment><comment><USER22> Am I the only one who looked at the diagram and imagined it as a great party planning tool?

Couldn't something like this be quickly built with a school-wide hot-or-not website? People publish far worse stuff on Facebook.

Hmm... Orkut has a network like this, in the form of crush-lists. In fact, I know two couples who were "aided" by this feature.

</comment><comment><USER23> are there high rates of STD infection for teens? or is it more prevalent in adults with the mentioned hub networks?

</comment><comment><USER24> If they're describing the Moody paper I'm thinking of, this is _Chains of Affection_.

Here's a link (PDF!): [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.131...](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.131.3333&rep=rep1&type=pdf)

</comment><comment><USER25> (2004)

<comment><USER26> That, and the picture says everything a lot more succinctly than words: <http://researchnews.osu.edu/archive/chainspix.htm>

<comment><USER19> Where is the geek independent set? G = (V, empty)

</comment></comment></comment><comment><USER27> How do they know that the data they collected in their interviews is reliable?

</comment><comment> a-priori Teenagers have sex. Who knew.

The interesting part to me is that if you look at individual students in the big group, most have only 1-3 relationships. They just so happen to link up into a massive web.</comment>


I Don't Want a Freaking Computer - <AUTHOR> http://www.baekdal.com/articles/technology/i-dont-want-a-freaking-computer/ <comment><USER2> Even my girlfriend (iPhone 3G and 3GS user of over a year) is jealous of my Nexus One.

But he's right, in a different way. When I use a computer, I make it do things. I give it commands, and it executes them, faster than before. I can write a script to transcode ripped DVDs overnight, according to my specifications, and automatically calculating crop values, pixel aspect ratios, etc. to produce the appropriate output for putting movies on my handheld devices. I can write programs that manipulate masses of data in heterogeneous formats and emit summaries, graphs, animations, visualizations of my design, not limited to the preconceptions of some third party software designer thousands of miles away.

I use my computer as a computational device. To compute things. iPad, iPhone, iPod Touch, these aren't computational devices. They are a different kind of thing; but my need and desire for ad-hoc computation are not limited to my current location or equipment, so I want my phone to be similarly flexible. But the things an iPhone etc. can do, I can also do.

</comment><comment><USER3>
      > I even tell my dealer to change my tires twice a year

      > I even drilled a hole my wall, and bought a 60 feet cable, at the cost of $300

What?! Is this guy completely oblivious to the way he spends his money?

      > Yep, I am one of the drooling mac fanatics.

Oh. Well, there you have it.

<comment><USER4> That's actually more insightful than I first realized. You have to be oblivious to the vendor lock-in that results from Apple's control and the resulting costs. The 'no usb, no SD slot' complaint about the iPad? Thats because to get the 32 gigbyte iPad vs. the 16 gigabyte iPad is another $100.

But I already have a 16 gigabyte USB stick, or a 16 gigabyte SD card I bought from Frys, on sale, for $40. Apple's going to charge me $100 for something I already have, _and_ they're gonna charge me two times the price? If there was an SD slot, I could buy the 16 gigabyte iPad and use the SD card I already have, instead of buying the $600, 32-gigabyte iPad vs. the $500, 16-gigabyte version. It's a nickel-and-dime to the tune of 99-cents an app, and I don't like it. Nor can I really argue against the current success of the iPhone. If it costs me extra to get something that actually works, I'll actually get it, because it'll actually work.

(edit: clarified '...charge me $100...')

<comment><USER5> _Apple's going to charge me $100 for something I already have, and they're gonna charge me two times the price?_

Could you explain what you mean by this? I don't understand how Apple fits in to your previous purchases.

<comment><USER6> He's saying that Apple has a large markup on the flash storage options for the iPad, and if it supported USB or SD like most computers then they wouldn't be able to have such a price differential between models. (Or maybe they would; Apple has previously charged 2-3x market prices for RAM upgrades in build-to- order Macs, when users _could_ save hundreds of dollars by buying their RAM elsewhere.)

<comment><USER5> That doesn't explain the relation to his previous purchases. I don't see the connection at all.

<comment><USER4> I have a 16-gigabyte SD card.

In order to have a 32-gigabyte iPad, I have to purchase the 32-gigabyte version for $600.

If the iPad had an SD card slot, I could hypothetically purchase a 16-gigabyte iPad for $500 and use my previously purchased 16-gigabyte SD card.

<comment><USER5> You've restated exactly the part that I do understand. What I don't understand is where you see a _connection_ between your previous purchases and what Apple charges for what they produce. You specifically said that Apple would charge you for what you already have, but it isn't clear where that occurs.

<comment><USER4> Ah, I misunderstood your question then.

The connection isn't to Apple's prices: they made it, they get to decide pricing (and features).

The connection is between my previous purchase, and my next (considered) purchase and the connection there is _me_. Buying doesn't happen in a vacuum, though 'cost to me' is perhaps a better way of looking at it.

The 'charge' occurs when Apple omits a card slot though it is their right to do so. This locks me into their pricing structure, which means I have to pay their prices. I _already have_ 16-gigabytes that I could use in a device with an SD slot, but the lock-in requires that I pay their prices, and if I want the 32-gigabyte iPad, then I have to pay what Apple charges and I cannot use my previous purchase to offset that cost.

</comment></comment></comment></comment></comment></comment></comment></comment><comment> loup-vaillant In my opinion, this article fails to draw a crucial line: the limit between what a user has to know and what he can ignore.

Speaking of cars, users have extensive knowledge of it. To the point that no one can legally drive a car without a driving licence. This represents _dozens_ of hours of specialized learning and training.

And I was talking about a single purpose device. Computers have many purposes. No amount of user friendliness is going to hide this essential complexity. No matter what we do, users will have to know basic things like the difference between a computer and a program, between a browser and a the Internet, or between the address bar and the search box. If they don't, they could lose their privacy or their money. Just like driving left without looking can be lethal.

Many computer users lack this kind of knowledge. The only way we can give them a "great experience" is by teaching first. Until we do, they will stay dependent, helpless, and happy. (At least as far as computers are concerned, which is further and further, these days.)

<comment><USER5> _The only way we can give them a "great experience" is by teaching first._

Who do you mean by "we" and what exactly do you think should be taught?

<comment> loup-vaillant "We" are developers, teachers, and even just any people who know some very basic stuff well. And we should teach:

First the very basics. What is a computer? A program? An OS? A network? The internet? A web browser? A web site? A URL? A search engine? A file? A text editor? Email? Web based mail?

Then, a bit about privacy and security. What is a virus? An anti-virus? A firewall? Spam? Fishing? Spam filters? Cryptography? TLS? How to spy on your husband? Can you trust strangers and companies on line (compared to IRL)? What is a weak password?

And finally, a crash programming course in a super-easy programming language so they can write a hello world, do some calculations, and a basic interactive program (like a dichotomy game). It shouldn't take more than a few hours (maybe even just one). But it definitely should teach that computer errors are often programmer errors. That it is possible to do personalized automation of tedious tasks.

Ideally, all these things should be taught with the help of GNU/linux machines. Not only to push the philosophy, but also to put everyone in an unfamiliar environment, then get them familiar with it. Just to teach them that they can actually _learn_.

</comment></comment></comment><comment><USER7> I don't want a freaking computer either. But I do want something that will let me listen to a streaming music app while writing emails.

</comment><comment><USER8> I would like to see him write that post on an iPad. On second thought, I have better things to do with six hours.

<comment><USER9> I'd enjoy that joke while it lasts. It probably won't seem as funny once the iPad actually comes out, because the thing supports keyboards, even wireless ones. People who want to write long-form essays will sit a keyboard down in front of their iPads and type.

This won't be a common use case, of course. Because writing anything longer than a sentence or two is not a common use case. Unless you're me.

</comment></comment><comment><USER10> The author of this article is interesting because he is so obvious: "It's about giving people a great experience."

In other words: it's all about selling stuff to consumers. Which is a great thing to say if - like Baekdal - you are marketing yourself as a guru to people to want to sell stuff.

Many "usability" discussions have the implicit (sometimes explicit goal) of making it easy for users to do things without having to learn anything first. This may be fine for generic routine tasks that everyone has to do from time to time. We are all thrilled about our shiny new phones. But consider this:

1\. Not long ago, most things were hard, confusing or impossible to do on any phone 2\. Even if 80% of all things you can do on an iPhone are dead simple - are these things that really matter to you?

Things worth well are usually not generic routine tasks. When you love what you are doing and try to make it as good as you can, using the right tools in the right way is a major part of the experience. But that kind of experience is impossible without making an effort to learn new things.

My personal belief is that those of us who want to create our own experiences benefit from getting our hands dirty with technology now and then.

<comment><USER5> _When you love what you are doing and try to make it as good as you can, using the right tools in the right way is a major part of the experience._

That's the point: "It's about giving people a great experience".

You made a mistake right off the bat by setting up the argument that "it's all about selling stuff to consumers" instead of the one actually made in the article. You're disagreeing right past agreement.

</comment></comment><comment><USER11> This guy's like the author's friend in _Zen and the Art of Motorcycle Maintenance_.

</comment><comment><USER12> I do. I like programming and playing around with stuff and have since I put my hands on a Commodore PET. Granted, I like to do what I want to do, rather than fixing broken stuff, but there's so much interesting stuff out there, that having source for it just makes your life that much more pleasant.

</comment><comment><USER13> I don't want a freaking iPhone that won't fit in my pocket.

</comment><comment><USER14> "I really don't want a computer. I hate computers. But, what I do like is the power and convenience that a computer gives me."

Same. I want carefreeness of the 60s, with the convenience of the 10s.</comment>


Coroutines are now in Clang trunk, libc++ - <AUTHOR> https://twitter.com/eric01/status/867473461836263424 <comment><USER2> Modern C++ can be very pythonic. Still not as easy as writing Java in IntelliJ but CLion is becoming quite good (if you succumb to CMake). People write shit code in every language; C++ has my favorite abstraction to performance ratio.

[http://preshing.com/20141202/cpp-has-become-more- pythonic](http://preshing.com/20141202/cpp-has-become-more-pythonic)

<comment><USER3> As a non-C++ coder there are two things that "scare" me about C++ (ok, maybe not scare, but are definitely big turn offs):

\- lack of a proper, cross platform, package manager: I know the history, I know that C/C++ are basically embedded in the system and they use the system package manager, but in this age it just doesn't fell right... I've been spoiled by many years of using Maven and other similar tools

\- template meta-programming plus the C++ legacy features which are probably lurking in many third-party libraries (simpler languages have fewer features to abuse and even when for whatever reason you have to use a relatively subpart third-party library, you know they can't do that much damage)

There's also the compilation speed, but as far as I know there are workarounds for that.

These things are, if not unsolvable in C++, at least many years away from being available.

Maybe an experienced C++ coder can destroy my preconceptions :)

<comment><USER4> > Maybe an experienced C++ coder can destroy my preconceptions :)

\- Generally C++ uses the OS-level package manager, like rpm or dpkg. It's not cross-platform and it doesn't have a nice interface in the source code (#include is... unfortunate), but there is a nice solution here if your organization has the discipline and tooling expertise to make it work.

\- Template metaprogramming isn't bad to use at all. Everyone uses it every time they construct a vector<>. It takes a lot of skill to write, though, and unfortunately even users of TMP can end up with nasty and bloated compiler errors. _Hopefully_ this will be addressed by "concepts" in forthcoming versions of C++, but it might be a while before that filters down to stable C++ compilers and libraries.

\- The real issue that _should_ scare you is something called "undefined behavior". It's very easy to do subtle things that cause you programs to break in weird and hard to debug ways. Nasty side effects that could theoretically include _any_ side effect. Like saving garbage to your production database. By doing something as innocuous as overrunning an array.

[https://kukuruku.co/post/undefined-behavior-and-fermats- last...](https://kukuruku.co/post/undefined-behavior-and-fermats-last- theorem/)

[https://stackoverflow.com/questions/367633/what-are-all- the-...](https://stackoverflow.com/questions/367633/what-are-all-the-common- undefined-behaviours-that-a-c-programmer-should-know-a)

There are tricks and tools to avoid undefined behavior, but I find that most C++ engineering orgs don't prioritize the tooling (linters, UB sanitizers, etc.) needed to let engineers do this productively. Consequently, a lot of writing good C++ involves detailed coding standards and/or very detail- oriented gurus poring over code reviews.

<comment><USER5> And array over-runs are just the beginning! (friends don't let friends use idices over iterators)

Had a fun bug at work once where we somehow accidentally built against two subtly incompatible versions of the same library.

This actually mostly worked until some random virtual function call sometimes called the wrong function silently...

<comment><USER6> Yes, C++ without a monorepo is very difficult.

</comment></comment></comment></comment></comment><comment><USER7> This is how I understand the two approaches to concurrency:

1) Use preemptive system threads that can execute in parallel. A task requiring simultaneous waiting is given an operating system thread of its own so it can block without stopping the entire program. But threads require significant memory and other resources per thread. Also, the operating system can arbitrarily interleave the execution of system threads, requiring the programmer to carefully protect shared resources with locks and condition variables, which is exceedingly error-prone.

2) Have a single-threaded program, where that single thread runs an event loop whose job is to react to external events by invoking a callback function that has been registered. While it doesn't require the same kind of complex synchronization that preemptive threads do, the inverted control structure of this approach requires your own control flow to thread awkwardly through the system's event loop, leading to a maze of event callbacks.

Coroutines work with the latter style in an attempt to tame its complexity. They are themselves complex, however, and, in my opinion, that complexity doesn't pull its weight when you consider in the end you only have one thread.

Can anyone tell me what I'm missing or how these problems with these approaches have been solved in places?

<comment><USER8> Or 3) you do like golang and erlang and build really lightweight green threads so you get the programming model of approach 1 and nearly the same speed as number 2.

This of course requires extra effort to prevent blocking of OS threads and in the case where the OS expects thread locality. But IMHO it's the superior approach.

The best solution would be if OSes themselves would provide really lightweight threads. And I suspect that they will, eventually.

<comment><USER7> I haven't done Erlang, but in my experience Golang has much the same problems as 1) so I'm not sure I'd agree. +1 to lightweight threads, tho.

<comment><USER9> Phoenix/Elixir can handle 2 million websocket connections on a single box. I would agree myself :)

[http://www.phoenixframework.org/blog/the-road- to-2-million-w...](http://www.phoenixframework.org/blog/the-road-to-2-million- websocket-connections)

<comment><USER10> Wouldn't you need something like 40 NICs to do that?

<comment><USER11> I believe you are referring to running out of ports, as 65k available ports * 40 ~= 2M.

The limitation is actually on a quad tuple: {src_ip, src_port, dest_ip, dest_port}

As such, the actual limit is outrageously high and isn't really a problem. Interestingly enough, the referenced Phoenix benchmark overlooked the dest component and hit a limit as they had only 40 or so machines to use in the test. Had they used multiple ips on the server it would have given them a lot more breathing room.

EDIT: Multiple IPs != Multiple NICs. You can assign multiple IPs to a single physical interface. Also, they could have used multiple ports to accomplish the same effect.

<comment><USER10> Good to know. I thought you were always limited by the outgoing port range to 65k - (used ports) good to know.

So they were limited by the testing cluster or the tested server?

<comment><USER11> They were limited by the testing cluster, but it was pointed out to them after the fact that they could have used multiple IPs or multiple ports on the tested server to go even higher.

</comment></comment></comment></comment></comment></comment></comment></comment><comment> throwaway-1209 I wish Google would open source / standardize their implementation of green threads ("fibers" as they're called internally). You basically write linear programs with those (with proper stack traces etc) and they're cooperatively concurrent in user space, possibly over a fixed size preemptively concurrent kernel thread pool. Very nifty and simplifies things a lot. Never seen anything like it on the outside.

<comment><USER12> I assume that you are trolling. Anyway, be aware that performance of Go programs are still behind of C++, so it is not a real replacement

<comment> throwaway-1209 I'm not talking about Go. Google fibers are C++.

</comment></comment></comment><comment><USER13> Does anyone know, if coroutines are implemented by the compiler, will they also be available for C? Specifically, I'm thinking about the brilliant Io language which uses its own cross-platform C coroutine library. If this could be done 'natively' I wonder if it would simplify the code?

<comment><USER14> They are, however I'm not sure the machinery of a coroutine will translate well to C. Gor does a pretty good breakdown of what's actually happening in this video [https://www.youtube.com/watch?v=8C8NnE1Dg4A](https://www.youtube.com/watch?v=8C8NnE1Dg4A) which I would suggest watching.

Not sure it can't be done, but it would require a good design. Personally I think that a libdispatch approach works better for C, particularly with the blocks extension.

</comment></comment><comment><USER15> Some resources for those who aren't too active in keeping up with C++, these slides are a good quick summary[0]. The talks linked on this page[1] are particularly good, especially the CppCon16 Gor Nishanov talk[2]. Paulo[3] has some interesting things to say (though I think some semantics may have changed since, so grain of salt and all).

[0] [https://www.slideshare.net/SergeyPlatonov/gor-nishanov-c- cor...](https://www.slideshare.net/SergeyPlatonov/gor-nishanov-c-coroutines-a- negative-overhead-) Interesting to note, slide #11 uses a tokenizer to demonstrate the usefulness of coroutines. IIRC, Rob Pike used a very similar (maybe his was a lexer/parser?) example in '14 re: Go.

[1] [http://luncliff.postach.io/post/exploring-msvc- coroutine](http://luncliff.postach.io/post/exploring-msvc-coroutine)

[2] [https://channel9.msdn.com/events/CPP/CppCon-2016/CppCon-2016...](https://channel9.msdn.com/events/CPP/CppCon-2016/CppCon-2016-Gor- Nishanov-C-Coroutines-Under-the-covers)

[3][https://paoloseverini.wordpress.com/2015/03/06/stackless- cor...](https://paoloseverini.wordpress.com/2015/03/06/stackless-coroutines- with-vs2015/)

\--

Side-note : Love it or hate it, the C++ community is certainly moving at a vibrant pace. I don't write production C++ code anymore (and haven't for a long time) but I still go out of my way to watch the CppCon talks. IMO, they consistently produce best quality talks just because you have so many excellent programmers from various industries using select subsets of C++ in all sorts of different ways. The people writing games are focused on making sure they're portable 'enough' to hit all the major platforms, without getting too tied to platform-specific low-level calls, while retaining the necessary performance to get satisfactory models/meshes/lighting/collision detection/raytracing/dozens-of-other-things completed within that tiny 16.33 millisecond gap to complete the framebuffer and swap in the next frame. The academics who are doing vast numerical computations will be talking about their new MPI utilizations (and undoubtedly, next years talk will be re: a boatload of RDMA/NUMA optimizations). People complain that C++ is a mishmash of too many concepts (pun not intended). I.e., you can write it in the "C with Objects" style, or the "I use TMP so much my code is basically Haskell", and anywhere in between - but it's that heterogeneity that ends up yielding such high caliber talks.

<comment><USER16> > People complain that C++ is a mishmash of too many concepts [...] but it's > that heterogeneity that ends up yielding such high caliber talks.

I agree. Scala gets the same kind of criticism, but just like with C++, you can easily limit Scala to whatever subset suits you (e.g., pure OOP or pure FP). C++ and Scala are among my favorite languages to work with, so I might be slightly biased :P

<comment><USER17> Also if one looks at any successful programming language in the market that began by fighting complexity, it is easy to observe that they had to eventually embrace complexity to adapt and survive in the market of programming languages.

Even if they kept the core simple, the complexity was shovelled into the libraries instead.

For example, I doubt there is anyone able to know the complete Python 3.6.1 documentation by heart, plus all major libraries, tools and implementations. Yet it is touted as a simple language.

<comment><USER18> It seems to me that the engineering trade-off is found in how we distribute complexity between:

(1). The language itself. (2). The tooling (IDE, build system, linters etc...). (3). The standard library. (4). The ecosystem of third-party libraries. (5). The developer's application code.

Moving complexity away from (5) might make applications smaller and easier to maintain, but it is done at the risk of increasing the training / learning burden on the development team.

If too much complexity ends up in (1), then we create a barrier to entry for new developers and hiring becomes harder.

If too much complexity ends up in (4), then we end up with endemic not- invented-here syndrome, because it becomes too hard to learn new libraries.

It seems to me that a lot of this is driven by learning and learnability -- any educational specialists around who want to wade in on this discussion?

<comment><USER17> A good example is music.

Yes knowing how to play scales and reading notes might seem easy, but mastering an instrument and its variations (e.g. string instruments) takes a whole life.

</comment></comment></comment></comment></comment><comment><USER19> What would be the best learning path to take for young people wanting to learn C++ today, especially with a focus on free software? Thanks for your attention!

<comment><USER17> First of all, and most important one, learn C++ idioms, not C.

This means making use of library types for memory allocation, vectors and strings.

There is a place for old C style low level features, but those should come later, after the safer concepts are already ingrained.

Kate Gregory's "Stop Teaching C" talk at CppCon 2015 explains better than me.

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

Get a nice IDE, QtCreator, Clion, VC++ Community, KDevelop, XCode.

Besides the "Tour of C++", check Stephan T. Lavavej talks at Channel 9.

"Core C++ Lectures"

[https://channel9.msdn.com/Series/C9-Lectures-Stephan-T- Lavav...](https://channel9.msdn.com/Series/C9-Lectures-Stephan-T-Lavavej- Core-C-)

"Advanced STL", these ones only when you already have a good understanding of STL as user

[https://channel9.msdn.com/Series/C9-Lectures-Stephan-T- Lavav...](https://channel9.msdn.com/Series/C9-Lectures-Stephan-T-Lavavej- Advanced-STL)

Also check video presentations from NDC, ACCU, CppCon, CppNow and C9 Going Native.

<comment><USER20> I agree with you for everything except this one statement:

> First of all, and most important one, learn C++ idioms, not C.

I think it would be better to learn both. C programming really has its place, and it gives you a model to understand how the sausage is really made. I know lots of C++ programmers who couldn't even begin to understand how half the things in their language work, this leads to completely needless performance loss (like using vectors for statically-sized arrays of data, which I recently replaced with a C array in a piece of game modelling software for a 20-30% improvement in runtime).

The fact that you consider this _the most important one_ is outlandish. I think it's easily more important to teach the tradeoffs and models involved in things like unique_ptr, rather than creating a cargo cult for abstractions that turn out to be useless half the time.

C++ programmers really need to learn C, at least after their first year of blissful ignorance. Don't stop teaching C.

<comment><USER21> >using vectors for statically-sized arrays of data, which I recently replaced with a C array

See the idea is you can use std::array, so you can use modern idioms (and at() for bounds checked access).

</comment></comment></comment></comment><comment><USER22> I think with all the async / await noise, the simplicity of co-routines is usually forgotten.

IMHO, they are the right abstraction on top of event-loops. Every major server platform, especially - JVM, CLR, should support them.

I would be very much interested in context-switch data of server applications for Threads vs. Coroutines loads.

<comment><USER23> I'd say that this is roughly the case with .NET, in terms of async/await.

IIRC, you're using a thread pool under the hood, and you sort of have to opt- in: if you're trying to write your own async code, for example, you need to schedule it in a way that's slightly more complicated than just saying `go myFunc()`, but it's possible.

As for the JVM, libraries like Akka and Quasar already provide this, although possibly not as performantly as if the runtime itself provided it?

<comment><USER24> Strictly speaking, whether you're using the thread pool under the hood or not depends on the task scheduler, which is pluggable. The default one that new threads get is indeed going to dispatch to the thread pool (on _different_ threads at that, not the same one). But it can be pretty much anything. Async/await doesn't really care about any of that, it just creates continuations for you, and hands them over to the scheduler.

</comment></comment></comment><comment> dis-sys Can't wait to see the libc++ coroutines to be declared as production ready. Now I am wondering whether they will be providing some channel implementation similar to the one in Golang in the future.

Interesting time for all we C++ fans.

<comment><USER25> Libc++ coroutines are production ready!

But seriously, the library implementation for coroutines is just a shallow wrapper around compiler builtins.

Therefore libc++ is probably bug free, but Clang certainly isn't.

EDIT: "probably bug free" == famous last words.

</comment></comment><comment><USER26> I found this to be a good article about the importance of coroutines compared to continuation-passing style: [http://orthecreedence.github.io/cl- async/2012/11/07/missing-...](http://orthecreedence.github.io/cl- async/2012/11/07/missing-coroutines-in-common-lisp.html)

</comment><comment><USER27> At the moment, they are still listed as a WIP[0], but the commit history shows a lot of effort done recently[1] (Ctrl-F "coroutine")

[0]: [https://clang.llvm.org/cxx_status.html#ts](https://clang.llvm.org/cxx_status.html#ts) [1]: [http://lists.llvm.org/pipermail/cfe-commits/Week-of- Mon-2017...](http://lists.llvm.org/pipermail/cfe-commits/Week-of- Mon-20170522/thread.html)

<comment><USER25> The changes literally landed in the past three days; The implementation is _theoretically_ perfect, but once it's (seriously) observed by users it will decay into bugs. That's just basic quantum CS. :-)

</comment></comment><comment><USER28> Where can I see some examples or documentation on using coroutines in C++?

</comment><comment><USER29> Simon Tatham can finally breathe easily.</comment>


The Way I Work: Yvon Chouinard, Patagonia - <AUTHOR> http://www.inc.com/magazine/201303/liz-welch/the-way-i-work-yvon-chouinard-patagonia.html <comment><USER2> Giant article-obscuring pop-up.</comment>


React.js Conf - <AUTHOR> http://conf.reactjs.com/

<comment><USER2> Really looking forward to this. Even although it's been nearly a year since React was open sourced, I think it's only now that we're starting to understand how it can help as an end-to-end solution in association with flux. IMO a whole class of problems vanish with this approach, and in its place there's an application with remarkable simplicity.

Flux+React gets out of the way and helps you think about the hard stuff.

What would I like to see next? React's API fully stablising, and Facebook's Flux implementation being fleshed out in the way that Yahoo[1] and Reflux[2] have. I'd like to see some high quality, real-world example applications of the whole architecture.

At the moment I think there's a bit of confusion around the whole flux concept which means that people think it's more complicated than it actually is. With more implementations and community consensus that shouldn't last long.

I'd love to be able to spend time writing an ebook on the topic but I'm already up to my eyeballs in "real" work!

Edit to say: one thing that was really interesting last year when react first started making noise was Pete Hunt's demo of react on mobile [3]. It doesn't seem like that got a lot of traction, and to be fair the last thing we need is another mobile framework, but I think there's still a lot of exploration to be done here.

[1] [https://github.com/yahoo/flux-examples](https://github.com/yahoo/flux- examples) [2] [https://github.com/spoike/refluxjs](https://github.com/spoike/refluxjs) [3] [https://github.com/petehunt/react-touch/](https://github.com/petehunt/react- touch/)

<comment><USER3> I'm looking forward to see more about Flow because I think it will be a stepping stone in ES6 going mainstream; 2015 will be an exciting year for Javascript :)

<comment><USER2> Did you mean Flux or Flow? I can see a few things on "Flow" around but nothing that matches very well.

<comment><USER3> I meant Flow: this talk ([http://youtu.be/M8x0bc81smU?t=12m41s](http://youtu.be/M8x0bc81smU?t=12m41s)) from @scale has the best information about Flow so far.

So far, it sounds like a linter similar to JSHint as long as the codebase is in ES6, with two ways to use it:

\- with regular javascript, it is already able to deduce some constraints from the code itself

\- with additional type annotations (which is part of ES6, so you don't end up with code that only Flow could use), it can test even more things.

</comment></comment></comment></comment><comment><USER4> Awesome! I'd love to attend, but I doubt my employer would spring for the travel costs from Berlin. So... who wants to help me organize React.js Conf EU next year? =)

On that note, do you guys plan to record the sessions?

<comment><USER5> All the sessions will be recorded and put on youtube shortly after :)

</comment></comment><comment><USER6> Please note they are accepting applications for presenter talks over the next ~20 days or so. You can apply using the linked form on the submission URL.

</comment><comment><USER7> I'll be there...just have to convince the bosses to pay for it

</comment><comment><USER8> Is the price listed anywhere?

</comment><comment><USER9> Can't wait for this!

</comment><comment><USER10> awesome! can't wait!

<comment><USER11> Looking forward to the videos of this. Made my own own React framework too:

[https://github.com/zubairq/coils](https://github.com/zubairq/coils)</comment></comment>


PXXL – Experimental React Powered Pixel Editor - <AUTHOR> http://tomglenn.co.uk/pxxl <comment><AUTHOR> So I decided it was about time to learn React and I needed a pet project to sink my teeth into. PXXL was born, a react powered pixel editor. After 6 days of development I'm releasing it into the wild.

It's rough round the edges and i'm sure there are bugs, as well as lots of missing features that you might expect in a pixel editor... but I've reached a point where I just wanted to release it and get some feedback.

At worst I've taught myself some react and at best someone might actually find it useful :)

All feedback is much appreciated.</comment>


Show HN: Eyewitness.io – Monitoring for cron, queues and websites - <AUTHOR> https://eyewitness.io

<comment><USER2> Looks pretty good, I like that you use basically a webhook for status instead of building an agent or something similar.

I'm a little confused by the minimum interval attached to the different plans though. Is that just saying that the simple plan can only be configured to ensure there's a check-in at most every 60 minutes?

</comment><comment><AUTHOR> Hi everyone - just 'shipped' my latest website.

Solves a specific problem I've been having managing many other web applications across different servers and providers. I felt there wasnt a good solution to what I needed, so I took the opportunity to create my own.

Please feel free to critique the website and solution - any constructive feedback would be appreciated.</comment>


Ask HN: What important truth do very few (informed) people agree with you on? - <AUTHOR> <comment><USER2> Its conceptually impossible to disagree with a hard truth if you are informed about it.

<comment><AUTHOR> What? I completely disagree. Unless you and I have different definitions of "informed". My definition of informed is that the person feels they are informed, and they have sought out all the information they can.

Therefore, with that definition, it's entirely possible for two humans to look at the same information, and draw two different conclusions (perhaps because they filter the information according to their pre-existing beliefs, perhaps for other reasons), and therefore disagree on a hard truth. e.g. Climate change.

<comment><USER2> By hard truth I mean absolute truth. Facts. 2+2 = 4. If you understand all the rules that go into addition, there's no way for you to arrive at another conclusion.

Another example:

The earth is not flat. If you spend any amount of time studying just one of the many reasons why it can't be flat, you will have to agree.

Climate Change is not something we can know for sure. "Climate change" itself is not very well defined. Do you mean man-made climate change? Do you mean global warming? What exactly do you mean? You can, of course, draw different conclusions because its not well specified.

Out of that complex of issues, one good example would be the ozone hole. It's pretty clear that in the 70s we ejected a class of chemical substances (FCKW etc.) into the atmosphere that messed with the ozone layer. That's provable. If you study the facts, you have to agree.

Likewise, you have to agree that the human race has contributed to an increase in carbon oxides in the atmosphere.

All hard truths.

Then you have truths that we do not have direct evidence for but can verify conceptually - like this one:

"The universe has not existed for an infinite amount of time". How can we know?

Hawking makes the following argument: "Had the universe existed for an infinite amount of time, it would have had an infinite amount of time to achieve thermodynamic equilibrium. But it is obviously not in equilibrium (us being able to observe it necessitates it not being in equilibrium); therefore, it must be finite"

You can not possibly find a counterargument to that.

I differentiate between absolute truth and "what we know". We can be wrong about things because we have access to a limited amount of knowledge, but that doesn't change truth.

Faster than light travel is either possible or it is not. We don't know. But that doesn't make the truth any less deterministic.

<comment><AUTHOR> Ah, I see what you mean. I did not correctly interpret your use of "hard truth".

I agree with your comment.

That said, I don't believe it is relevant if my/your/someone's goal is to learn about the world to create things/etc. Many (most?) of the things I know that are useful are not absolute truths, they are just hypotheses.

</comment></comment></comment></comment><comment><USER3> Strong AI cannot be achieved, atleast not with current tech. AND If We get them, Strongly intelligent machines will be totally useless.

Suppose you could make an (strongly) Intelligent machine, and tell to analyze some data, it can just say "Fuck no, you're not a boss of me now!".

</comment><comment><USER4> "Elitism" is a way to rebrand not countenancing idiots.

<comment><USER5> I'm with you on this (especially because if this election).

</comment></comment><comment><USER6> People with Cystic Fibrosis are not "drowning in their own mucus." They underproduce mucus, not overproduce it. They are drowning in phlegm.

<comment><USER7> drowning in mucus vs. drowning in phlegm

is still drowning isn't it? pretty pedantic.

<comment><USER6> No, it's really not. It is a major key to solving it. Not "The" key, because there are a few pieces to the puzzle. But it is a really major detail.

<comment><USER7> > It is a major key to solving it

The average person is not solving it. And the average person isn't going to go, "oh it's phlegm, I only donate to mucus-related causes"?

</comment></comment></comment></comment><comment><USER8> The causes and consiquences of the Arab spring

<comment><USER9> Explain.

</comment></comment><comment><USER10> Sentient animals should not be treated as commodities.

<comment><USER11> What's an example of a sentient animal?

<comment><USER12> as an example, my guess would be a pig?

</comment></comment></comment><comment><USER13> I saw this question from Zero to One written by Peter Thiel. Nice one.

</comment><comment><USER14> short: [https://i.redd.it/tqiydv3ymchx.jpg](https://i.redd.it/tqiydv3ymchx.jpg)

long: [https://www.reddit.com/r/gangstalkingmkultra/comments/4fb98a...](https://www.reddit.com/r/gangstalkingmkultra/comments/4fb98a/science_lies_relevant_to_mind_control/)</comment>


California agency blocks release of police use of force, surveillance training - <AUTHOR> https://www.eff.org/deeplinks/2020/06/california-agency-blocks-release-police-use-force-and-surveillance-training <comment><USER2> I would go further. I would suggest demanding that all training of police officers be subject to auditing similar to how a college course can.

Now of course rules would be put in place to limit numbers, disallowing slots to be filled with affiliated persons, providing safety equipment should the course requirement for students, and a copy of all printed and electronically distributed material.

Rules to protect students and teachers from disruption could however include no electronic devices, phones, tablets, or such and professional dress and demeanor. Anyone auditing would not be allowed to interject during any class not interact with students. Observation is a powerful tool in itself.

<comment><USER3> I would go further. Have all classes and training sessions recorded so there's record for review of how accurately curriculum is being followed, what off the cuff side commentary might be made, etc - to weed out bad instructors, bad role models. This also acts as protection for the officers themselves if there's evidence they were trained poorly or wrongly.

<comment><USER4> What's already public is pretty harrowing:

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

<comment><USER5> Can you be more specific about what is harrowing?

<comment><USER4> It presumes before the fact that all police killings are justified (Obviously there was a clear and present danger to others!), and holds up remorselessness about killing as a sort of quasi-enlightened state.

<comment><USER5> You misconstrue the content to describe it like that. The justification is predicated on the a clear and present danger to others.

What reasoning do you have to support being remorseful for saving others from a clear and present danger?

<comment><USER6> Normal people have nightmares for years after killing someone, even in the most perfectly justified cases of self defense. You don't easily recover. If you can kill someone and be more or less OK after that, you probably have antisocial personality disorder or you've had a lot of training to desensitize you to killing. Neither of those are good qualities in public service.

<comment><USER5> > Normal people have nightmares for years after killing someone, even in the > most perfectly justified cases of self defense.

This isn't an answer to the question. It is in fact a non-answer that endorses the irrational as an enlightened state.

<comment><USER6> Do you think people need a justification to have feelings?

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> It's funny how copyright and privacy are often used to block inconvenient disclosure. Same in medical. They sell data back and forth but as soon as you request something that's inconvenient, they use patient privacy as excuse to not disclose.

</comment><comment><USER8> Making the association to K-12 public education, taxpaying parents cannot easily access all of the curriculum their student has/is/will engage with in a K-12 public school. The legislation (if any) and auditing process varies by state, but from a business perspective, K-12 publishers do not want to be on the hook for any real-life outcomes. Their customer is the school/school district, not their constituents. Being able to see everything would open the cultural (relevance) and academic (rigor) floodgates of advocacy.

In addition to protecting the business model, I imagine these training companies do not want their educative materials associated with real-world police misconduct, or subject to any standards around what should or should not be taught.

</comment><comment><USER9> I would argue freedom of information is more important than copyright claims. If you do work for the government it needs to be able to be pretty open what is done. I can see that there might be some exceptions but I would not think copyright is one of them.

</comment><comment><USER10> If you want to claim a copyright, then good luck with the in the private market, but if you want that big, fat juicy government contract (i.e. taxpayer dollars) there should be concessions.

</comment><comment><USER11> Puts the company in a weird position where they want to charge for access to their material, but laws are requiring them to release it publicly. Assuming good intent, it would make their business model challenging

<comment><USER12> I don't really see how this is any different than books. Anyone can pick a book up and read it for free at the library, and intellectual property laws guide most entities to either lawfully borrow, rent or purchase a copy, and not bootleg it.

<comment><USER11> It's like the musician challenge where piracy and streaming made it harder to charge for the music itself, so bands began relying on live performance out of necessity

<comment><USER12> Shaking down some kid for violating copyright or trademark law doesn't scale and is bad PR. Lawyers would have a field day if municipalities started bootlegging their clients' intellectual property en masse.

</comment></comment></comment></comment><comment><USER13> Well, all the more reason to applaud hacker groups like DDoSecrets for file dumps like Blueleaks that are revealing how much utter BS and how much institutionalized corruption exists in Law Enforcement. Moreover, I'm pretty disappointed Jack Dorsey let someone at his company just ban their account [1].

A lot of good was done in having them publicly advertise what they had released. Hopefully this has a Streisan effect instead.

1: [https://www.zdnet.com/article/twitter-bans-ddosecrets- accoun...](https://www.zdnet.com/article/twitter-bans-ddosecrets-account-over- blueleaks-police-data-dump/)

I'm gla

</comment><comment><USER14> While I don't disagree with the California law, it is reasonable for a company to hold copyright over it's materials and products. I'm not sure a California state law can just hand wave away a federal statue and break the copyright, presumably violating the contract the police agencies made in the past with these companies. If they do so, the companies will probably sue the state, and they may win a bunch of taxpayer money.

To me, it seems like the California agency is the one in the wrong here, they need to be using training courses that are able to comply with the above law, rather than just slapping up a "we cant comply sorry" message.

<comment><USER15> Sorry the police and government generally do not have free reign over us. In an era of so much police brutality its perfectly reasonable to ask how they were trained and what the training materials consist of. Lots of things at the library are under copyright but I can check them out and read them for free. Why should police training materials be different?

</comment></comment><comment><USER4> A sample of what this kind of training can look like:

[https://www.youtube.com/watch?v=PwEYhIX4cbM](https://www.youtube.com/watch?v=PwEYhIX4cbM)</comment>


Notes on Writing Makefiles - <AUTHOR> http://eigenstate.org/notes/makefiles <comment><USER2> One other thing in terms of organization. Your makefile should place any .o files in a separate directory, not in the source directory. This helps keep your source directory clean, and extends nicely when you want to have multiple different builds with different options.

</comment><comment> Julio-Guerra Over the last few years, I wrote a GNU Make library to make people able to write Makefiles in a very declarative way to help everyone in my company, me included, with this serious problem. I tried to make it as simple as possible using simple widespread concepts like UML components where you simply say a component has interfaces you can require and implementations you can link against. It is used to build our Operating System, our applications and even our reactjs web application.

I decided to make it open source a few months ago but it lacks examples and documentation, sorry... You can check out this test to see how it looks like in the test-suite: [https://github.com/farjump/Makefile.in/blob/dev/test/externa...](https://github.com/farjump/Makefile.in/blob/dev/test/external/Makefile.in)

It solved every problem I noticed about writing bare Makefiles: dependency tracking and generation is automated; the Makefile can be split into multiple sub-makefiles in your source-tree so that it matches your UML (these one [http://agilemodeling.com/images/models/componentDiagramUML1....](http://agilemodeling.com/images/models/componentDiagramUML1.jpg\);) you can perform out-of-source builds; generating complex software with deep dependency trees made simple (you inherit from other components' dependencies), etc.

Bonus: it also includes some hacks with GNU Make metaprogramming [https://github.com/farjump/Makefile.in/blob/dev/src/mk/core/...](https://github.com/farjump/Makefile.in/blob/dev/src/mk/core/debug.mk#L31) :D

<comment><USER3> Honest question: Why not use cmake?

<comment> Julio-Guerra cmake does not really offer the declarative interface I want (i.e. descriptions of components). It is still "low-level" and I would have to write cmake macros too. So I preferred native gnu make. Adding another tool on top of Make adds another layer of complexity, no matter how simple it is.

To me, the big benefit of cmake is its portability because it is able to generate visual studio files, eclipse files, etc.

Another one is that you end up with a static Makefile while my solution is dynamic: the makefile is evaluated at every execution (unless gnu make caches its parsed files but I don't think it does so far). It could be a problem for big projects like linux which would require a certain amount of parsing time of the Makefiles before evaluating them - while cmake or autotools, you go through this only once.

</comment></comment></comment><comment><USER4> > Pattern rules are your friend

Amen. Been writing small makefiles for many years, and only recently learned how to use pattern rules properly. They finally relieved my temptation to use eval.

Speaking of eval, I have one makefile tip I've learned the hard way: the example in the gnu make manual for eval doesn't run! It has an incorrect "=" (equals sign) in the define. I've racked my brain against that one for hours, twice, because a couple years later I'd forgotten about the first time I figured it out.

<comment><USER5> Can you file a bug with them? Maybe submit a patch to their documentation?

<comment><USER4> Yes, I can, and have just done so. :)

<comment><USER4> Aha. [http://stackoverflow.com/questions/13260396/gnu- make-3-81-ev...](http://stackoverflow.com/questions/13260396/gnu- make-3-81-eval-function-not-working)

</comment></comment></comment></comment><comment><USER6> I've recently been learning Make a little in order to do .deb packaging The Official Way; that is with debuild (which expects Make), not with FPM. I enjoy _having_ a Makefile, and I enjoyed _not having_ a Makefile, but the bit in- between these two states wasn't particularly fun...

But once you have a Makefile that works, it's easy to extend. Overall I'm glad I bothered to learn it (at least a little bit), and I'm rewarded with a .deb file that can set up it's own environment rather than me having to set it up separately. FPM can include all the boilerplate scripting to do this, but you end up with so many flags (or wrapper scripts) that you may as well just go with debuild/Make in the first place.</comment>


Ask HN: Getting traffic to a new Blog - <AUTHOR>

I started a new blog a couple weeks ago that focuses mainly on Programming but also has some content on Startups, Food and Drinks.
I've been doing a numerous things to get traffic to the site like commenting on similar blogs, submitting articles I think are interesting to here, reddit and other sites and spreading through Twitter and Facebook and while this brings in a little traffic every time I do these things I'm finding none of this traffic is staying (drops off if I don't promote for a day).
My question is what are some good ways to get traffic that sticks to a new blog? <comment><USER2> Sounds like you're doing all the right things; now it's about content. Submitting to HN will always give you a little spike, but if it's something interesting that sparks debate you'll stay on the front page, get people tweeting about it, etc. and maintain that increase for a much longer period.

<comment><AUTHOR> I'm definitely trying to do that. I've been sticking to a schedule of 3 posts a week. All of them are as high of a quality as I can write (I'm still a little rusty).

I guess I'll just keep it up.

<comment><USER3> careful submitting to HN. My submissions are now all marked dead automatically for the past 2 weeks... Even one of my blog submissions got 10 upvotes before being marked dead.. No idea why this is happening / how I can stop it.

</comment></comment></comment><comment><USER4> So you can either buy your audience or earn your audience.

If you want to earn your audience, you're doing the right thing. Additionally, consider guest blogging on other blogs in your space.

For buying your audience, I have found Facebook ads targeted at your page can be very effective. I've paid ~$.60/US per fan, who then come to your site when you post new things, etc. I bet you could get the CPF (cost per fan) lower if you played with the optimization for a while. (I targeted the ads at people who liked sites and interests similiar to mine.)

</comment><comment><USER5> Why don't you put it in your HN profile?

<comment><AUTHOR> I just did. I hadn't thought of doing that.</comment></comment>


Lost a work-friend today - <AUTHOR> https://www.reddit.com/r/sysadmin/comments/9t4ojm/lost_a_workfriend_today/ <comment><USER2> FTA: Being in IT, in any capacity, is very often thankless and demoralizing. Many of us are expected to constantly do more with less time and for less money, among other things. In that sort of environment, it's very easy to fall victim to depression and suicide.

If this is you, please don't remain silent. You are worthwhile and your story deserves to be told by you. There are people in your life that care and, wherever you are, there are people who want to help.

USA: National Suicide Prevention Helpline: 1-800-273-8255 or text TALK to 741741.

UK: Samaritans - 116 123 (27/7) CALM - 0800 58 58 58 (5pm-midnight)</comment>


Why Are All the Holograms in the Star Wars Universe So Crappy? - <AUTHOR> http://jalopnik.com/why-are-all-the-holograms-in-the-star-wars-universe-so-1753266107 <comment><USER2> All of the situations where holograms are used are practical situations, not art.

For example, you don't care about the screen quality on an ATM or purchase kiosk as long as it is readable.

Given that this is a world where such technology is just everyday tools, I thought having them artistically imperfect made them _more_ realistic.

</comment><comment><USER3> The Star Wars schtick was a universe of high technology, barely held together with baling wire and string. Only the Empire autocracy had the money for new stuff.

<comment><USER4> That made sense for the original trilogy, but not for the prequels, which were generally presented as taking place in prosperous times.

It's rather jarring to see how advanced Coruscant is and then take a look at the SD monochromatic holograms.</comment></comment>


WebDSP Media Library and WebAssembly Video Editor Demo - <AUTHOR> https://github.com/shamadee/web-dsp <comment><USER2> Note, that these simple image filters could be made with WebGL and run like 50 times faster than WASM or JS.

Also, you can not just say that "a language is faster than another language". In current modern web browsers, you can write JS programs, that are equally perfromant, as the WASM program (WASM would be at most 10 - 20 percent faster). So if you see JS being slower in this case, maybe it just was not written properly.

So, in my opinion, the true benefit of WASM is the ability to compile into it from other low-level languages, but not the preformance.

<comment><USER3> > So, in my opinion, the true benefit of WASM is the ability to compile into > it from other low-level languages, but not the preformance.

That may be true for now, but there are other advantages that have at least something to do with performance.

For one thing, wasm bytecode can be decoded much faster than JavaScript can be parsed. I'm not really aware of situations when parsing speed is an issue, but I imagine there are situations where this is nice.

In general, it will be easier to add new features to wasm compared to JavaScript. Presumably this means features like threads will land in wasm much sooner than in JavaScript, but we'll see.

<comment><USER4> > For one thing, wasm bytecode can be decoded much faster than JavaScript can > be parsed

True, but as long as you have space for cache, it only goes faster once. Wasm is also loaded by JS itself and of limited usage right.

I think the first comment is actually accurate about the state of wasm. It only brings value to people compiling from C/C++ to the web. It is not a technology of the future, but a retrofit for the past.

</comment></comment></comment><comment><USER5> This is a great example of how much faster WebAssembly can be for some applications!

On the topic of video editing, though, this will be even faster still once WebAssembly supports threads[1]

[1] [https://github.com/WebAssembly/design/issues/1073](https://github.com/WebAssembly/design/issues/1073)

<comment><USER6> My observation on their demo, with 64-bit Firefox Nightly for Windows on a Surface Book (i7-6600U, using integrated graphics):

• For most of the filters, WebAssembly averages 10–40% slower than JavaScript;

• For some of the filters, WebAssembly averages −10%–40% faster than JavaScript;

• For Super Edge, WebAssembly averages 10–20× faster than JavaScript;

• Beards look even cooler than normal with Super Edge (though I wouldn't want my beard to look like that in real life).

<comment><USER7> What I always found interesting is the (psychological) asymmetry

+50% means 50% slower

-50% means twice as fast

(or with stocks, going down 50% means you lose half of your money, going back to the original value means you double your investment (for new investors) which I think basically drives stock market investments)</comment></comment></comment>


Google gets into game streaming with Project Stream - <AUTHOR> https://techcrunch.com/2018/10/01/google-gets-into-game-streaming-with-project-stream-and-assassins-creed-odyssey-in-chrome/ <comment><USER2> Really feel sad about recent prevailing sentiment across HN. Some comments seem to suggest Google needs to provide the following for this kind of "tech test":

* Available for all browsers and comply all web standards.

* Available for all languages across all regions, with accessibility features.

* Promise not to "launch and shutdown in a few years".

* Imply a real future product.

But I'm guessing what Google wants to do is to just prove if "game streaming" is technically / financially viable for mass crowds based on their technology in hand. If not, maybe shelf and wait for a couple of years without dumping a lot of resources and drawing bad sentiment.

What requirements are you thinking which should be applied to such a "tech test"?

<comment><USER3> These are the sorts of projects that make sense to me for Google to be playing around with. Namely, they are highly experimental and pushing what might even be possible, but have the potential to (especially if Google shows success) suddenly boom into a large market since games have a high demand.

It also makes sense for Google to push for this sort of usage since it's more data going through pipes. Data they can analyze in some way, make money, etc.

The Google projects that make less sense to me are projects that are largely about data retention, long term stability, and are generally considered solved problems. I.e. email and office suites.

<comment><USER4> Those long-term solved projects can be sold to other companies as part of GSuite.

<comment><USER3> I'm honestly not sure how that wasn't obvious to me.

</comment></comment></comment></comment><comment><USER5> Does this mean I'll now need a Steam, Uplay, and Google account all simultaneously logged in to play an offline game by myself?

And if something goes wrong, I can expect absolutely zero tech support?

And I'll lose access to all my games in 11 months when Google kills it?

And it'll post my Achievements and owned games to my Google+ account automatically and try to make it Social?

And if I get banned from the games stuff for some reason, I'll lose my other Google accounts like Gmail, since they're all linked?

With all that value-add and free extra latency, I basically HAVE TO sign up! What a deal!

<comment><USER6> Well since this is a streaming service, there is no such thing as an "offline" game as you need to be connected to the internet to stream it. I"m guess they will have some sort pay for play time model rather than a full game purchase. This would be the streaming equivalent of renting a red box title, but hopefully cheaper.

<comment><USER5> Offline meaning single player, streaming not withstanding, that's a lot of crap to go through (managing and maintaining many accounts and clients) to boot into a game that you're going to play by yourself (not multiplayer), and a lot of points of failure between you and your small amount of recreation time after work.

<comment><USER6> You already have to do this to play any AAA title? I really don't see the issue?

<comment><USER5> The issue is that it doesn't have to be that way, didn't used to be that way, and isn't that way for pirates.

Just because it's the state of affairs doesn't mean it's acceptable.

Consoles are arguably a better experience in several regards, and I want the PC to be as enjoyable, considering PCs cost more; e.g. you can play Diablo 3 without an internet connection on PlayStation, but not on PC.

You can play some random AAA game on a console without having to put in a key or maintain an account or a third party client (or multiple third party clients!), where on PC you have to do those things.

You can sell a console game or give it to your friend when you finish playing it, but on PC it's "already activated".

Google is going to take all the above and make it worse, so they can get their % of the sale too.

Just because some company wants us to do something or behave some way doesn't make us obligated to do so.

<comment><USER7> You're perfectly entitled to your own opinion of why you think it's terrible and why it will fail and is useless, etc (and I would agree with some of your points). But I just don't understand:

> Just because some company wants us to do something or behave some way > doesn't make us obligated to do so.

Don't use it if you don't like it ? Google launching something doesn't mean you're "obligated" in any way, so I don't know what you're trying to say with that sentence.

<comment><USER5> You can opt out in the beginning, but later it becomes a monopoly.

You can't even buy a game on a DVD anymore without it requiring Steam to install, activate, and play.

So, in theory, if they succeed, it won't be optional anymore.

"Oh then you can just stop playing games!" ... yes, but I would prefer not to. I would prefer a fair exchange of money for an unencumbered product.

Hopefully, if I speak out now about the potential and likely dangers of such a service, then I may hinder its adoption and prevent the further decline of an art form that I hold very dear.

<comment><USER8> Then support gog.com and accept that you won't have access to all games, but you'll own the games you buy.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> Have you checked out my company [https://parsecgaming.com](https://parsecgaming.com)? We offer this but also the ability to connect to your own computer and invite your friends to connect to your computer too.

<comment><USER10> I think you're being down-voted because the comment is kind of advertise-y (maybe that'll be different in an hour).

Since it is your company, do you have any insight into potential challenges that the average reader wouldn't consider? I understand that a benefit to "game streaming" is that a game originally not networked (like splitscreen only) can be played by multiple people over a streamed connection.

<comment><USER9> Hey. I have a lot to say :), and I provided a lot of thoughts to this FastCompany article about the industry - [https://www.fastcompany.com/90225352/microsoft-is-the- right-...](https://www.fastcompany.com/90225352/microsoft-is-the-right- company-to-build-the-netflix-of-gaming). Generally, as we have seen media wants to be streamed. And in this case, streaming is a great solution for distributing content and unlocking games from the hardware they've been walled off in. That being said, streaming video games is a very different proposition technically and financially. People have been asking for the Netflix of gaming for a long time, and companies really want to build it because it puts them at the center of an entertainment industry that is growing extremely fast and grabbing more attention every year. The US Bureau of Labor Statistics now says that the average American's day includes 60% more time playing video games than it did in 2011, and people who do play games play for 2.4 hours each day. Most of the technical challenges with this have been worked out.

Streaming video at 60 FPS or greater and at 4K is possible. We do it all day at Parsec, but the economic challenges are real due to the requirement that you need to render video in real-time. Rendering in real-time requires each user to have access to a GPU or 1/2 of a cloud GPU until newer technologies allowing for true virtualization appear on the market. Cloud GPUs are generally very expensive to operate, and as many of us know, the cloud providers charge a lot to use them for gaming and/or ML. Companies with scale can lease them at lower rates and have lower energy costs lowering the overall cost to serve, but they are still very expensive to operate. Even if you get the rates down to $0.15 per hour, you're still looking at overall hardware costs at $10 per month. Your subscription price will have to cover the hardware and the content license. The content itself is very expensive to license as well because we consume games very differently from the way we consume TV and media. When people binge on Netflix, they're binging on many shows or many movies. When people binge on games, they're playing 1 game for 100s of hours. You can see this in the Steam Spy data. The median Steam customer only buys 1-2 games each year - [https://galyonk.in/steam- in-2017-129c0e6be260](https://galyonk.in/steam-in-2017-129c0e6be260). Many cloud gaming companies and game companies are aiming to increase the market for AAA games via streaming from the cloud. They're trying to reach the latent gamers who don't play games any more. In our opinion, that's a lot less exciting than delivering something valuable to current consumers of games. Consumers don't switch to a new distribution technology because it's a cool technology. They switch when it gives them something unique that they couldn't get before the technology existed.

This is why, at Parsec ([https://parsecgaming.com](https://parsecgaming.com)), we're focused on delivering unique experiences around games via streaming technology. We make it so you can find other people around you and invite friends to play local co-op games with you online. We're recreating the couch gaming experience we love and making it available online. This experience brings a new element to gaming that gamers today benefit from and enjoy.

</comment></comment></comment><comment><USER11> I've used various game streaming services and have found parsec[0] to be the best in this domain. Their service prioritizes latency above all else and it performs well though there's alot of artifacts. It runs on top of amazon services so server placement is a non issue.

[0]:[https://parsecgaming.com/](https://parsecgaming.com/)

<comment><USER12> Correct me if I'm wrong but these services are quite different no?

The idea of Parsec is that a machine you own is rendering and uploading a game that you also own. Google seems to be playing around with the idea of games as a service, where they render a game you don't own on a machine you don't own, and let you play it for presumably a monthly subscription.

<comment><USER11> Well you don't upload but parsec provides everything google is planning on offering with the freedom of allowing you to use it as your own computer. So I am not sure what you are getting at.

Unless google undercuts competing small businesses in the same space, they're dead on arrival. They do not offer anything that's not on the market today.

</comment></comment></comment><comment><USER13> The biggest bottle-neck to any game streaming service is latency and I've some major doubts that they're going to be able to resolve it unless the client is located really close-by to servers. I messed around with Steam InHome Streaming, Xbox Streaming and PS RmotePly a bunch from work where we have the same ISP as I do at home. The speed between the two is around 6-700mbit and yet the added latency can still be felt and I don't live very far from work.

From my own experience the extra delay can be tolerable in a few game genres, especially on console-optimised games where, to my knowledge, developers optimise controls for higher latency due to a possibility of a slower tv. Obviously PC FPSes and the like suffer the worst. It does work really well on the same LAN, though: I decided to use a tiny SteamLink for my living room gaming needs instead of messing around with long HDMI cables and the added fiddliness of having to directly use the desktop launch games.

I wouldn't really sign up and pay for a service operated by Google, tho.

By the way, while a future affordable game streaming service that works well might lower the bar of entry to the hobby, I have a serious fear of such a thing enabling the worst parts of the video game industry to take over. The software-as-a-service model and renouncing the last vestiges of actually owning a copy of a game seems like a terribly tempting way to turn the entire industry off of actual creativity and onto even more "whale-chasing".

</comment><comment><USER10> Looks like there is an older article but it didn't float as quickly as this one [0]. This is a direct link to the signup page [1], and this is a link to the about page [2].

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

[1]: [https://projectstream.google.com/aco/signup](https://projectstream.google.com/aco/signup)

[2]: [https://blog.google/technology/developers/pushing-limits- str...](https://blog.google/technology/developers/pushing-limits-streaming- technology/)

<comment><USER14> Link 2 is really the link I'm looking for. It's the source to all of these other 3rd-party articles.

Sidenote: can't stand how much space the header and footer (related articles) takes up on that page on desktop. The scroll-up-to-view-the-header pattern is disgusting with an header that big.

</comment></comment><comment><USER15> AFAIK Ubisoft was already planning to stream AC: Origins to the Nintendo Switch in Japan (it's not coming to the Switch outside of Japan, I think). I wonder if they'll sell it on cartridge; that'll have to be one of the first games where the publisher can turn off the server and you now have a cartridge that doesn't do anything.

<comment><USER16> It's nothing new in Japan, it's normal.

[https://kotaku.com/in-japan-the-nintendo-switch-is- streaming...](https://kotaku.com/in-japan-the-nintendo-switch-is-streaming- games-that-i-1829071837)

</comment></comment><comment><USER17> Doesnt even work on firefox or IE. It tells me to use Chrome which I recently ditched due to privacy violation concerns.

<comment><USER18> It's amazing how Chrome has become the Internet Explorer 6 of the modern web era.

Instead of ActiveX I wonder what would be an appropriate way to describe it.

<comment><USER19> Trojan?

</comment></comment></comment><comment> EKLM-ZK88 How is this different from [https://www.nvidia.com/en- us/geforce/products/geforce-now/](https://www.nvidia.com/en- us/geforce/products/geforce-now/) or [http://onlive.com/](http://onlive.com/) ?

<comment><USER20> > OnLive is in the process of liquidating its remaining assets

it is not on liquidating (at least not yet)

<comment> EKLM-ZK88 The company may be liquidating but the service looks identical.

</comment></comment></comment><comment><USER21> The big challenge here isn't the tech side, it's getting the games that people want to play. Many, many companies fail to compete with the likes of Steam for instance because they can't attract enough interest from developers and publishers, meaning their libraries are lacking.

Google partnering with Ubisoft is promising here, but the question will be whether they could get the likes of Activision, EA, Square Enix, Capcom, Konami, Take Two, etc to work with this service as well. If they can't, they'll end up with the streaming equivalent of Origin or what not, while whoever does get everyone on board will take the market.

</comment><comment><USER22> Whoo another streaming service that will be bad

<comment><USER23> If anyone has the resources and technical expertise to make it work, it'd be Google.

<comment><USER24> I don't have much hope. Hangouts is still rarely a flawless experience whether due to software or connection issues.

<comment><USER25> My experience so far as a beta tester has been very positive, for what it's worth.

</comment></comment></comment></comment><comment><USER26> GeForce now has been great for me

</comment><comment><USER27> Oh good, the company that constantly bails on it's ventures is starting a new one in a space that is far from being realized still.

Seriously, if what's the goal? Being a supporting network for gaming infrastructure?

<comment><USER28> Google's promotion and incentive structure is built around launching products. This will launch, putter along for a couple of years and then get shuttered unless it's a surprise success.

<comment><USER29> If they make it work, Chromebooks just magically turned into gaming machines.

<comment><USER30> Chromecast, too.

</comment></comment></comment></comment><comment><USER31> "Sorry, this project is currently open in the U.S. only" can someone make images of the webpage, please. thank you

[https://projectstream.google.com/aco/location](https://projectstream.google.com/aco/location)

<comment><USER32> I tried, but it's also only for Chrome [https://i.imgur.com/xcqYdjA.png](https://i.imgur.com/xcqYdjA.png)

<comment><USER33> So following Google's gold-standard for accessibility then: both geo AND user- agent blocked.

How could it possibly fail?

<comment><USER34> Because it is a test. One would imagine they want to limit the scope initially and expand out as time (and gravitation towards being a full fledged product) allows.

This doesn't seem particularly shocking. Shadow just recently (I believe) opened an east coast data center which now allows for their streaming service to work on the east coast, so perhaps Google is only allotting their US data centers to support this (one would assume initially and that if it is a hit/worth continuing, it'd expand out). Chrome is their browser so either: a) they're wanting to keep support requests limited to things within their control (or at least, reduction of variables is important in the phase they're going). b) they're wanting to be a full fledged gaming platform so they're not interested in supporting others.

</comment></comment></comment></comment><comment><USER35> I hate that Google can pour money from its infinite ad revenue into other things and beat out competitors by virtue of being able to sustainably run unsustainable (for others) businesses.

EDIT: For people who are interested in this, I would recommend studying the history of AT&T, especially the 1956 consent decree.

<comment><USER36> The other player at the moment happens to be Amazon. So any competition is a good thing.

<comment><USER35> Amazon? Are you thinking of Twitch, because this isn't that.

Parsec, Paperspace, GeForce Now, Shadow, ...

[https://en.m.wikipedia.org/wiki/Cloud_gaming](https://en.m.wikipedia.org/wiki/Cloud_gaming)

<comment><USER30> Microsoft are also reportedly working on their own game streaming service.

</comment></comment></comment></comment><comment><USER37> In the old days, Google would have bought an existing player and scale it. Now seeing Google bootstrap this kind of mainstream business seems awkward. Also I personably am very doubtful of any new app/service that Google releases.

<comment><USER38> Google has always bootstrapped services, especially stuff from their 20%-time program. Orkut, Google Lively, Google Video, Wave, Google Offers, Google Health, and on and on.

</comment></comment><comment><USER33> Not to be overly negative, but _could_ they have come up with a less inspired and creative name than that?

"Project" also make it sound like a ongoing effort of sorts, and not a (finished) product.

<comment><USER2> I think you read it correctly. As described in the post, it's a "technical test", not a product.

The gap between a "test" and a product is huge. I don't think it's wise to dump resources into building a product based on unproven technology.</comment></comment>