Redesigning Redux - <AUTHOR> https://medium.com/@ShMcK/redesigning-redux-b2baee8b8a38 <comment><USER2> The strength of redux is that all your interactions with it are through functions. Redux today is far better than the Redux of yesteryear thanks to things like ReSelect, Thunks, Sagas, Higher Order Components etc. All these things augment Redux, and they can do so because of Redux's open embrace of the humble pure function.

Once you commit to a config based approach, you're basically closing the door to a future you can't imagine yet. I'm so tired of this short-sighted obsession with configuration some developers seem to have.

I think the author has a myopic vision for where Redux should go.

<comment><USER3> > The strength of redux is that all your interactions with it are through > functions

I think it's the other way around: The greatest weakness of Redux is that (unnecessarily) message passing instead of function calls are used.

Why do a `store.dispatch({type: 'INCREMENT', value: 10})` when it could be a `store.count.increment(10)`? In basically all cases every action is handled by exactly one reducer so just let the reducer be an object with methods instead of a big switch function operating on string constants.

<comment><USER4> I missed the part where you explained why changing the reducer to an object with methods would bring any benefits, or what's bad about message passing (it seems to me off the top of my head that changing this would at the very least, break redux observable as it currently works)

<comment><USER5> > to an object with methods would bring any benefits

It lets static typing do a lot more work for you when using Typescript/Flow. Less to remember and less to break.

Message passing is a really useful _architectural_ choice because it lets you do powerful global operations. It's a lot crummier on the development ergonomics front.

<comment><USER6> You can already write interfaces for your Redux actions in TypeScript to get the benefits of static typing, so I'm not even sure that there would be an appreciable improvement if Redux used methods instead.

</comment></comment></comment></comment></comment><comment><USER7> While Redux is great because it enforces a single source of truth, the whole thing with "actions" and "reducers" in Redux is a huge source of boilerplate. In almost every Redux project I have worked on, developers bring in some weird scheme to reduce the boilerplate load of having to come up with a bunch of events when all that anyone wants to do is call some functions.

The fact that Redux forces you to use events to modify the store is a useless complication which has spawned reams and reams of crazy libraries like redux- thunk, redux-saga, standard action formats, etc. The craziest thing yet is Ducks: [https://medium.freecodecamp.org/scaling-your-redux-app- with-...](https://medium.freecodecamp.org/scaling-your-redux-app-with- ducks-6115955638be). This is a pattern which tries as hard as possible to make using events not feel like using events, by tying each event intimately to its listener.

This library is a step in the right direction, but wrapping Redux seems unnecessary. Here's a similar approach in 100 LOC: [https://github.com/didierfranc/react- stateful](https://github.com/didierfranc/react-stateful)

<comment><USER8> I share this sentiment. I always felt like Redux had the right idea (single store modified via actions), but the API was just making things unnecessarily complicated causing people to either write lots of boilerplate or come up with complicated workarounds.

Here's yet another similar approach, also in 100 LOC [https://qubitproducts.github.io/tiny- atom/](https://qubitproducts.github.io/tiny-atom/). Been using it for a year in a few projects.

</comment></comment><comment><USER9> > You don't need to understand what a "comonad" is to use jQuery, and you > shouldn't necessarily need to comprehend functional composition to handle > state management.

Is there a point to spreading this piece of sage FUD?

It should not be surprising that pure functions + immutable state results in fewer errors.

The "pattern" Redux asks you to use prevents you from shooting your leg off. If you've written a sizeable application that uses global, mutable state the benefits of Redux shouldn't be surprising.

My only gripe with this eco-system is that it constantly comes up with new names and concepts for things that already exist in the FP world. I agree that the math jargon is off-putting but so is having a dozen words for the same concept. I think the latter is worse.

The library described in the article feels less like an abstraction and more like a shuffling around of syntax. Useful but misleading with a title like, _Redesigning Redux_.

 _Update_ : s/grip/gripe

<comment><USER10> Coming from no math background I LOVE functional programming and would love to learn what words I'm using have existing math terms.

<comment><USER9> A functional programming rosetta stone? Sounds challenging and interesting!

<comment><USER10> Hah. I just meant maybe a blog post that maps the terms I use in JavaScript land with math land. Ie. "it's not a reducer it's a functormonadicfoobar"

<comment><USER11> [https://eloquentjavascript.net/3rd_edition/00_intro.html](https://eloquentjavascript.net/3rd_edition/00_intro.html)

Not exactly a blogpost but a nice reading, explains a lot of the functional programming terms and their mathematical analogs.

edit: s/slang/terms

</comment></comment></comment></comment></comment><comment><USER12> > Consider time_saved to represent the time you may have spent developing your > own solution

Developing your own solution is one thing, and developing your own solution that's as battle tested as a popular library is another.

Baking your own solution helps you understand the core problem that a library you could have used tried to solve. But generally speaking developers that tend to do that have difficulty learning top to bottom and favor bottom up approach which leads them to developing things from scratch. That's just a personal anecdote though.

There are cases were a developer has been using a library for a while and is experienced enough to come up with better solution and cleaner APIs but I'd argue that's not the common case.

Understanding other people's code/libraries is a skill worth mastering.

<comment><USER2> As far as libraries generally go, Redux is tiny.

[https://github.com/reactjs/redux/tree/master/src](https://github.com/reactjs/redux/tree/master/src)

The largest and most important part is CreateStore, but at 250 lines long (mainly comments), it's shockingly simple when you take a look at it.

</comment></comment><comment><USER13> Is Redux too complex? That's the central argument this article makes but I find it to be patently false. What drew me to redux was its simplicity: Abramov said from the beginning that it's not anything you can't code yourself, it just provides a thin framework around making changes to some base state object. Its main strength (to me) is that it forces developers to think about state changes as mutations rather than recreating a spaghetti state machine oneself.

<comment><USER14> It's too much boilerplate. In my current project, I have to describe one action 7 times:

      1. The constant var `const ACTION_NAME = ...`
      2. The constant's value `... = Symbol('ACTION_NAME')`
      3. The "action creator" function `const doAction = arg => ...` (extra creativity to add a verb here?)
      4. The action creator's return struct: `... => ({ type: ACTION_NAME, payload: arg })`
      5. The reducer switch clause `case ACTION NAME:`
      6. The container action to callback mapping `onClickThing: dispatch(doAction(42))`
      7: The jsx/component calling the callback `onClick={onClickThing}`

compare that to The Elm Architecture, from which redux is inspired AFAIK. An action only needs to be referenced in 3 places:

      1. The tag on the Msg type: `type Msg = ActionName arg | ...`
      2. The `case` pattern matcher in the update function
      3. The view sending said Msg/action

<comment><USER15> It's just javascript... when I'm writing a redux-backed app I will often abstract out commonly repeated patterns in action creators and reducers. Every project is different so I just wait until things start looking predictable and refactor. Not trying to be snarky, I just see this a lot at work; people seem to be locked in to the patterns used in the redux documentation and never attempt to rewrite it as they would any other part of their app. It's quite simple (especially if you are using ES6 with its destructuring assignment) to write a function that takes an action type and a function body that eliminates most of the boilerplate.

<comment><USER14> Actually, I agree with you and appreciate that redux doesn't force something like a framework on you. You have choice of (non-)immutability, async handling, organizing your code, or how to "wrap it up" like you suggest.

</comment></comment></comment></comment><comment><USER16> Nothing on this project solves the real problems and introduces different ones, like how to have a reducer respond to different actions. My quibble with React is that when you get into moderately complicated forms, you start sprinkling stuff all over the place to get the desired output. Take for instance the most popular form library, redux-form. It's very heavy on it's own way of doing things, and there's a lot of stuff you have to know about it to be able to read into what the hell is going on, and it's hard to keep shit in the same place. Reselect is also very heavy handed for what it does. I NEVER needed anything like reselect before redux, and it kinda went alright! In my experience, for any reasonable development with redux you have to introduce: reselect, redux-form, thunk, some sort of immutability (immutable or redux-orm), a sprinkle of compromises and plenty of boilerplate, or roll your own magic util functions (i actually rolled my own very similar stuff to rematch, for quick and dirty stuff). When you summarise all that, it's really not that simple anymore! By the time you get through all of that, you might aswell pick up angular with the added benefit of clearer best practices, nicer dependency injection (oh, but react calls it context so it's cooler!), familiarity and type safety.

It's kinda funny how redux succeeded with such heavy concepts, which is normally not the case. This is still a mistery to me.

Oh and don't get me started on HOC. Want a tooltip over your component? Sure, wrap it in tooltip HOC! Sooo much nicer than directives!

</comment><comment><USER17> This looks nice, although in Redux's favour is a large ecosystem of libraries that will work with it. This highlights a problem I still have with the JS ecosystem, which is relatively tight coupling between libraries. Of course many of these libraries could be glued together manually without too much work, but with the rapidly changing ecosystem and APIs for interoperability between libraries, and the obscurity of some of the libraries (Redux being a good example), this is often just not practical.

Compare this to Elm and the Elm architecture, and it seems worlds apart. Interoperability between libraries that all works in the same straightforward way, checked by the compiler.

It feels like the JS community made a lot of good decisions for the right reasons, but still ended up in a place that isn't great.

<comment><USER18> Babel is both the driving force of innovation and the cause of much of the fragmentation in JS. Babel allows you to use the latest language features and target the oldest environments. The trouble is that there's not a "right way" to package software to cover all of the deployment concerns. Code needs to work on Node going back several versions as well as browsers going back several versions. And for mobile/desktop websites, your code bundle size is extremely important. Rollup and Webpack 4 go a long way towards making this easier but it's nothing close to a "standard best way" to do it.

<comment><USER17> That's a good summary of the fragmentation and coupling in the build tools, but there's also the libraries themselves - React, Redux, React-Router, React- Router-Redux, etc etc.

</comment></comment></comment><comment><USER19> Seems kind of like replacing common functional patterns with esoteric configuration objects?

</comment><comment><USER20> I've never really understood the point of redux-thunk. But, then, I also don't use asynchronous actions _in my datastore_.

Asynchronous actions feel, to me, that they belong at the component layer where niceties such as spinners are being rendered, and then the backing store is updated with the results of the triggered action.

What drives people to put all of that into their store?

<comment><USER21> Thunk is not about storing async state in the datastore, it's more akin to multithreading in my opinion.

In backend, you might spin up a thread to do expensive operation like API access, and that thread has it's own database connection, to read and persist data.

With thunk, you dispatch a thunk-ed action to do expensive operation like fetching data from backend, and that action has it's own access to redux in form of `dispatch` / `getState` arguments.

In the end, my component calls `fetchData` function upon mounting. And the logic dealing with making multiple requests due to paging, or re-trying on errors then lives its own life inside a thunk action, independent from the component that spawned it.

<comment><USER20> How do you test the code being run inside the Redux store? How do you mock your API client?

<comment><USER21> A thunk action `fetchData` would return a `(dispatch, getState) => {}` function. You call that with `getState` that would return your fixtures, and verify that `dispatch` gets called as expected. For API, I use jest and mock out imported functions.

</comment></comment></comment></comment><comment><USER22> > _Is Redux more performant? No. In fact, it gets slightly slower with each > new action that must be handled._

This point is not revisited. What is the performance of Rematch in comparison to Redux? I mean I guess it's more or less the same, since it's essentially Redux with less boilerplate, but it would be nice to have an explicit answer to this.

</comment><comment><USER23> Can someone explain to me why someone would choose Redux over something like MobX ?

I feel like implements an action for each modification of state (or group of modifications) requires a lot of boilerplate code. In MobX, you treat your data tree as a separate entity, and simply modify it. The UI is automatically updated whenever it needs to.

Mobx isn't bad performance-wise, I think, since it only re-renders the components that are listening to the modified variables when a modification occurs.

The only advantage I see is being able to rewind the state store, which can be quite cool when debugging.

I have done some medium-sized application (only games), and I don't think I've run into any performance or readability problem with MobX. I've never done web apps with a team, though, but I don't think Redux would specially make it easier to work with other programmers.

<comment><USER24> > The only advantage I see is being able to rewind the state store

Another big one is being able to restore the state. In Redux, it's just one giant object that can be easily serialized and use in the future. With Mobx, I'm guessing you have to write deserialize logic for your various classes.

</comment></comment><comment><USER25> (To preface, I use React/Redux in all of my web applications. I think Redux is great for managing state.)

One thing I've never quite understood about Redux is why we are dispatching pure data instead of a function of state. This would remove the need for reducers, since your action _is_ your reducer. Something like this...

[https://gist.github.com/anonymous/a5d741c5dec81be61e0aa70820...](https://gist.github.com/anonymous/a5d741c5dec81be61e0aa708200b53d1)

Would this come with any drawbacks? I could see a large application having performance issues because of a large number of function allocations, but for small applications I don't see a downside, just a simpler API.

<comment><USER5> Now what you have is a global mutable state store instead of an "immutable" state store, as everywhere can change anything and tracking down what code does what is back to being nightmarish.

</comment></comment><comment><USER26> This article resonated with me fairly well. As someone who has had an extensive background in Rails and has more recently switched to 100% javascript, this kind of pattern is what the community needs. There's something to be said about getting up and running as quickly as possible. Sure you can make the argument that not everyone's application is the same, but there's a ton of similar patterns that would have been better suited to having less mental gymnastics with a simple config while still leaving the door open with FP for those that want to fine tune.

</comment><comment><USER27> Isn't one of the points of redux to decouple actions from reducers? How would you implement multiple reducers responding to a single action if your actions are tied to a reducer with a namespace?

<comment><USER28> This can be done using Subscriptions [1].

I have another problem with this library, which is relying on singleton pattern for communication. This way, you cannot have more than one rematch instance in one application, which can be limiting. It also makes reasoning more difficult.

[1] [https://github.com/rematch/rematch/blob/master/plugins/subsc...](https://github.com/rematch/rematch/blob/master/plugins/subscriptions/README.md)

<comment><USER27> Ahh thanks, I was lazy and didn't go looking for an answer. Though this line seems a bit odd..

> In this case, subscriptions avoid the need of coupling the auth model to the > profile model. Profile simply listens to an action.

I guess it's no different to using "vanilla" redux actions but because actions contain the reducer namespace then it's inherently coupled to another model isn't it?

</comment></comment></comment><comment><USER18> Rematch reminds me of Marty.js. I like some of the ideas about providing a createStore wrapper that is more zero-config and using something like redux- actions to make reducers simpler. I have been using my own wrapper around sagas to allow for dispatching effects.

They lose me with their idea of "models" where I have a global dispatch that can be extended, like dispatch.modelName.actionName. That's just old school object-oriented thinking layered on top of redux's functional programming ideals.

<comment><USER29> whats the problem of mixing the good parts of OOP with the good parts of FP?

<comment><USER30> The two are just so fundamentally different that you will usually end up with a net negative taking two good things from both worlds. With the parent comment, you lose a degree of composability of the functional world while not gaining any degree of inheritability from OOP.

</comment></comment></comment><comment><USER31> This approach looks really similar to the VueX approach: synchronous reducers are mutations, and async effects are actions. Can't wait to try this out in my next React project.

</comment><comment><USER32> Nice. I've thought of some of these myself and implemented them as helper functions, but there are some new ideas here I hadn't thought of. Not sure I'm ready to port my project to a new library, but I may try some of these out piecemeal.

</comment><comment><USER33> I like it. Configuration should be just that. Interested to read other opinions.

</comment><comment><USER34> should have known it was a ploy for yet another library.</comment>


France might be losing its first big information war - <AUTHOR> https://blog.0day.rocks/france-might-be-losing-its-first-big-information-war-2f3ab8b82fbb <comment> temp-dude-87844 Modern platforms enable the rapid and wide spread of information from peer to peer, whether truthful or false. But if foreign provocateurs can successfully sow discord and fan the flames to the point that there's riots in the streets, there are deeper problems in that society that have been lurking skin deep in the minds and fears of the populace, almost always tracing back to economic anxiety, even when masquerading as xenophobia or racism.

These posts about foreign psy-ops are implicitly suggesting that the representative democracy and predominantly free assembly that western states have come to expect is trivially susceptible to DDOS. This is true, but there's nothing fundamentally enshrined in the deep rulebook of history that says big western states must remain organized along such values. A populace not subject to daily economic anxiety is more willing to tolerate less representation in government without there being widespread discontent. It's a false dichotomy that a western state must either be overtly democratic or completely dysfunctional.

The remarkable thing is that mega-states loosely constituted along ethno- national lines, beholden to frequent elections and policy reversals, in a hypercompetitive world with increasingly open borders and stubbornly persistent income inequality, existed with remarkable stability for as long as they did. We've entered a time where the formula is easy to disrupt, and it's up to each state's people to evaluate how to proceed when faced with such a threat, but people worrying about the cost of living will find it hard to think of the big picture.

<comment><USER2> _> A populace not subject to daily economic anxiety is more willing to tolerate less representation in government without there being widespread discontent._

No one has figured out the whole "prosperity without scary periods of scarcity" thing yet.

 _> almost always tracing back to economic anxiety, even when masquerading as xenophobia or racism._

Xenophobia has a bit of a chicken-and-egg relationship with economic anxiety.

Does the xenophobia cause economic anxiety, or does economic anxiety cause xenophobia? I don't think the answer is so straight-forward, especially this time around history's block. It's not like 2016 was the 1930's... even economically depressed parts of the country were doing better than they were for decades.

Are people anxious because they're xenophobic and believe that "those people" are out to get them where it hurts (for them, the pocket book)? Or, are they anxious because they're afraid of losing their way of life and the objectively most likely cause of that loss is "those people", thus causing xenophobia?

</comment></comment><comment><USER3> Brazilian here.

After the horrible very bad choices we made on last election here, thanks to WhatsApp, I fear that "digital democracy" looks each day more like mob rule fed by paranoia.

<comment><USER4> It's always astonishing to me how many Americans support "direct democracy" as opposed to representative. Mob rule plays out time and time again without representative democracy

<comment><USER5> Switzerland has the most direct democracy and it works really quite well. We can overrule things representatives do with a 50000 signatures and a popular vote. We can introduce new laws with 100000 signatures and a popular vote.

That sort of system has many flaws but I would take it much rather then the US system.

In fact the Swiss system is based on the US, just with more direct democracy and a far less powerful president.

I would actually argue that the removal of presidential powers is the most important thing. Having all your top ministers be selected by the one popular vote for president is pretty insane when you think about it.

In Switzerland the top ministers are from 4-5 different parties and they have to work together every day. The departments are not fixed and switch about between people and parties.

<comment><USER6> Sometimes there are unpopular decisions that are nevertheless the right decisions. When you elect a representative, you're basically putting your faith in that person, rather than a particular policy.

<comment><USER5> Yes, we have representatives to and its a nice theory. But at least in the Swiss experience the population often makes pretty tough choices.

We voted on 6 weeks mandatory vacation and the people voted against it.

The parliament wanted to join the EU in the 1990, the people rejected it.

Also, often you end up putting your faith into parties rather then people and the people are compromised by party policy anyway. That you are voting for free thinking individual is mostly a fantasy.

</comment></comment></comment></comment></comment><comment><USER7> While I too worry about political influence through abuse of social media, this article doesn't prove that this actually took place.

What we see here is that there are some very dubious twitter accounts with some interactions. But are these meaningful interactions? Did any of the content reach and influence the supposed target audience? Are the communities shown in the Gephi graph real communities? These communities and their interactions could just as well be fake. When I was working on exactly this, I noticed that fake communities (i.e. sets of fake accounts all retweeting each other) are quite common.

Just look at the specific accounts mentioned (Pascal66616113 and 1Happeningnow). They have only 2 and 51 followers, respectively, and right now it's 4 and 72.

I think it's very important to detect malicious political accounts on social media and be aware of their impact. This article mentions two examples of such accounts, but doesn't prove anything about impact. The conclusion that France is losing an information war here doesn't follow.

<comment><USER8> You make some good points. It's possible that the article, in itself, is a kind of propaganda to make it seem as if the actions of the French are influenced more by foreign agents than by their own volition and will.

That said, TW could do more to make the example accounts less relevant in any case --to eliminate some of the accusation.

<comment><USER7> > It's possible that the article, in itself, is a kind of propaganda (...)

No. It's just poor reasoning with a click-baity headline.

</comment></comment></comment><comment><USER9> I suspect these 'misinformation campaigns' are completely ineffectual and the main effect we are seeing is factual information routing around mainstream media outlets and successfully embarrassing subjects that the mainstream media would rather protect.

For instance it was very embarrassing for the mainstream media and the democratic party that leaked emails showed them in collusion and undermining Bernie Sanders, but this was not misinformation. Likewise it was very embarrassing for the foreign policy establishment when their tools such as the oscar-winning White Helmets relief-workers were photographed arm-in-arm with rebel militants and shown staging videos, but I didn't see any of this exposed as 'misinformation.' I guess it was just 'the wrong information' to be reporting on.

Revelations like this are much more powerful than silly memes from Twitter accounts with no real followers.

<comment><USER10> > For instance it was very embarrassing for the mainstream media and the > democratic party that leaked emails showed them in collusion and undermining > Bernie Sanders, but this was not misinformation.

Except they didn't, at all, and the people spreading this theory are spreading misinformation.

<comment><USER11> The leaked emails are pretty damning. I don't know how you can say there was no conspiracy against Sanders.

<comment><USER10> He lost fair and square for being out of the mainstream. There was no conspiracy.

</comment></comment></comment></comment><comment><USER12> > _Foreign propagandists are getting a strong foothold in France, and the > traditional media can't fight it_

Or, another way to look at it, is that MSM in the country has lost control of the "narrative". Whether that is good or bad largely depends on whether your opinions fit within the status quo.

<comment><USER13> You seem to think that everything is about "narrative" or "bias"\- this is incorrect, since some things are _fact_.

If the MSM says that the Earth is round, that's not their narrative, it's fact, and anyone who says differently is just plain wrong.

<comment><USER14> The trouble with telling noble lies is that once people realize that you've been lying to them, they start to suspect _everything_ you say. That's part of why the replication crisis in the social sciences is so corrosive: it shreds people's willingness to believe unintuitive things that institutions insist are true, even in those instances where institutions are correct.

<comment><USER15> Social Sciences is used to create propaganda, which is used to tell us that the Institutions of Social Sciences speak truth & facts. It becomes tautological.

Another issue is it's no longer in an ordinary citizen's interest to believe these institutions, since they encourage the citizen to act against their own interests to the benefit of the institutions, capital holders, & political leaders.

Another issue is equating the opinion of a subset of the experts (which are often cherry-picked) or an institution with fact.

Another issue with social sciences is each study is only as good as what abstractions were conceived of to measure minus the accuracy of the measurements.

Many _scientists_ have a poor understanding of the Philosophy of Science, as it's not emphasized in the educational process. Philosophy is often seen as a "solved" problem, instead of the foundation of interpretation of information. This cloisters the _scientists_ to the point to them becoming glorified _technicians_ only capable of measuring the culturally accepted data points & unable to relate the information beyond their ever-shrinking domain of _expertise_.

</comment></comment></comment></comment><comment><USER14> This talk of "information war" is extremely creepy. IW is unfalsifiable and indistinguishable from legitimate popular dissatisfaction, which is a much more likely explanation for recent political outcomes. No, the existence of a few foreign-sources social media posts is not evidence that recent political results differ from the genuine will of the people. The results of elections and polls do, in contrast, constitute evidence that the people, as a whole, feel a certain way. Macron has an approval rating of 17%. Are foreign agents manipulating 83% of the population?

While "information war" is bogus as an explanatory or predictive theory, it's an excellent pretext for censorship, especially since it seems to be brought up whenever a political outcome disfavored by the elites occurs. Followed to its logical conclusion, fighting "information war" yields a regime of public censorship that differs from China's only in flavor.

</comment><comment><USER16> Unfortunately most of people out of France don't understand the situation here. They get to blame some violence propaganda of twitter account with less than a hundred followers without talking about how one-sided are mainstream medias (which have much bigger reach). I'm tempted to say that this is a move to discredit Gilets Jaunes movement.

<comment><USER17> Bingo. The establishment media is so desperate to control the narrative of this. For the longest time they kept beating the drum of "gas tax protests" to downplay other less flattering issues. Well, the gas tax was abandoned but the problem remains. What now? Better blame it on bots and foreign interests. This seems really familiar...

<comment><USER18> What are those other issues?

<comment><USER17> [https://apnews.com/216f4fe17e85429a82ee088ed2a73b41](https://apnews.com/216f4fe17e85429a82ee088ed2a73b41)

</comment></comment></comment></comment><comment><USER19> You may want to redo your analysis with a #giletsjaunes or whatever the french tags are. Don't expect a French movement born on Facebook from mainly boomers to use an English tag on twatter.

</comment><comment><USER20> Is disingenuous communication protected by freedom speech? If I am allowed to say X, can I also pretend to be person Y and say as X as Y? Can I pretend to be person Y_0 ... Y_N-1 and still say X for any arbitrarily large value of N?

disingenuous - Not candid or sincere, typically by pretending that one knows less about something than one really does. [0]

[0] [https://en.oxforddictionaries.com/definition/disingenuous](https://en.oxforddictionaries.com/definition/disingenuous)

<comment><USER21> I believe "no" if "disingenuous" is a synonym for false I think it'd be like "yelling fire in a crowded theater":

[https://en.wikipedia.org/wiki/Shouting_fire_in_a_crowded_the...](https://en.wikipedia.org/wiki/Shouting_fire_in_a_crowded_theater)

IANAL

<comment><USER22> "Fire in a crowded theater" is probably the wrong example. (In part because it was used to justify restrictions on political speech that would not fly today.)

A better example is: [https://supreme.justia.com/cases/federal/us/394/705/](https://supreme.justia.com/cases/federal/us/394/705/)

> Petitioner's remark during political debate at small public gathering that, > if inducted into Army (which he vowed would never occur) and made to carry a > rifle "the first man I want to get in my sights is L.B.J.," held to be crude > political hyperbole which, in light of its context and conditional nature, > did not constitute a knowing and willful threat against the President within > the coverage of 18 U.S.C. § 871(a).

Freedom of speech in the U.S. is extremely broad. False and damaging speech is in theory not protected (so defamation laws are valid), but the standard is very high even then. "Disingenuous" speech is protected (OP is calling it "disingenuous" because he can't prove it's clearly false.)

<comment><USER20> I used the phrase "disingenuous communication" not "disingenuous speech". The part that is misleading is a person using a bot that pretends to be another person (real or imaginary) to make a claim. The veracity of the claim doesn't really matter so much as the claims ability to stoke emotion. The part I find disingenuous (insincere) is pretending to be a human being and using other people's naïve assumption that the act is real to influence current events.

</comment></comment></comment></comment><comment> oh-kumudo France is losing its war against digital populism amid a large scale of economic stagnation, might be a better title.

</comment><comment><USER23> Let's just call everyone who is fed up with overreaching overspending governments a foreign agent and get it over with. Also, every country should setup firewalls analogous to the China's to protect our democracies

<comment><USER24> Conversely, let's just pretend that there's no foreign influence at all?

Targeting mass discontent and revolutionary movements like that is not new. Germans have poured millions of marks into the Bolsheviks during WW1, for example. It doesn't mean that everyone who supported Bolsheviks was a foreign agent, but it would certainly be unwise to ignore that sort of thing, and it behooves one to ask _why_ those other governments support these movements.

</comment></comment><comment><USER25> > Make your own opinion and fact check everything you read online.

Dear French Citizens,

A foreign adversary has infiltrated our country and sabotaged seven of our bridges.

When driving, please stop and briefly leave your vehicle to manually authenticate each bridge for structural integrity before continuing your trip.

Stay safe, France!

Sincerely, The GPG UX Team

</comment><comment><USER26> It's like the whole world is in an Eternal September phase.

These are the glory days for trolls. Some of them can even get paid for it...

</comment><comment><USER27> We know that the human brain has trouble recalling that information came from an unreliable source. Until we can fix that problem, the only solution I know of is to filter it out before we perceive it.

I think there are certain domains where anonymity is of paramount importance. Support groups for sure, matters of civics? Maybe. But someone making bold claims isn't entitled to my attention until they've established a track record of some kind, or are vouched for by someone I trust on the subject.

I keep thinking we're going to end up with a social circle that's morally equivalent to Web-of-Trust in the old PGP days but nothing ever comes. And even if it does come, it won't fix the thought bubble problem because the people whose opinions you trust have their own biases.

<comment><USER28> > I think there are certain domains where anonymity is of paramount > importance. Support groups for sure, matters of civics? Maybe. But someone > making bold claims isn't entitled to my attention until they've established > a track record of some kind

The reverse is also true.

Literally EVERY comment Trump makes should be followed up with "why would anyone trust anything you've said when you were so wrong about X"...

<comment><USER27> Yeah the bold claims are only plausible if they are in a domain the persona has previously demonstrated competence in.

If Aunt May tells me I have to use cold butter in grandma's cookie recipe, I'll absolutely believe her. But no matter how many times she corrects my baking, I'm never going to take her advice on dentistry or geopolitics.

</comment></comment></comment><comment><USER29> Sincere question, is this really France's "first big information war"? I feel like there was a lot of similar activity leading up their election last year try to get Le Pen elected which wasn't successful but I'm not sure how accurate that is.

<comment><USER30> You are right. The 2017 election in France was under the spotlight especially after what happened in 2016 in the US and the Brexit in the UK.

EM! (Macron's party) was a victim of massive internet attacks during the campaign. [https://www.independent.co.uk/life-style/gadgets-and- tech/ne...](https://www.independent.co.uk/life-style/gadgets-and- tech/news/facebook-russia-spies-emmanuel-macron-french-election-surveillance- marine-le-pen-a7863531.html)

In the past couple of weeks, I have seen French fake posts that were popular in the past 24 months raise again like an army of Phoenix. As far as media go, we have usually and relatively independent media in France, even public. However, foreign entities and especially RT France have been controversial in some of their coverage.

</comment></comment><comment><USER31> Why are people still paying attention to Twitter and Facebook? I kind of get Facebook because your friends are there but I've never seen the point of Twitter.

</comment><comment><USER8> Can Twitter not do something where new and low activity accounts are given less weight and thus rise in relevance more slowly compared to seasoned and active accounts? Maybe even disallow likes and retweets till it matures as an account.

That said, you can't just ban "non-local" accounts from injecting themselves into a remote topic. If Kyle Jenner wants to tweet about something in France or Brazil, it should be non-exceptional (etc.)

<comment><USER32> Why would they? That would reduce engagement.

<comment><USER8> I don't think it would have a big impact. New accounts should by their nature have few followers. Accounts with historically low activity should also have little effect on "engagement".

<comment><USER33> These are good points. Twitter has means to prevent disinformation campaigns using relatively simple math. The question we need to ask is why they don't do it.

</comment></comment></comment></comment><comment><USER34> Has anyone bothered to check the validity of the link / website? It looks pretty dodgy and conceals itself as a Medium blog post.......

</comment><comment><USER35> In times like this when verifying identity on social media seems like valid point. Then you get into chinese way of getting more serious and have privacy concerns. Repetition creates reality, no matter media distribution, internet mass distribution makes it more convenient and remotely available.

</comment><comment><USER36> It doesn't require thousands of TPUs and the latest deep learning methods to reveal these fake accounts, so there's at least something that can be done? Value authorative accounts higher somehow such that new / fake ones don't get this traction?

</comment><comment> j-c-hewitt It's not like it's inconceivable that generally rural people struggling to make ends meet might be sensitive to a fuel tax increase. Tax revolts have been happening for thousands of years. Not all of them are the result of Russians posting online.

</comment><comment><USER37> Somewhat orthogonal to this: live coverage from the streets of Paris. [https://www.youtube.com/watch?v=vEcYzBGfKBA](https://www.youtube.com/watch?v=vEcYzBGfKBA)

</comment><comment><USER38> Why is the assumption that "bots" are being created by people not in France? If I was part of a semi-violent protest group I would definitely _not_ use my personal account and instead create something new like this.

</comment><comment><USER39> Another interesting place to help fact-checking: [https://skeptics.stackexchange.com](https://skeptics.stackexchange.com)

<comment><USER36> Now wait till the trolls flood skeptics.stackexchange.com

</comment></comment><comment><USER40> The author of the article clearly doesn't know France nor its recent history.

The Gilets Jaunes movement is a contestation of late stage capitalism, not a series of pogroms against muslims.

The people has been rumbling for quite some time now. With an arrogant, borderline authoritarian president that has nothing but contempt and mocking towards the French people, added to a weak political line (ni de droite ni de gauche ... mais surtout de droite. Neither left nor right, but especially right).

People are roaring in uprising because what they see is a convergence of the resources towards the hands of those who have too much, and less and less towards those of who have too few.

You don't need propaganda when the King is also the Fool.

</comment><comment><USER41> I will just leave this here for readers to judge: [https://news.ycombinator.com/item?id=11406694](https://news.ycombinator.com/item?id=11406694)

</comment><comment><USER42> Community detection in uncovering fake news FTW!

</comment><comment><USER43> we have overabundance of information. You can find evidence to support / prove anything, including misinformation.

</comment><comment><USER44> This is the Russians.

</comment><comment><USER45> I will never understand why Twitter exposes the UI language of all users. Terrible, security-wise.

<comment><USER13> Why is this terrible?

<comment><USER24> Because in many places in the world, speaking some languages is inviting trouble. In US, for example, people speaking Arabic in public (including online) can be harassed over that.

</comment></comment></comment><comment><USER46> France is a nation of 67 million people. Who is losing, exactly?</comment>


Animals That Taste Only Saltiness - <AUTHOR> http://nautil.us/blog/the-animals-that-taste-only-saltiness

<comment><USER2> > When a mutation came along that made the receptor not work, that animal was > just as likely to survive as one that didn't have the mutation."

Then shouldn't there still be a chance of having the mutation because nothing is selecting for or against it? Instead it seems the entire species can't taste sweetness so the gene was removed. Why would that happen? I don't know of any other explanation than, "there is an advantage to not being able to taste sweetness".

EDIT: I removed "50/50" from my question. That wouldn't be the right percentage.

<comment><USER3> If the mutation only occurred once, yes. But if there is no selection pressure against a broken gene, every time it mutates it will enter the gene pool until the working version eventually disappears completely. (After many years, of course.)

<comment><USER4> But wouldn't there be an equal chance of the mutation reversing itself? This is true in digital transmissions, why not in DNA?

<comment><USER5> A gene isn't one bit.

For starters, there are four nucleotides in DNA (A, C, G, and T). Simplifying our model of mutation to "a flipped bit" where mutation takes takes a nucleotide to another one with equal likelihood, and only one nucleotide in that position makes it functional, there is a 3/3 chance that a mutation breaks it but only a 1/3 chance that a subsequent mutation fixes it.

Next, there's the fact that every gene is a sequence of _many_ nucleotides. The odds that the next mutation of the same gene would happen in the same place is low.

Finally, many mutations don't take the "flipped bit" form we assumed above. Repetitions, insertions and deletions also happen, and may be even less reversible (deletion of a meaningful portion would be exceedingly unlikely to be recreated by chance - what provides the information about what should have been there?).

</comment></comment></comment></comment><comment><USER6> There is no mention of smell in the article. What if dolphins use their sense of smell instead?

<comment><USER7> Dolphins can't smell.

They retain all of the mammal sense-of-smell genes for smelling in air, but they are corrupted by random mutations. None of them function anymore.

<comment><USER6> Thanks! That would have been useful information for them to add to the article. I assume Hyenas still retain their sense of smell though.

</comment></comment></comment><comment><USER8> Interesting. Makes me wonder how we evolved our taste buds.

<comment><USER9> I don't know the details, but it's fairly easy to imagine a series of small steps that could occur via random mutations, where each small step offered a slight fitness advantage over individuals without the mutation.

<comment><USER10> Isn't that just the definition of evolution?

<comment><USER9> It's a key problem many people have with understanding (and in some cases, believing) evolution. The classic example is the complex human eye.</comment></comment></comment></comment>


Ask HN: What do you use and pay to process payroll for a small consultancy? - <AUTHOR> Scorp or LLC, where payroll is required by the IRS.<p>Wells Fargo says 65/mo, but ADP is expensive too I've heard.  But I worry the smaller guys might not be as reliable or go through acquisition and affect something that I don't want to deal with often. <comment><USER2> Gusto

<comment><AUTHOR> At $39 + 6n per month, the price is min 45/mo. Cheaper than Wells Fargo's 65/mo, but not free/close to free like I thought may be available with a starter plan somewhere for 1-2 people on.

Can I ask how long you've been using them for and if your experience has been great?

<comment><USER2> I've been using them for about a year and have been very pleased. It's comforting that they send out all the payroll-related tax forms for you at the right times. It's very easy to use.

Another big plus: Their support team is available on live chat and is very helpful. For example, when I got a letter from my state about some tax overpayment, the Gusto people called the state on my behalf to figure out what it means.

If you do end up choosing them, ask me for a referral code so that we both get a reward.

PS - I'm a one-person company and the $45/month has been worth it.</comment></comment></comment>


LOAD"$",8 - <AUTHOR> http://www.pagetable.com/?p=273

<comment><USER2> What's been astonishing to me is that there are new devices being produced for the C64 (not mass-produced, but there are a few companies and individuals doing it). Some of them are astonishingly modern, and the C64, for all its limitations, just accepts their existence. I bought an SD card based internal "hard disk" recently for my C64. It's really cool. Quite complex DOS commands are required until I get JiffyDOS installed, but still, it's astonishing to me that a C64 can deal with a device that can hold thousands of 1541, 1571 and 1581 disk images.

<comment><USER3> The communities around the old 8 bit platform are alive and well, much to my surprise!

I think it has something to do with the retro-gaming movement, away from the 3d realistic games back to simpler 2 dimensional games that are great because of their inventiveness and playability rather than their realism.

On a side note, I wonder how many people upon seeing 'load' hear the sound of some fsk sounds :)

<comment><USER4> The demoscene has a lot to do with the C64 being very much alive still as it is a coveted and respected platform for productions.

Furthermore, demosceners are still pushing the limits of the hardware; case in point, see Edge of Disgrace by Booze Design. Yes, that is a ~1MHz machine drawing shaded primitives. :)

<comment><USER2> Yeah, I love that there are still folks "discovering" things about the platform...the research into how to get (dramatically) more than 16 colors out of VIC-II, or how to playback samples on SID, for example, are simply amazing. And this stuff is still happening 25+ years after the products release.

I don't do anything fancy with my C64; it's just another musical instrument out of many (MIDI interfaces are still being manufactured; and the MSSSIAH software to drive it is still being updated regularly), but it's certainly hellafun to play with, and brings back great memories every time I fire it up.

I've read that the Sony folks made the argument that they _wanted_ the PS3 to be a hard platform to work with, at the start, so that it would still be relevant in five years. When I first read that I thought, "That's just stupid!" I still think it's utterly stupid, but I also think that a really great platform might just get people developing for it well into the future by providing interesting technical challenges. I think it takes huge popularity, though, and PS3 will never have that. The best examples of living far beyond their useful life are the C64 and the original Gameboy...both of which were not only good devices in their time, they were both the most popular device of their class, of all time. So, I don't think the PS3 will have a scene in 25 years, but the Wii or DS might.

<comment><USER4> Given the positive reception of the Nintendo DS within the demoscene, I have the feeling that we'll be seeing sceners doing interesting things with whatever iteration of the hardware that anyone has handy for several years to come, much like we've seen with even the old first-iteration Game Boys from 1989. It's really catching on there, and I wouldn't be surprised if we see some excellent games come out of this area from a few Swedes or Finns who have way too much free time. :)

Semi-relatedly: Interestingly enough, for those of us born through during the latter half of the 1970's and through the 1980's, the Germans call us the C64 Generation, which is a label that I really wear with pride since the C64 was my first foray into tinkering with micros after I turned three in 1990.

<comment><USER2> _after I turned three in 1990_

Way to make me feel really old. I was _eight_ when I got my first C64, and it was when they were new on the market, so around 1982 or 1983. I ran a C64 BBS by the time I was twelve. In 1990 I had just bought my first Amiga.

But, I too enjoy having been a C64 kid, and take pride in the quirkiness of using one to this day.

</comment></comment></comment></comment></comment></comment><comment><USER5> Must recommend this book again...

On the Edge: the Spectacular Rise and Fall of Commodore [http://www.amazon.com/Edge-Spectacular-Rise-Fall- Commodore/d...](http://www.amazon.com/Edge-Spectacular-Rise-Fall- Commodore/dp/0973864907)

As I recall the responsibility of getting the 1541 working with the C64 was the responsibility of one of their more crazy, drunken, hard working employees. His name escapes me...Bill....

</comment><comment><USER6> Cool to find out what that actually means -- I always just knew it as the magic incantation needed to play Jumpman or Impossible Mission :)

</comment><comment><USER7> I'd recommend 'The anatomy of the 1541 disk drive' or if you speak German 'Das Grosse Floppy Buch zur 1541', both co-authored by the great Lothar Englisch.

</comment><comment><USER8> The real command was LOAD "$",8

<comment><USER9> Of course, any serious user of a C64 had an Epyx Fastload cartridge. Then you could just type $.

<comment><USER10> but of course you could use LOAD"*",8,1; to load the first PRG from the disc... or my favourite command: LOAD"USAGI",8 :P</comment></comment></comment>


Easily cross-post between Twitter and Facebook - <AUTHOR> https://2FB.me <comment><USER2> Fair to say this isn't exactly an earth shattering breakthrough...

<comment><USER3> Facebook just removed all cross-posted tweets, so this is just convenient timing.</comment></comment>


The New York Times is looking for a climate change editor - <AUTHOR> http://www.nytimes.com/interactive/2016/jobs/nyt-climate-change-editor.html?_r=0 <comment><USER2> Is this part of YC S16 or is it for YC W16?

</comment><comment><USER3> This is why I pay for a NYT subscription</comment>


Did IBM Kill CentOS 8? - <AUTHOR> https://lists.centos.org/pipermail/centos-devel/2019-September/017673.html <comment><USER2> Would it really be in IBM's interest to kill (or soft-kill) CentOS? I thought the reason RedHat had embraced it is that it kept more folks/companies in the mind-space of RedHat: if they weren't going to make money from CentOS users then at least those users wouldn't move to the outer edge of Canonical's sales funnel by going with Ububtu Server.

Maybe IBM sees this differently.

<comment><USER3> "Never underestimate the predictability of stupidity." \- Snatch</comment></comment>


Superpowers, the collaborative HTML5 2D+3D game maker, is now open source - <AUTHOR> http://superpowers-html5.com/ <comment><AUTHOR> Hi! I've been working on live collaborative game development software for about 4 years (some of you might remember me from CraftStudio). For the past year and a half, we've been working on Superpowers with my two friends Bilou and Pixel-boy and now we've open sourced it, as promised back in March when we launched early access for supporters.

Superpowers at its core ([http://github.com/superpowers/superpowers](http://github.com/superpowers/superpowers)) is more than a game maker. It's a generic collaborative client/server Web app for building all kinds of projects. A project type is defined by what we call a system, and you can have any number of systems installed on your Superpowers server.

We spent most of the last year building the core along with a system called Superpowers Game ([https://github.com/superpowers/superpowers- game](https://github.com/superpowers/superpowers-game)), which is a TypeScript game engine built on top of Three.js along with a bunch of collaborative asset editors.

Now that the platform is maturing, we've started work on other systems. For instance, Superpowers LÖVE ([https://github.com/superpowers/superpowers- love2d](https://github.com/superpowers/superpowers-love2d)) lets you build Lua games for the LÖVE framework. Demo: [https://i.imgur.com/yLybycP.jpg](https://i.imgur.com/yLybycP.jpg)

Another example: Superpowers Web is ([https://github.com/superpowers/superpowers- web](https://github.com/superpowers/superpowers-web)) a Superpowers system for building static Websites. We've used it to build the official website ([https://github.com/superpowers/superpowers- html5.com](https://github.com/superpowers/superpowers-html5.com)) in real-time collaboration. We have plan for a "Superpowers Node.js" system, and hopefully the community will embrace this extensibility and build cool tools for all sorts of engines and creative endeavours.

You can find lots of pictures of the app in the release notes: [https://github.com/superpowers/superpowers/releases](https://github.com/superpowers/superpowers/releases) and many games made with Superpowers Game here: [http://sparklinlabs.itch.io/](http://sparklinlabs.itch.io/). The devlog album has cool stuff too: [http://imgur.com/a/NdIuH](http://imgur.com/a/NdIuH)</comment>


Code Organ - <AUTHOR> http://www.codeorgan.com/

<comment><USER2> Pretty cool. I liked the sound of some of my pet projects.

I just showed this to a co-worker. He asked, "How about the reverse? What's the URL for Beethoven's Ninth Symphony?"

<comment><USER3> It looks at the "body content of any web page" and translates that, so the correct question to ask would be "What does the website look like for Beethoven's Ninth?"

Also, news.ycombinator.com doesn't work on it, must be blocking it =(

</comment></comment><comment><USER4> Codeorgan.com and Twitter.com sound pretty good.

Reddit.com is okay.

Facebook.com and Google.com are just downright bad. Although Gmail.com isn't too bad.

</comment><comment><USER5> Hacker News is the sound of silence.</comment>


Marissa Mayer's kingdom is crumbling around her - <AUTHOR> http://www.news.com.au/finance/business/technology/marissa-mayers-kingdom-is-crumbling-around-her/news-story/1fe7e3ea883ce87ac1a87289da91551b <comment><USER2> Odd that Yahoo existed before Google and basically did the same sort of things like Search Engine, Free Web Mail, etc.

Yahoo tried to market itself as an entertainment company, when it should have focused on being a technology company.

Getting rid of Geocities was a mistake, they should have offered VPS services with it for more money in order to make it profitable.

Their web mail require a mobile number now to sign up for an account which locks out poorer users who can't afford a mobile phone. So they just go to Hotmail/Outlook or Gmail instead. So they lost people they could have sold advertising space on.

I don't know if it is possible to turn Yahoo around. I figure that sooner or later some other company is going to buy them out.</comment>