The geometry of an electron determined for the first time - <AUTHOR> https://www.unibas.ch/en/News-Events/News/Uni-Research/The-geometry-of-an-electron-determined-for-the-first-time.html <comment><USER2> From reading the article, I think they mean "determined" in the sense of controlled. They changed the potential distribution in the electrodes, and the single-electron wavefunction changed in a controlled way. The "geometry" is presumably the spatial probability distribution, including the spin.

<comment><USER3> Yes and more they know the precise geometry (position) less they know about momentum

<comment><USER4> ... except that in the given context 'geometry' does not mean position.

<comment><USER5> Yes it does,from the abstract of the original article: "We show that in-plane magnetic-field-assisted spectroscopy allows extraction of the in-plane orientation and full 3D size parameters of the quantum mechanical orbitals of a single electron GaAs lateral quantum dot with subnanometer precision."

<comment><USER4> That can hardly be interpreted as talking about 'position.' Also, it helps to remember that 1 nanometer is about 10 atom sizes.

</comment></comment></comment></comment></comment><comment><USER6> IMHO the title is a little confusing.

What could be measured was the geometry of orbitals of electrons, not that of electrons.

<comment><USER7> Orbital is the form of wave function in atom, but here they are talking about free electrons confined in quantum dots.

<comment><USER8> Well, if they're confined they're not free. I guess they mean the spatial probability density (modulus squared of the orbital wavefunction in an atom, you might skip the orbital label if the potential is not central, but it's the same thing) of the electron in these artificial atoms. The title is misleading because the "geometry" of the electron is point-like (to all effects in this case).

<comment><USER9> It's free in the sense that it is not bound to an actual atom.

<comment><USER8> Free depends on the context. These electrons are in a potential well, they're in a bound state. Actual atoms are just an example of that. My point was that conceptually both situations are alike, as they are bound states you get discrete spectra (roughly speaking), if they were free particles you wouldn't. (Maybe those levels happen to be very close, but that's a different story. In principle the _artificial atom_ name makes sense and talking about orbitals is not a bad analogy.)

</comment></comment></comment></comment></comment><comment><USER10> I thought the geometry of electron orbitals was that of spherical harmonics? Platonically beautiful, emperically validated, etc etc.

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

<comment><USER11> The article is referring to confined free electrons, no nucleus and therefore no orbitals involved.

<comment><USER12> In other words: different charge distribution, different potential, diffetent resulting wave functions.

</comment></comment></comment><comment><USER13> This is a fascinating notion to me, and while generally I get things I have no idea what foundation I would need to understand this. What exactly is going on?

<comment><USER14> The scale of this experiment is pretty big in quantum terms, so a semi- classical explanation is not inaccurate. The electron is behaving like water filling a bowl. The height of the bowl floor represents how much potential energy the electron needs to reach that point in space.

Suppose that the bowl is invisible, and detailed knowledge of its shape is of scientific interest for one reason or another. Here, it's interesting because they want to fine-tune their ability to spatially and electromagnetically control individual electrons so that they can explore "spintronics".

One way to measure the shape of the bowl is to measure the shape of the electron "fluid" filling the bowl. They've developed some technique for doing that. I haven't read the details.

That only gives you information about the bottommost part of the bowl, where the fluid lies. By applying voltages to the electrodes, the authors can raise the potential energy needed for the electron to hang out at one end of the bowl relative to the other. This effectively tips the bowl, and the electron "fluid" re-distributes itself, allowing them to measure the shape of the bowl at locations other than the bottom.

That's all I get from the article. You'd have to read the linked original paper to learn more. A traditional undergraduate series in classical mechanics, electromagnetics, waves, and quantum mechanics is very helpful, but cutting-edge research is never communicated in the same terms that are used in undergraduate teaching. There are going to be some jargon barriers no matter what. Happy reading!

</comment></comment><comment><USER15> As other commenters have noted, the title is mildly annoying. Electrons are structureless, one of the most beautiful facts about nature. Euclidean points actually exist all over. And have spin. :-)

Why try to sex that up? Already sexy.

<comment><USER16> Are you sure they are structureless, or is that just based on the accuracy by which we can measure this?

<comment><USER17> They're theorized to be fundamental particles. Nothing smaller exists within them. There's no nuclear decay of or fusion which produces electrons. Similar to how photons are quanta of energy.

Edit: clarified that electrons don't decay. Of course things decay into electrons plus other things.

<comment><USER18> Er ... there are lots of nuclear decays which produce beta particles electrons. Neutrons have a short half-life when free of a nucleus, and decay into a proton, electron and an electron anti-neutrino (to conserve momentum). [1]

Electrons are posited to be fundamental, and e-e e-e<sup>+</sup> collisions haven't, as far as I know though well outside my original field of study, produced any data suggesting internal structure.

This doesn't mean that they don't have structure, we simply have no theory (that I know of, but then again, I'm a former solid state guy) that predicts structure, nor do we have sufficiently powerful colliders to get us to a point to see such structure.

[1] [https://en.wikipedia.org/wiki/Beta_decay#%CE%B2%E2%88%92_dec...](https://en.wikipedia.org/wiki/Beta_decay#%CE%B2%E2%88%92_decay)

<comment><USER17> Thanks, I tried to clarify that.

</comment></comment></comment></comment></comment><comment><USER19> I found the article uninformative - nowhere in it could I find a picture of this "geometry". The incomprehensible diagrams were nice, but only because I collect that sort of thing.

</comment><comment><USER20> Open access paper here: [https://arxiv.org/pdf/1804.00162.pdf](https://arxiv.org/pdf/1804.00162.pdf)

</comment><comment><USER21> Now if only we can discover what they want. Also their favorite color would be nice.

But aside from the poor title, this is incredible work.</comment>


Thoughts on RMS and GNU - <AUTHOR> http://wingolog.org/archives/2019/10/08/thoughts-on-rms-and-gnu <comment><USER2> I think this post does RMS no justice, since it adds even more straw men to the ones already spread.

> RMS started GNU so RMS decides what it is and what it can be.

That would be in contradiction with the GNU principles RMS wrote himself.

> I don't think RMS has the legitimacy to tell this group of largely > volunteers what we should build or how we should organize ourselves.

That would be in contradiction with the GNU principles.

> the best thing that he could do for GNU is to stop pretending to run things

Did he pretend he "run things"?

> He does hold a role of accepting new projects into GNU

That's one thing he says he does.

> [link about the "_were_ Entirely Willing"]

The part before "Entirely Willing" was not "were". It has been discussed several times that that's the opposite of what he actually wrote.

> The great tragedy of RMS's tenure in the supposedly universalist FSF and GNU > projects is that he behaves in a way that is particularly alienating to > women. It doesn't take a genius to conclude that if you're personally > driving away potential collaborators, that's a bad thing for the > organization, and actively harmful to the organization's goals: software > freedom is a cause that is explicitly for everyone.

> The result, sadly, is that a significant proportion of those that have stuck > with GNU don't see any problems with RMS.

I don't see any problem with RMS because I plan to never interact with him nor with the many other people I don't like while still having the chance to give my (very) small contribution to GNU projects, which I consider a just cause. The reason I can do that is because I know that even if the author is a dick the contribution I'm making will be bound to the GNU principles.

> it has also had the unfortunate effect of creating a cult of personality and > a with-us-or-against-us mentality. For some, only a traitor would criticise > the GNU project. It's laughable but it's a thing; I prefer to ignore these > perspectives.

Indeed it's laughable (and in contradiction with GNU principles, btw).

> no gods! No masters! No chief!!!

I agree, but seems like another straw man to me.

<comment><USER3> I think most of the statement you posted were not strawmen, but summaries of actual arguments made, followed by a response.

Eg, you quoted "RMS started GNU so RMS decides what it is and what it can be", which is an argument I've heard, and which the author says "many (most?) GNU developers that still consider RMS to be GNU's rightful leader."

You replied "That would be in contradiction with the GNU principles."

The author seems to agree with you. So, what's the strawman?

You write "Did he pretend he "run things"?"

I believe that's what Stallman intended when he wrote "I am still the head of the GNU Project (the Chief GNUisance), and I intend to continue as such." at [https://lists.gnu.org/archive/html/info- gnu/2019-09/msg00008...](https://lists.gnu.org/archive/html/info- gnu/2019-09/msg00008.html) .

<comment><USER2> > So, what's the strawman?

It was RMS that wrote those GNU principles so I'm assuming he agrees with us as well. I see the straw man in saying that it's RMS fault if "many (most?) GNU developers [...] still consider RMS to be GNU's rightful leader". That's the opposite of GNU's, and therefore his, objectives.

> I believe that's what Stallman intended when he wrote "I am still the head > of the GNU Project (the Chief GNUisance), and I intend to continue as such."

When we agree between us that he does not fire people that do not consider him the head of the GNU project, does not code, does not design software and therefore does not "run things", Stallman also agrees. He never said he does these things.

What RMS said instead is:

\- he would like to be called GNU's "head", whatever that means

\- the work he wants to do as GNU's "head" is to act as a guarantor for new projects to be included inside GNU and spend time advocating for free software

I think the reason is he wants to contribute too and considers himself the better candidate for these tasks. I don't know if that's true, but the fact he believes to be indispensable to GNU it's probably not.

<comment><USER3> Where is the claim or implication that it's RMS's fault?

Just because some people have a belief - which is what the author wrote - doesn't mean that RMS caused that belief.

<comment><USER2> > Where is the claim or implication that it's RMS's fault?

Where he says Stallman is "pretending" to run things.

<comment><USER3> I've been staring at the text trying to see the strawman argument, and have failed.

The author asserts that many GNU developers consider RMS to be GNU's rightful leader. The author asserts that that Stallman is pretending to run things. I can see that the author can be wrong. I don't see where it's a strawman.

BTW, "The Tyranny of Structurelessness" at [https://www.jofreeman.com/joreen/tyranny.htm](https://www.jofreeman.com/joreen/tyranny.htm) is relevant. A social group with "an apparent lack of structure too often disguise[s] an informal, unacknowledged and unaccountable leadership that [is] all the more pernicious because its very existence [is] denied." (quoting Hilary Wainwright at [https://en.wikipedia.org/wiki/The_Tyranny_of_Structurelessne...](https://en.wikipedia.org/wiki/The_Tyranny_of_Structurelessness) ).

If Stallman doesn't "run things" at least to some extent, then what decisions is is referring to when he writes at [https://lists.gnu.org/archive/html/info- gnu/2019-10/msg00005...](https://lists.gnu.org/archive/html/info- gnu/2019-10/msg00005.html) :

> "I would like to make incremental changes in how some decisions are made, > because I won't be here forever and we need to ready others to make GNU > Project decisions when I can no longer do so."

<comment><USER2> I may be wrong as well, but here's another attempt to explain myself:

1\. (If I understand correctly) Straw man is when you say someone supports an argument he actually doesn't

2\. (If true, I don't know) Developers say he's the rightful "leader", but their definition of leader can't be the one Wingo says it means for them. The GNU licenses forbid that.

3\. Stallman also has a definition of "successful GNU leader" that is not the one Wingo believes in: we know because he invented it, implemented it and considers himself successful

4\. We know that Wingo believes Stallman shares with him his own definition of leader because Wingo claims that Stallman needs to pretend to do things he doesn't to continue being considered successful

> If Stallman doesn't "run things" at least to some extent, then what > decisions is is referring to when he writes at > [https://lists.gnu.org/archive/html/info- > gnu/2019-10/msg00005...](https://lists.gnu.org/archive/html/info- > gnu/2019-10/msg00005..). :

Surely not ones that go against GNU licences, since licenses are legally binding (in theory) in guaranteeing that software, developers and users keep their "freedoms" and are not a matter of any leadership, be it GNU leadership or any other.

Your link is interesting, I'll read it tomorrow, but at least for me the reason I care about GNU is not to be a part of a group but the opposite. I dislike being around most people, from my point of view distrust is a virtue. But as an individual, if it's part of a GNU project I can still contribute to build something that is both ethical according to my values and bigger than I could achieve alone. It's a way to contribute selectively only when I know that, once in a while, I agree with what those people are doing.

(It's not like I have developed a dislike for Wingo now, I admire him and his work even if I don't agree with the fact Stallman has had a greater negative impact then the false claims made against him in the past)

<comment><USER3> Wingo is responding to an argument that could be made by some readers, and which Wingo believes is asserted by "many (most?) GNU developers". He does not believe it to be a valid argument.

Under your definition of straw man (which I believe is incorrect; see [https://en.wikipedia.org/wiki/Straw_man](https://en.wikipedia.org/wiki/Straw_man) ), it would be a straw man only if so few people were presenting that argument that it doesn't make sense to even bring up, in order to reject it.

I believe there are enough people who believe that Stallman is the leader of the GNU project that it's worthwhile to bring up.

I think a "strawman argument" is more like one where I point out that Stallman says he is involved in making GNU project decisions, and ask when those decisions are, then you point out that he cannot be involved in making GNU license changes which break legally binding obligations.

The structureless essay has come up many times before on HN - search the archive for comments.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER4> I hear all these thoughts and feelings on RMS lately. For some reason not as many on Free Software.

Wonder what it will be like in, say, 5 years.

</comment><comment><USER5> could everyone who makes up GNU who don't like RMS just fork it and work on that instead?

<comment><USER6> > could everyone who makes up GNU who don't like RMS just fork it and work on > that instead?

Three possibilities:

1\. RMS steps down. The project stays together but loses one pesron who "...does not write software...does not design software, or systems."

2\. RMS refuses to step down. People who don't like his leadership stop developing on their current projects entirely.

-2a. This is a relatively small number of people; the project continues, but they have at least a dozen fewer people who _do_ actually write and/or design software.

-2b. This is a large number of people; the GNU project is crippled or becomes untenable.

3\. RMS refuses to step down. People who don't like his leadership fork the project.

-3a. This is basically everyone. This is similar to 1, (or a combination of 1 and 2a), but with a branding change (similar to OpenOffice -> LibreOffice, or Xfree86 -> Xorg).

-3b. This is about half the people. Both projects subsequently struggle to find the labor to continue operating; this is similar to 2b.

-3c. This is a minority of people; the new project struggles and eventually dies. This is similar to 2a.

Even though 3a would work, it's sub-optimal; but there's a significant risk of 3b. 1 is the best option if possible, so it's obviously the option to try first.

</comment></comment><comment><USER7> I can see the purpose of GNU in the 80s and most of the 90s, but really now that anyone can post any project online and setting up a project page is as easy as downloading Fossil and throwing it somewhere[1], what function does GNU serve?

[1] I mention Fossil because it is trivial to setup, Gogs, GitLab, etc would be others, in order of overall increasing complexity.

<comment><USER8> I think it's a legitimate question to ask, and I think it's a question some GNU devs have been asking. If GNU is just a loose collection of whatever software people offer up to the "brand" in exchange for some old-school hosting services and giving absolute veto power to RMS, then there really isn't much purpose to it, and unfortunately that's what GNU feels like these days. It doesn't have to be this way. We'll see what happens, I guess.</comment></comment>


In 2010 China will become the world's second-largest economy - <AUTHOR> http://www.economist.com/daily/chartgallery/displayStory.cfm?story_id=15096188&source=features_box4 <comment><USER2> I'm extremely worried about China's real estate bubble. Chinese labourers are working their asses off, while factory owners crop most of the profit. These money is pours into real estate market. Today an apartment is worth 30X anual income of an average worker(my estimation). Hope when I finish grad school in US and go back, I don't have to pay this much.

<comment><USER3> Not until China relaxes its exchange controls. As long as the RMB can't get out of the country to investments offering higher return, there's nowhere else for it to go.

</comment></comment><comment><USER4> In the USA, a (somewhat) free country where open debate and some level of government transparency is maintained, the "official" government numbers are 10% unemployment.

Actual unemployment is closer to 22% (according to shadowstats.com, using the pre-Clinton Administration formula).

Aside from this article referencing their own "Economist Intelligence Unit" - how do we know the numbers are not similarly fudged by the Chinese government? Are there not billions of dollars of loans marked as "good" on state-run banks that are in fact, never going to be repaid?

</comment><comment><USER5> There's a pretty interesting analysis of China's current investment boom: [http://www.pivotcapital.com/reports/Chinas_Investment_Boom_t...](http://www.pivotcapital.com/reports/Chinas_Investment_Boom_the_Great_Leap_into_the_Unknown.pdf)

It argues that China's investment boom is not going to continue and that private consumption cannot possibly fill the void. They think the bubble is going to burst in 2010/2011 and they have pretty convincing numbers. I'd love to hear why they are wrong.

<comment><USER6> I don't have the data to respond to this entire paper, especially on big stuff like GDP ratios, etc, but an important part of their argument stuck out as shaky to me.

The paper argues that China's urbanization rate is already much higher than is commonly believed, due to China's definition of an urban centers. It notes that Houston or Brisbane would not be counted as cities, due to low population density. But, as a Chinese resident, I don't find it unreasonable at all that Houston wouldn't be counted as a city here - Houston, w/ a population of 2.2m and a density of 1375 people / square kilometer, is dwarfed when you compare it to a dense city of 11+ million like Tianjin, which is considered a bit of a hick town here in Beijing.

It seems unreasonable to use American standards for the definition of a city when China's population to usable land ratio is much higher than is frequently encountered in the West.

<comment><USER5> I didn't find the population density comparison very convincing either. But the main point they are making is that not as many people as expected by the financial community are going to move to more urbanized centers in the years to come. Their argument would be more convincing if it was based on economic opportunity instead of population density though.

</comment></comment></comment><comment><USER7> What I find interesting about this is how China is predicted to have almost double the US's GDP by 2050, but GDP per capita tells a different story: US GDP/capita will be double China's in 2050. Then some good debate on whether an authoritarian mixed economy can allocate its GDP more effectively than the US's democratic mixed economy. Which will define the next 40 years? Aggregate or per capita GDP?

<comment><USER8> one implication of the above is: by 2050 china will be able to spend twice more than the us in military spending, and afford having four times more soldiers/manpower than the US (as costs of personel would be twice lower).

hmmm.... new superpower indeed, in paper at leas

</comment></comment><comment><USER9> According to the Telegraph: [http://www.telegraph.co.uk/finance/economics/6890189/Chinese...](http://www.telegraph.co.uk/finance/economics/6890189/Chinese- economy-overtakes-Japan.html) , China's statistics bureau recently revised their economic growth statistics for the past year. That would mean that China already overtook Japan as the world's second largest economy at some point in the last 6 months.

</comment><comment><USER10> So... when does YC China launch? :-)

<comment><AUTHOR> We're still trying to grow YC within the US before we think about expanding to other countries. We're still learning.

<comment><USER11> I think it'd be great if YC can go to China. The growing economy and market, the huge talent tool, super low cost of labors and office. It works very well with YC philosophy.

One downside is Chinese government's tight control on internet.

<comment><USER12> The downside you mention becomes a central issue these days. The recent launched cntv.cn is a good example when the national TV in China attempt to take a big share from Internet VOD business (hulu model). To launch the site, they first use their popularity to fire bullets on other video sites for reasons such as adult content, copyright content or unauthorized content (every imported video has to be censored or it is illegal in China, the rule actually causes recent trouble in WTO). Under this pressure, many sites are closed.

The argument is, like what China did to its steel/telecom/coal business (FYI, are controlled by the nation itself). It tries to gain control on Internet, not only in management standpoint but actual business (nationalization). A more interesting view is that as most children of China's high level officials are in their 20s. They are likely to do Internet related business. Well, powerful parents bring benefits. It is not bad or unfair and it is understandable worldwide. But using your parents' money and relations to build business is millions light years far from what they do today in China. For example, Li Hehe, the son of Li Zhaoxing (former foreign minister of China) established a SNS website called 99sushe (<http://99sushe.com>). He actually uses his father's relation to have everyone who attend national English test (known as CET-4, required for college graduation) to register on his site in order to review their scores (<http://cet.99sushe.com/>). I see it as a classic abuse of their power. Far worse, to my knowledge, it is only a beginning.

YC is a institution which only provides a little money, good atmosphere, relations and access to first tier VC and law firms. Good lawyer, enough money and a brilliant you, that is the only things you need for doing "free" business in open countries (EU or U.S.). But in China, you need to build relations with high level officials. For a UGC site, you have to hire a person to delete contents immediately when the Internet cops phone you. It is just not economical for startup. But unfortunately these are crucial for your business success in China, and these are something YC China (in my imagination) cannot provide.

</comment></comment></comment></comment><comment><USER13> Congrats! About time too!

They're nearly 1/6th of mankind. It's just amazing how such a large number of people can pull themselves out of the most wretched kind of poverty.

Indias and Africas of the world should take note.

</comment><comment><USER14> It's already the largest non-democratic economy, for what that's worth.</comment>


Ask HN: Is HN user interface ever going to be updated/improved? - <AUTHOR>

<comment><USER2> I use [http://gabrielecirulli.github.io/hn- special/](http://gabrielecirulli.github.io/hn-special/) because it has a better interface and infinite scrolling.

<comment><USER3> I just installed it, it does look better.

</comment></comment><comment><USER4> It is taking some time for to get used to it, but it is simple (ok, it is ugly) and seems to work...

and harckers are not handsome anymore...

</comment><comment><USER5> If it's not broken, don't fix it.

</comment><comment><USER6> I think old is gold!

</comment><comment><USER7> Hey HN here is a link to the tech details: [http://blog.includesecurity.com/2014/02/how-i-was-able-to- tr...](http://blog.includesecurity.com/2014/02/how-i-was-able-to-track- location-of-any.html)</comment>


From 10 Hours a Week, $10 Million a Year - Plenty of Fish - <AUTHOR> http://www.nytimes.com/2008/01/13/business/13digi.html?pagewanted=all

<comment><USER2> I think you guys should give him a bit more credit. True, the interface is horrible, and yes, luck was definitely involved, but when you look beyond that, he managed to deliver a service that, in my opinion, filled the needs of many - a completely free of charge dating site. Many other dating sites are extremely limiting with respects to being able to contact people, often times not even letting users message each other without submitting to a monthly fee.

It may look like crap, and he may have used shady tactics to gain traction, but the guy is making $10 million a year. I'm sure most of you would put up with much more if the reward for doing so was so delicious.

<comment><USER3> I think we're too quick to attribute what we don't understand to just plain luck. I wouldn't underestimate Markus - running a site with 300MM page views per month single handedly is pretty impressive.

One quick observation: it's not an accident that some of the ugliest websites on the internet (MySpace, Craigslist) are also the most popular.

<comment><USER4> Well said. There is some research out there (sorry don't have time to re-look) which covers "Bad Design" and how it has worked well for some companies. Often I think people like these sites as they appear to be amateur and not run by some slick corporate

<comment><USER5> It's just that people have a different opinion of what good style is (a lot of people _love_ Comic Sans MS and websites with animated, blinking stuff).

</comment></comment></comment></comment><comment><USER4> One thing to note is that he ALWAYS looked at the business case. He realised that to be a "me to" wasn't going to work and so his model was to offer a completely free dating site and make money from advertising. Whilst others obsess with creating great design and how cool they are, this guy just created something that works. I think rather than being negative towards him, we should learn a lesson from him.

On some of the comments below regarding shady tactics, I can't speak for this as I don't know anything about the company. If this is the case, then it's not great, but from Rockerfeller to Steve Jobs this has sometimes been the way of it. I think if we can take some lessons from the good side - ie quick to market, novel approach to making money, and apply them to what we are doing ourselves then that's a good thing

</comment><comment><USER6> Do you suppose he had the foresight to register plentyofluck.com as well?

</comment><comment><USER7> "Mr. Frind says that close to 50,000 new photos come in every day, each one of which needs to be checked to verify that it is an actual person and that it does not not contain nudity."

of all the places for a double negative...

</comment><comment><USER8> It is hardly surprising that it only takes one person to run this kind of thing.

Everything they say he does was done years earlier (match.com and hotornot come to mind), but the technology needed for this kind of application hasn't changed in a decade.

Perhaps he's being a little disproportionately rewarded for his efforts but that's just good business. Also I'm sure he's helped make plenty of real people happy who could care less about how his site looks.

</comment><comment><USER9> Inspiring.

</comment><comment><USER10> File under: people with no taste who don't really deserve to be successful.

Even if you don't think "doesn't deserve" applies, still file under no taste.

If you want to be tasteless and really big, try getting an executive position in Wal-Mart or something.

<comment><USER3> Taste is not universal. This not PC, but there is a correlation between class and taste in design. The clean, uncluttered design appeals to the 'elite', but the masses just have different taste in things. There are reasons why CNN and Fox News look the way they do.

[http://www.graphpaper.com/2006/09-04_class-and-web-design- pa...](http://www.graphpaper.com/2006/09-04_class-and-web-design-part-1-the- class-struggle)

<comment><USER11> CNN.com actually is a beautiful site.

<comment><USER3> It is beautiful - part of my point.

<comment><USER11> Oh, I misunderstood. You were comparing the types of people who use CNN to the types of people who use Fox News. Got it.

</comment></comment></comment></comment></comment><comment><USER12> The power of SEO...

<comment><USER13> Why do you say that? Did he do a lot of SEO? Anything questionable?

<comment><USER12> He was definitely given an early boost by SEO. He talks in his blog about the SEO communities he was a part of.

<comment><USER13> How can I get an early boost from SEO? I read all the SEO blogs, but there didn't seem to be any advice beyond the obvious.

<comment><USER12> At the time Frind launched the first free dating site he was filling a large hole in the market. If you can find a gap that big to fill, SEO will take care of your company.

</comment></comment></comment></comment></comment><comment><USER14> Eat your heart out Timothy Ferriss.</comment>


Show HN: A 6KB, fast and mostly-correct XML parser in C - <AUTHOR> http://dev.yorhel.nl/yxml

<comment><USER3> This looks interesting. Is it brand new? I've seen parsers with similar names, but, of course, almost all short letter combinations containing xml have been used, so that's expected.

It doesn't allocate or buffer, so when it says that it verifies proper nesting, I assume that doesn't mean verifying that start tags and end tags have matching names. I think that would be impossible.

I've been looking for a decent C parser similar to this to try some experiments with. Dealing with XML can be dreary, but I like to try to think of how you might make an API that doesn't make your code suck. It would be at a higher level, so I might be able to use this.

It looks like you pass the parse function a character at a time. To be fast, you'd want to somehow encourage that to get inlined. I'm not sure how easy or possible it is when you put the function in a separate .c file. There would probably be ways to stuff everything into the header.

I'm interested particularly in parsers that don't buffer. It seems like a fundamentally more flexible and potentially better way to parse XML is by memory mapping and letting the VM do what it does best.

<comment><AUTHOR> It's new, yes. I wrote it about two months ago because I needed a parser and found the existing solutions too bloated.

> It doesn't allocate or buffer, so when it says that it verifies proper > nesting, I assume that doesn't mean verifying that start tags and end tags > have matching names. I think that would be impossible.

It does match start tags and end tags, and in order to do so it does, indeed, need a small buffer. However, the only thing that needs to be stored in this buffer is a stack of element names, and that rarely needs much space - <USER2> simple fixed-size buffer is sufficient. It can be safely allocated on the stack if the application wants to. See the documentation for the yxml_init() for more details. The "mostly-bufferless" part of the homepage refers to the lack of a complicated input buffer and the avoidance of complex buffer management for output where possible.

> It looks like you pass the parse function a character at a time. To be fast, > you'd want to somehow encourage that to get inlined.

The function is quite large. You can probably get it inlined when put inside a header file and when it's only called in a single place, and you may indeed see a performance boost. I haven't measured how significant such an improvement may be.

However, if performance is the primary goal (it wasn't for yxml), a completely different design would probably be better. Yxml needs to manage an explicit state object for each input character. For each new character it has to look at the state to know how it's handled, handle it, and then update the state for the next character. I was honestly surprised to see that yxml performed quite well in my benchmarks.

A more efficient design is probably the goto-based state machine approach that, e.g. ragel[1] can output. The reason I didn't go for that approach is that it complicates buffering. You either need to have the full file mapped into memory (not possible when reading from a socket or from a compressed stream), or you need to implement your own buffering and provide hooks so that the application can fill the buffer when it is depleted. The latter approach is used by most other XML parsers.

[1] [http://www.complang.org/ragel/](http://www.complang.org/ragel/)

<comment><USER3> I was interested in yours specifically because it's the only one I've seen that doesn't buffer (almost). You might as well drop the last little buffer and be completely bufferless. Then it will never cause an error or block, and you'll have no dependencies. If you want to support validation, make a higher- level interface to this and do it there. It will be just as easy.

<comment><AUTHOR> Hmm? The stack buffer in yxml will never cause parsing to block, and there's no added dependencies on... anything? I don't think that buffer causes any problems even on a size-restricted microcontroller that doesn't have malloc(). As long as you can find ~512 bytes or so of free memory you can parse a lot of files.

The only situation in which that buffer would cause an error is when the application used a too small buffer, or when the document is far too deeply nested or has extremely long element/property names. Both the maximum nesting level name lengths should, IMO, be limited in the parser in order to protect against malicious documents. Most parsers have separate settings for that, yxml simplifies that by letting the application control the size of a buffer.

The stack buffer in yxml is also used to make the API a bit easier to use. With the buffer I can pass element/property names as a single zero-terminated C string to the application, without it I would have to use the same mechanism as used for attribute values and element contents, and that mechanism isn't all that easy to use. (This is the one case where I chose convenience over simplicity, but I kinda wanted the validation anyway so that wasn't really a problem)

<comment><USER3> Ah. I have not yet looked too far into how yxml works. I never came up with a perfectly satisfactory solution to the zero-buffer problem myself, but you've hit on a lot of the things that make it a hassle either way. It's almost impossible to do a usable xml parser under the assumption that it will not buffer and it will not be guaranteed access to more than one character at a time. I started developing one like that based on a goto-driven state machine, but I stopped working on it, because the interface was going to be too inconvenient.

What I meant about blocking was blocking on malloc. It sounds like you're expecting the caller to take care of allocation?</comment></comment></comment></comment></comment>


How real simultaneous dual band Wi-Fi enables next-gen in-vehicle connectivity - <AUTHOR> https://www.embedded.com/electronics-blogs/say-what-/4460853/How-real-simultaneous-dual-band-Wi-Fi-enables-next-generation-in-vehicle-connectivity <comment><USER2> I've heard that we will not be able to have autonomous cars until 5G is everywhere. 4G is simply not fast enough to support any near real-time car to car communication.

<comment><USER3> 'If intelligent traffic management becomes a reality in future cities, more and more self-driving cars will appear on the road. To guarantee traffic safety, when a control command, braking for example, is sent to a car, the car must receive the command within 1 ms.

The latency of a 4G network cannot meet this requirement. With the latency of 4G network, a car driving at 100 km/h still moves 1.4 m from the time it finds a obstacle to the time when the braking command is executed.

Under the same condition, with the latency on a 5G network, the car will move just 2.8 cm, and this performance is comparable with the standard of an anti- lock braking system (ABS).'

From: [https://www.huawei.com/minisite/5g/en/defining-5g.html](https://www.huawei.com/minisite/5g/en/defining-5g.html)

<comment> crooked-v > To guarantee traffic safety, when a control command, braking for example, is > sent to a car, the car must receive the command within 1 ms.

> With the latency of 4G network, a car driving at 100 km/h still moves 1.4 m > from the time it finds a obstacle to the time when the braking command is > executed.

I'm a fan of self-driving cars, but I would never buy one that depends on an external network to know when to brake.

</comment></comment></comment><comment><USER4> So car-to-car communication is likely to be supported by industry before mobile-to-mobile communication is widespread. Based on cars requiring real- time, local data. Sad.

<comment><USER5> The only mobile to mobile communications that make sense _are_ widespread - WiFi direct and Bluetooth; both AirDrop and Airplay utilize WiFi direct. Peer to peer protocols on mobile is a great way to achieve horrible bandwidth, even worse latency and excellent battery drain. There are no benefits vs just using direct connections over ipv6 (where available). If you need local real-time data on a smartphone, just use a BLE beacon for low bandwidth or WiFi multicast for high.

Also V2V is vaporware that isn't actually needed for safe self-driving cars, because the cars have to safely interact with human-driven vehicles (the majority of cars on the road for the next 10 years).

<comment><USER6> > Peer to peer protocols on mobile is a great way to achieve horrible > bandwidth, even worse latency and excellent battery drain.

Is there some purely technical reason why this is the case, or is it mostly that nobody has bothered to make this efficient/fast?

<comment><USER5> Modern radios' high power efficiencies are achieved through multiple means; adaptive signal strength and low duty cycles are some of those. Both antennas being small and low on the ground means much lower RSSI, which causes higher adaptive transmission power and higher duty cycle due to lower SnR meaning lower bandwidth and increased retransmissions. Normally, device negitiates a paging interval at which it gets new data notifications from the base station. With multiple devices, you have to wake up N times as often because each of your N peers has a different paging time, and you'd have to also wake up even more for new peer discovery. Average one-way latency can't be lower than half the length of your paging period when your receiver is off times the number of hops to the target.

<comment><USER6> Thanks! aside from being informative, your comment gives me quite a number of specific terms to google :).

</comment></comment></comment></comment></comment><comment><USER7> I'm just waiting for the massive deadly accidents to happen when some teenager hacks the system and decides to have "fun".</comment>


Precise User Tracking Based on TLS Client Certificate Authentication [pdf] - <AUTHOR> http://tma.ifip.org/wordpress/wp-content/uploads/2017/06/tma2017_paper2.pdf <comment><AUTHOR> Abstract:

"The design and implementation of cryptographic systems offer many subtle pitfalls. One such pitfall is that cryptography may create unique identifiers potentially usable to repeatedly and precisely re-identify and hence track users. This work investigates TLS Client Certificate Authentication (CCA), which currently transmits certificates in plain text. We demonstrate CCA's impact on client traceability using Apple's Apple Push Notification service (APNs) as an example. APNs is used by all Apple products, employs plain-text CCA, and aims to be constantly connected to its backend. Its novel combination of large device count, constant connections, device proximity to users and unique client certificates provides for precise client traceability. We show that passive eavesdropping allows to pre- cisely re-identify and track users and that only ten interception points are required to track more than 80 percent of APNs users due to global routing characteristics. We conduct our work under strong ethical guidelines, responsibly disclose our findings, and can confirm a working patch by Apple for the highlighted issue. We aim for this work to provide the necessary factual and quantified evidence about negative implications of plain-text CCA to boost deployment of encrypted CCA as in TLS 1.3."

</comment><comment><USER2> related code, [https://github.com/tumi8/cca- privacy](https://github.com/tumi8/cca-privacy)

</comment><comment><USER3> TLS is for security, not anonymity.

<comment><USER4> Sure, but I think the interesting part here is more that with TLS it seems to introduce less anonymity compared to a connection without TLS

</comment></comment><comment><USER5> This is one of the things that's made me hesitant to deploy client-cert-based user authentication. I'm looking forward to TLS1.3, though.

<comment><USER6> I'm assuming it being better in TLS 1.3 follows from this provision?

> All handshake messages after the ServerHello are now encrypted.</comment></comment>


Ask HN: How to Overcome Programmer's Block? - <AUTHOR> Despite having just started a remote job (and acquiring more free time in the process) I struggle with the motivation to work on side projects. This may be because most of what I work on I rarely ever finish.
I don't have any issues with finding time to read, do my chores etc. However I feel a great sense of apathy about the idea of opening up my machine and starting a new project.
Will this pass in time? What have some of you done to reinvigorate your interest? <comment><USER2> What is your chief reason for wanting to do these side projects?

<comment><AUTHOR> To learn.</comment></comment>


Improving SSL certificate security - <AUTHOR> http://googleonlinesecurity.blogspot.com/2011/04/improving-ssl-certificate-security.html

<comment><USER2> _One could rightly point out that both of these efforts rely on DNS, which is not secure. Luckily we've been working on that problem for even longer than this one, and a reasonable answer is DNSSEC, which enables publishing DNS records that are cryptographically protected against forgery and modification._

This still wouldn't protect against the US government's recent misbehavior. If they actually seize the DNS records, then they can put their own certs into it, too.

I'm not familiar with the details of DNSSEC, so I don't know if it protects against scenarios like in China, where their government controls the DNS. If they can intercept the official DNS records and substitute their own, is there anything preventing them from substituting their own sites, and giving certs that match them?

<comment><USER3> The current certificate infrastructure already sits on top of DNS. If an attacker can control your DNS then they can get any CA to issue certificates to them because they can accept emails at that domain.

<comment><USER4> The current certificate infrastructure does _not_ intrinsically depend on DNS. No scheme is resilient against bad actors at the top of the hierarchy; yes, there are (bad) CAs who offer only DNS-equivalent security today. But that's not an SSL/TLS problem; it's a "we should delete CA certs for those CAs" problem.

<comment><USER2> Well, to the extent that a cert enables the browser to compare the site's name to its IP address, it is dependent on DNS.

</comment></comment></comment></comment><comment><USER5> Wouldn't it be great if some (smart, enterprising, generous) person could produce a browser extension to leverage these approaches for those that might find typing "openssl s_client -connect..." into a UNIX prompt a little bit much?

Another idea: Schneier writes: [http://www.schneier.com/blog/archives/2011/03/comodo_group_i...](http://www.schneier.com/blog/archives/2011/03/comodo_group_is.html)

"The safest thing for us users to do would be to remove the Comodo root certificate from our browsers so that none of their certificates work, but we don't have the capability to do that."

You certainly can do it manually (as one of the comments explains) but a sweet program that targets system keystores (Windows, Java, Mozilla, Chrome, Safari, any more?) might be a nice little project.

List of configurable CA DNs to remove? Regexes? Whitelist? Zap that "unknown origin" mozilla cert whilst you're there perhaps?

I don't have bandwidth, these thoughts are free to steal :)

</comment><comment><USER6> Do I understand correctly: With DNSSEC the bar will be raised because the registrar of a specific domain will need to be compromised to change the DNS entries? So some misc country's CA that ends up trusted for whatever reason will not be able to sign records for another TLD?

<comment><USER7> Yep this is correct. See the note about "exclusion" on <http://www.imperialviolet.org/2010/08/16/dnssectls.html>

</comment></comment><comment><USER8> This can't work. There are pages on the internet that google does not see and should not see. And the proposed solution (centrally managed TXT records) would not work for those pages. Also, it only moves the problem from the CAs to google.

</comment><comment><USER9> Off topic: but I have been unable to use my Gmail accounts for the last two days because Thunderbird warns:

      You're about to override how Thunderbird identifies this site.
      Legitimate banks, stores and other public sites will not ask you to do this

      ..
      Certificate belongs to a different site, which could be ID theft

etc, etc.

Has Google changed anything? what could trigger this? I can't find anything in .. Google.

<comment><USER3> Please email me (my username at chromium.org) with the output of `openssl s_client -tls1 -showcerts -connect imap.googlemail.com:993` as well as any proxy settings, maybe a packet trace etc.

<comment><USER9> Sent, from the same email address as the one in my profile.

Thanks :-)</comment></comment></comment>


The Ghost Cities Of China - <AUTHOR> http://www.businessinsider.com/pictures-chinese-ghost-cities-2010-12?slop=1#slideshow-start <comment><USER2> In case you stumble across this item and find it interesting, this later duplicate submission has got some comments:

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


Banking on the Cold War - <AUTHOR> http://bostonreview.net/print-issues-war-security/nikhil-pal-singh-banking-cold-war <comment><USER2> Democracy and Communism share their biggest flaw though, in that both systems invariably succumb to the greed of the individual, to the cult of Capitalism itself. And when more than half the federal revenue of the USA comes from selling weapons, I'd say those betting on the Cold War indeed got swell returns, because greed is totally predictable.</comment>


Show HN: React-site, an imperative static site generator powered by Browserify - <AUTHOR> https://github.com/fiatjaf/react-site <comment><USER2> And where is the static about rendering some text, a f*cking char array, via megabytes of interpreted code?

<comment><AUTHOR> Well, you could begin by questioning why did your comment needed megabytes of interpreted code to be written in the first place.</comment></comment>


Open Innovation Marketplace - marketplace for challenging problems - <AUTHOR> http://gw.innocentive.com/ar/challenge/marketPlace

<comment><AUTHOR> Came across this site which might interest other hackers. Entities (companies, individuals, non-profits) list a particular problem they would like solved and offer an award for the solution. Some examples:

"The Seeker is looking for a low cost outdoor localization system that can guide a robot with high accuracy in a residential property that includes obstacles, defined or not defined" <http://gw.innocentive.com/ar/challenge/8507361></comment>


Show HN: MAWD – Simple web accessibility testing for developers - <AUTHOR> https://myaccessible.website/detective <comment><USER2> Thumbs up for making the web more accessible! I was fortunate to work on a project with a WCAG AA requirement for the last 1.5 years, so I can only imagine how overwhelming is must be for people outside this area to make their sites accessible.

> MAWD is designed to pick up 100% of the issues with a site, but she needs > your help to do it.

> 4 WCAG criteria fully tested. 22 different tests

There are 4 WCAG _principles_ with 12-13 guidlines, each having at least one success criteria. There are about 60 success criteria, so 22 different tests are far from 100%. I've also encountered many subjective decisions and screen reader quirks. It's probably much better than fully-automated tools (like pa11y or axe), but it still takes a lot of experience to find and fix all accessibility issues. I suggest lowering the "100%" claim.

</comment><comment><AUTHOR> This is a very spammy comment, but if anyone is interested but it's not a good time to sign up, you can sign up to my (totally not spammy) mailing list and get an accessibility poster as a bonus: [https://myaccessible.website/subscribe](https://myaccessible.website/subscribe)

<comment><USER3> This link should be somewhere on the page - I didn't want to sign up to a beta but wanted to be notified about updates and couldn't see where to.

<comment><AUTHOR> Thank you - I will add this in.

</comment></comment></comment><comment><USER4> It'd be useful to see a sample report before signing up. It doesn't have to be a form where I put my own site URL in, it can be some representative examples, but just so I know what I'm buying into. The wall of text is fine – it gives plenty of information – but proof's in the pudding.

<comment><AUTHOR> Thanks for the feedback! I'll work on getting this added to the page, I understand where you're coming from there

</comment></comment><comment><USER5> This website has a section with good (and free) tools for accessibility: [https://progressivetooling.com](https://progressivetooling.com)

</comment><comment><USER6> I just received this email from you:

>I'm going to send you a few emails over the next couple of weeks to give you some hints and tips.

Yeah, so I just marked your email address as spam. I never subscribed for any newsletter and there isn't any unsubscribe button either in your mail nor your website. Just stop.

</comment><comment><USER7> The robot image on the home page doesn't have any alt text. Not a good start for an accessibility checking service.

<comment><AUTHOR> The image is basically there to be decorative. In that scenario, an empty alt attribute is used to inform assistive technology that yes, there is an image here, but it isn't adding any further information. It's actually one of the main things that MAWD helps with right now.

Putting alt text on all the images of random cats on a website only adds value to people if the cats are at all relevant to the content :)

[https://www.w3.org/TR/2016/NOTE- WCAG20-TECHS-20161007/H67](https://www.w3.org/TR/2016/NOTE- WCAG20-TECHS-20161007/H67)

<comment><USER8> Wouldn't adding role="presentation" be good for an image that is purely for decoration?

</comment></comment></comment><comment><USER9> Does it work for web applications having most of their content behind an auth wall?

<comment><AUTHOR> Yes, because it captures the data using a Chrome Extension. You have to navigate to the page and use the extension to capture the data. This means it works on sites that aren't even on the public internet, localhost, you name it.</comment></comment>


8 Creativity Lessons from a Pixar Animator - <AUTHOR> http://zenhabits.net/pixar/

<comment><USER2> You should probably change the title and drop "8", per the guidelines.

[http://ycombinator.com/newsguidelines.html](http://ycombinator.com/newsguidelines.html)

 _" If the original title begins with a number or number + gratuitous adjective, we'd appreciate it if you'd crop it. E.g. translate "10 Ways To Do X" to "How To Do X," and "14 Amazing Ys" to "Ys." Exception: when the number is meaningful, e.g. "The 5 Platonic Solids.""_</comment>


Facebook Flux – Application Architecture for Building User Interfaces - <AUTHOR> https://github.com/facebook/flux <comment><USER3> It's great to see Facebook releasing code for Flux. Hope to see more in the future. Here are some other implementations of Flux for anyone who's interested: [https://github.com/BinaryMuse/fluxxor](https://github.com/BinaryMuse/fluxxor) [https://github.com/jmreidy/fluxy](https://github.com/jmreidy/fluxy) [https://github.com/yahoo/flux-example](https://github.com/yahoo/flux-example)

We recently adopted this architecture for a medium-scale project. The unidirectional data flow has greatly reduced code complexity for us. We're still not satisfied with our server syncing strategy. Seems like actions are the best place to sync data, but how do you deal with interdependent actions?

<comment><USER4> I'm the author of Fluxy and would be happy to answer any questions here. The big benefits of Fluxy vs other Flux approaches is that 1) Stores are built on top of immutable data structures (via ClojureScript / mori) 2) Server side rendering is baked in (or will be as of 0.4)

I'd also mention [https://github.com/spoike/reflux](https://github.com/spoike/reflux) as an implementation.

<comment><USER5> I've been reading about ClojureScript/OM and mori. What example apps are online using either of them? This is what I've found so far.

ClojureScrpt/OM:

[https://github.com/swannodette/om](https://github.com/swannodette/om) (several examples linked)

[http://rigsomelight.com/2014/05/01/interactive- programming-f...](http://rigsomelight.com/2014/05/01/interactive-programming- flappy-bird-clojurescript.html) (flappy bird clone)

React+Mori:

???

<comment><USER4> Fluxy has an example of using React + Mori - although it's still a work in progress as Fluxy is developed.

[https://github.com/jmreidy/fluxy/tree/master/examples/todomv...](https://github.com/jmreidy/fluxy/tree/master/examples/todomvc- flux)

</comment></comment></comment></comment><comment><USER6> I'm still somewhat unclear on the point of the Dispatcher and Actions and they simply feel like needless indirection to me.

For instance, in the flux-chat app within the linked repo, the MessageComposer component calls `ChatMessageActionCreators.createMessage(text);` when the user press the enter key to submit a message.

To find out how that ends up affecting the application, you need to jump around more than a couple of directories to find out how it's all wired up.

I just cut out the middlemen and directly interfaced my Stores from my components. My Store then emits a change event as usual and other components that are subscribed to the change event than refetch their state. That part of Flux makes perfect sense to me. The need for Dispatchers and Actions don't.

To be fair, I didn't start looking into Flux until my app starting growing large enough that I started feeling the pain of my lack of architecture. The Stores and the event emitter solved my immediate problems. Perhaps if my app grows even larger, the Dispatcher may come in handy.

<comment><USER7> You are absolutely right that actions are just another level of abstraction that come with their own pain, and if the pain they bring does not relieve an even greater pain of not having them then there is no reason to introduce them yet.

In our app, we started feeling the growing pain of a laissez faire approach to internal comms. For us, a user interaction can generate multiple logical state changes in the app, and several related interactions can cause similar/identical changes to take place. So for us, "User Interaction->App Change" is a many-to-many relationship, and Actions help us to wire them together really well. Couple examples -

1\. Opening a modal with the detail view of the item. This can happen in several ways (a user click, onload, keyboard shortcut, app event), and it involves multiple steps (ui cleanup, fetching of more info, etc). Having an actions allow us to guarantee that when we want X to happen in the app, all necessary steps will be taken regardless of what causes X or in how many places.

2\. Capturing analytics. We log all key interactions for internal analysis, and some events simply do not belong in the store/ViewController/component, so we capture in within the relevant Action. Low-level events are captured within components (e.g. did they press the 'save' button or hit enter), while others are app-level actions (e.g. 'view details') and are captured within Actions. Bonus - as per the point #1 for us multiple user interactions can cause similar app changes, but by also capturing the event within Actions we can easily track all triggers - e.g. was the 'view details' caused by a clicking on a link, using a shortcut, or another app-level change.

3\. Refactoring. Most of the app UI is aware of only two things - Actions and (to a lesser extent) getState() of relevant stores. This means that as long as we keep the public interfaces of those two unchanged, we can refactor or even change the implementation as much as we need. Just last week we swapped the inhouse filtering/sorting implementation a for new one based on Crossfilter which caused a comprehensive rejigging of the stores' behaviours and methods, and because we kept the same public contract it had zero impact on the UI (besides a noticeable speed improvement).

Pardon the flawed comparison, but for us actions are useful in a similar way that interfaces or MVC controllers are useful - as long as you keep them lightweight and semantic, they provide predictable and reliable endpoints for the app regardless of what turmoil happens behind the scenes.

<comment><USER8> I'd be very interested in seeing some Crossfilter-based filtering store code. I've been working on a business application that needs to do quite a bit of filtering and hierarchical rollups, and I'd really like to start using Crossfilter for it so we can chuck the much more limited tool I whipped up when we started the project and get that speed boost you mention.

We're also starting to see a lot of the many-to-many relationships in actions you mentioned, which convinces me we need to work towards more of a Flux architecture (it wasn't out yet when we started this lo those many months ago).

<comment><USER7> I'd be happy to have a chat over Skype and share what we've done - just drop me a line to [redacted]

</comment></comment></comment></comment><comment><USER9> I previously spent time reading about Flux, watching the videos, looking at Flux libs like Fluxxor and it seems overly and unnecessarily complicated to me. The actions layer specifically seems unnecessary as it could be implemented at the Store / model layer. The dispatcher is an event queue system with support for dependencies.

To me it makes a lot more sense for React components to push an event directly onto a pubsub event queue which then dispatches accordingly. When data changes anywhere it fires an event that then passes new state to the top level React component. Most of the actions you do to data are boilerplate and can be greatly simplified from Flux.

What am I missing? Why is it so complex?

<comment><USER10> Seems like actions were designed to encapsulate update logic that doesn't belong in the store (e.g. update ordering when multiple stores are involved). A pubsub event queue wouldn't make this very easy.

</comment></comment><comment><USER11> The Dispatcher is not an event queue system, but rather a registry of callbacks. This is a significant difference. The callbacks may be invoked in a specific order, synchronously, so that dependencies between Stores are managed effectively. Stores declare their own dependencies -- the Dispatcher knows nothing of the internals of Stores -- through the use of the dispatcher's waitFor() method.

Yes, you don't absolutely need the ActionCreator helper methods. You could call AppDispatcher.handleViewAction() or even AppDispatcher.dispatch() directly in the View. But keeping these things separated out keeps the code nicely organized and keeps application logic out of the View. Additionally, I find it helps to maintain a mental model where the only way into the data flow is through the creation of an action, codified in the library of ActionCreators.

</comment><comment><USER12> It has a fine explanation of the pattern: [http://facebook.github.io/react/docs/flux- overview.html](http://facebook.github.io/react/docs/flux-overview.html) but what isthe reasoning in using this architecture? Or in pattern speak, what are the forces that this pattern is considering? I can't find a clear explanation about which problems is it trying to solve.

<comment><USER13> In larger web based applications, tracking down side effects becomes increasingly difficult with patterns that implement two-way data binding (observables) or ad-hoc injection. This also in part takes into account part of why React renders the way it does. With the flux pattern(s) along with React's rendering pipelines, you can have heavy data flows, with minimal side effects and a slightly easier time in terms of tracing the flow of data.

</comment></comment><comment><USER14> We've got a React Flux series[1] on egghead.io if you like video lessons.

\--

[1] [https://egghead.io/series/react-flux- architecture](https://egghead.io/series/react-flux-architecture)

</comment><comment><USER15> I've been using React quite a bit but haven't had a need for Flux. Using React to implement all of my UI concerns, combined with Backbone for easy to use persistence and modeling, has worked wonderfully for me. YMMV :)

<comment><USER16> I agree. The combination of Backbone models/collections and React views bound together by React.Backbone[1] so that the views automatically re-render after any changes to the models/collections has made the data-heavy application I'm working on surprisingly easy to develop.

The real issue I've been having React -- that I'd I like to see dealt with by a library/design pattern -- is dealing with transitions between view states. Re-rendering the view on any data change can result in very abrupt changes. For instance, my app displays multiple lists of items. When the user edits an item, that can result in the item suddenly disappearing from underneath their cursor to reappear somewhere else in that list, in a different list, or nowhere within view.

I've been able to handle each issue of this nature as it arises in an ad-hoc fashion, but I'd really like a more formalized way in React to say, "when attribute X changes, use transition Y to change from the old view state to the new one".

Does anyone know of an existing solution to this problem?

[1] [https://github.com/usepropeller/react.backbone](https://github.com/usepropeller/react.backbone)

<comment><USER17> Check this out: [https://github.com/andreypopp/react-router-page- transition](https://github.com/andreypopp/react-router-page-transition)

Not simply react but you can get the idea.

</comment></comment></comment><comment><USER18> A lot of this seems like it's just MVC, except what they call the "View" is a traditional MVC Controller (the UI element that handles user interactions and sends these to the Model), what they call the "Controller-View" is a traditional MVC View (something that gets notified when the Model changes and displays that change to the user), and what they call the Dispatcher is what traditional MVC calls the Model.

They write "Flux eschews MVC in favor of a unidirectional data flow", but MVC already _has_ a unidirectional data flow (Controller -> Model -> View). Is this just a case of those who don't understand MVC are compelled to reinvent it?

EDIT: Actually, the main addition over MVC seems to be that the Stores declaratively specify their relationships between one another (which are then resolved by the dispatcher), rather than the developer writing a specific Model implementation that explicitly orders the changes to related elements of the model. I'm a bit suspicious that this would be less explicit, and so harder to maintain, but maybe I'm wrong.

<comment><USER19> The main difference between Flux and MVC is the unidirectional data flow. In MVC, a controller updates a model which updates a view which again talks directly to a model that might invoke another view which again might cause a model update, and so on. In Flux, the only thing a view can do is to invoke actions on the top-level dispatcher. Furthermore, views are never partially updated, they are always re-rendered from scratch every time (like you typically do in the back-end).

<comment><USER18> But as I said, MVC already has unidirectional data flow. An MVC View doesn't make changes to the Model, so can't lead to cascading updates of other Views.

</comment></comment></comment><comment><USER20> Actual site for the project:

[http://facebook.github.io/flux/](http://facebook.github.io/flux/)

Seems to still be in flux.

</comment><comment><USER21> It's easy to integrate with Backbone if you want for this kind of architecture, as it already implements events and stores. I've found it requires _less_ boilerplate than the example in the repo.

<comment><USER22> I just wrapped up the initial version of a medium-size app using React. It was my first use of the library in production.

I had originally used Backbone.Model and Backbone.Collection in conjunction with React. But after reading about Flux on the React blog and watching the video explanation back in May, it only took me a week to replace all of my Backbone models and collections with Flux singleton-stores. Coupled with Andrey Popp's react-router-component[0] (now replaced by rrouter[1], I think?), I was able to remove Backbone from the project entirely.

I think that Flux is more flexible than Backbone. I really like the ability for a store to take on characteristics of both models and collections. It is also easy to combine many different external resources to compose the "one true source" of a particular type of data for many different components. I don't feel any particular need to bring back a Backbone dependency in future React projects.

[0] [https://github.com/andreypopp/react-router- component](https://github.com/andreypopp/react-router-component)

[1] [https://github.com/andreypopp/rrouter](https://github.com/andreypopp/rrouter)

<comment><USER6> First it was react-app-controller which was deprecated in favor of react- router-component which is now being deprecated in favor of rrouter.

At least Andrey add his reasoning for the latest deprecation in rrouter's documentation. Although the page regarding server-side regarding in the rrouter docs is empty :(

According to the docs "RRouter was developed to replace react-router-component and fix design flaws introduced by it." Maybe I'm just unfamiliar with the npm community but is it typical to just rename projects once they introduce breaking changes?

</comment></comment></comment><comment><USER23> We've been playing with this architecture. It makes testing a lot easier - <USER2> just shove data in where needed and things pop out the other end. It also forces us into splitting things up in a more sensible manner. Along with easier testing is easier reasoning.

That said, like most new architectures/frameworks finding a big example (not just a TODO app) is really hard. We are currently prototyping a big app using React/Flux and we find ourselves having to question ourselves a lot more than we'd like.

<comment><USER24> Is there any chance your code is public?

</comment></comment><comment><USER25> FB seems to be doing some amazing work trying to make the web a more tolerable UI platform.

Once we finally have a good, solid, stable UI building consensus in HTML5/JS, it'll not only be possible to use it for the web but for the desktop too via node-webkit / atom-core.

</comment><comment><USER26> How does this compare with FRP?

I've been thinking about this and concluding that React wouldn't benefit even a little from those FRP libraries and architecture, it is already quite functional reactive. Am I wrong?

<comment><USER27> React is not functional reactive by itself. Although there's no stopping people from integrating it with other FRP libraries.

<comment><USER26> Well, I know that.

</comment></comment></comment><comment><USER28> This looks very interesting, and if I'm not mistaken, slightly reminiscent of how apps are built with Om (using core.async for dispatch and atoms for storage).

</comment><comment><USER29> Excellent! Been waiting to see an "official" implementation of this. There's a lot of different information floating around about how Flux architecture "should be done", but I've been waiting anxiously to see how Facebook actually implements it/suggests it be implemented.

</comment><comment><USER30> So, does this make stores 'Flux capacitors'? (pretty pls)

<comment><USER31> Already tried, but they wouldn't go for it :) [https://github.com/facebook/react/issues/1811](https://github.com/facebook/react/issues/1811)

</comment></comment><comment><USER32> I know is stylized as "f.lux" but fuck man...

Why does big companies do that? Just recently Apple's Swift and now Facebook's Flux.

<comment><USER33> Flux (stylized "f.lux") refers to the awesome screen dimming/coloring software: [https://justgetflux.com/](https://justgetflux.com/) Completely unrelated, but I highly recommend it for anyone who stares at a screen for a living.</comment></comment>


Why we dropped Eclipse in favour of IntelliJ - <AUTHOR> http://plumbr.eu/blog/why-we-dropped-eclipse-in-favour-of-intellij

<comment><USER2> I use their stuff because of a good marketing plot.

Eclipse dropped PDT development, because they didn't have maintainers, VisualStudio and ZendStudio where to expensive. So the positioning of PHPStorm was in the sweet spot.

But I got used to the workflow now and can't stand other IDEs anymore haha</comment>


Juul's New Marketing Is Straight Out of Big Tobacco's Playbook - <AUTHOR> https://www.theatlantic.com/health/archive/2019/06/juul-big-tobacco-marketing/592174/ <comment><USER2> this article is extremely weird. juul is doing exactly what you would expect it to do if the product was completely safe. what is wrong with marketing your own safe product?

the article refers to "mounting evidence of health complications", but there is no high quality evidence showing that ecigarettes or non-tobaccco nicotine products are unhealthy.

actively opposing safe and effective alternatives to cigarettes will lead to a huge number of avoidable deaths. it's hard to see why so many journalists and public health professionals are so invested in the failure of ecigs as a product.

<comment><USER3> Indeed. Juul hasn't made any health claims so the clickbait title that they are copying big tobacco's playbook (when they are big tobacco now) is kind of silly.

It was also odd to read Juul's statements that they are an "alternative" for adult smokers but not intended as a cessation device. So they're for people who want to smoke cigs _and_ Juul? That seems strange. They're trying to fit themselves into a regulatory niche and not be seen as a quit device nor as smoking. That's kind of impossible.

<comment><USER4> > not intended as a cessation device.

> So they're for people who want to smoke cigs and Juul?

No, they want to wean smokers off cigarettes and have them continue using the Juul instead. Not a cessation device for nicotine, but for tobacco.</comment></comment></comment>


Qt 5.12 LTS Released - <AUTHOR> http://blog.qt.io/blog/2018/12/06/qt-5-12-lts-released/ <comment><USER2> If someone of Qt developers read this: please make sure that mirror system redirect only to the mirror servers that actually have the file. I'm in Vietnam right now and MaintenanceTool starting download from "mirrors.ustc.edu.cn" that just return "Not Found" error. Using VPN in different country helps to avoid it since it's using different mirror, but it's still annoying.

</comment><comment><USER3> The most important part for me:

> I'm really happy to announce that we will now fully support Qt for Python, > making all of the Qt APIs available to Python developers.

<comment><USER4> Yeah. Hopefully can make the switch from PyQt at some point. PyQt doesn't seem to get much love any more. Still worked well for my first bigger Qt project: [https://github.com/borgbase/vorta/](https://github.com/borgbase/vorta/) (an open source GUI for Borg backup for macOS and Linux)

Also: Anyone noticed that the tab background (QTabWidget) disappeared in 5.11. Maybe it's back now.

</comment></comment><comment><USER5> I was waiting for the new TableView for Quick Controls 2. Nice!</comment>


How to Get Girls to Become Engineers - Awesome Ad - <AUTHOR> http://www.slate.com/blogs/xx_factor/2013/11/19/goldieblox_commercial_rewrites_the_beastie_boys_urges_young_girls_to_pursue.html

<comment><AUTHOR> I remember seeing a kickstarter campaign a long time ago for this company. So cool that they're really making it work and doing a kick-ass job at it.</comment>