React Native at Instagram - <AUTHOR> https://engineering.instagram.com/react-native-at-instagram-dd828a9a90c7#.88g2rf8hr <comment><USER2> This is huge. 87-99% shared code between iOS and Android. Someday companies as big as Instagram won't need to have entire separate product teams for separate platforms.

> React Native allowed product teams to ship features faster to both our iOS > and Android apps. The list below shows the percentage of code shared between > the apps for some of the products, which could be used as a proxy to measure > how we managed to improve developer velocity:

Post Promote: 99%

SMS Captcha Checkpoint: 97%

Comment Moderation: 85%

Lead Gen Ads: 87%

Push Notification Settings: 92%

<comment><USER3> I'm working on a project where we are recreating a native app using React Native. We've found similar results; about 90% of our code is shared between both platforms. We also build both platforms every time, so both apps match really well. I'm not sold on React yet but this is a major plus to the platform.

<comment><USER4> That seems like a big plus for React Native.

What are the negatives you have found?

<comment><USER5> I was at the SF React Native developers meet up the other night, the speaker (Devin Abbott) gave several nice pro/con's slide re react native. Here's a picture of the slides:

[http://imgur.com/a/T3O7i](http://imgur.com/a/T3O7i) [http://imgur.com/a/z2oIU](http://imgur.com/a/z2oIU)

<comment><USER6> Great comparison. Slides transcribed:

\-- Slide 1 --

Maybe we should use React Native:

\- We know JS / React

\- We have lots of web developers but few mobile

\- Our design is brand-focused

\- We're willing to invest in RN

\- We want to get into OSS

\- We want OTA code updates

Or maybe we shouldn't:

\- We don't know JS / React

\- We already have an iOS team and an Android team

\- Our designs are heavily platform-specific

\- We don't have the time or money for an RN team / OSS

\-- Slide 2 --

Pros:

\- Cross-platform

\- Performant, native feel (with some effort)

\- Great developer experience

\- Push updates over-the-air

\- Strong community

\- Backed by Facebook

Cons:

\- Early

\- Unstable (bugs, APIs)

\- Ecosystem not fully developed

\- Polished apps are high effort

\- You may need native code (so JS + Obj-C + Java)

<comment><USER7> Thanks for this.

The thing that captured my interest was the point about being backed by Facebook. Parse was backed by Facebook and look where it is now.

<comment><USER8> I don't think Facebook backing Parse is relevant. React Native was designed by Facebook, so I'm assuming they understood the design choices of the mobile ecosystem at the time.

Parse was an acquisition by Facebook that didn't end up working out.

<comment><USER9> I'll add that we use RN in our production apps and are building it for ourselves but never used Parse in the same way.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> This is a bad sign to me, talks about how to optimise start up performance and optimise list views when the processors in our pockets are the fastest they've ever been.

Do we really have to switch to developer centric development where devs have an easier life using JS at the expense of performance?

Think the millions of users would prefer their devices to have better battery life, load faster and have less cruft just to draw a few text boxes of a profile edit screen or a grid of photos (something I would have thought would be effortless to mobile devs in 2017). Rather than the handful of devs having a slightly easier day at the start of the process.

This whole move seems especially strange to me coming from a Facebook company, have we forgotten the move from native > webtech > native already?

<comment><USER11> > devs have an easier life using JS

I think that is willfully missing the point. Creative work, especially UI- centric product development, requires significant iteration. Layouts change frequently, entire view hierarchies can be re-worked, sizes are tweaked obsessively.

This isn't just about decreasing the burden of engineering (as if Obj-C/Swift/Java/etc. were so hard to master). This is about decreasing the time from concept (e.g. Photoshop mock) to implementation (interactive working app) so that iteration can happen quickly.

As much as I love the performance possible when coding directly against Native APIs, I also have direct experience using web views in native apps. The improvement in the design process around web views is worth investing in getting the performance as close as possible to native. This is multiplied when you consider the cross-platform benefits. However, the performance and UI experience of web views is not good enough.

I can't vouch for React Native giving the iterative benefits of pure web view development nor the performance benefits of pure native development. However, if it does strike a reasonable balance between them I can totally understand why people invest in it.

<comment><USER12> So why not have a virtual DOM-based data-driven layout engine that _isn't_ an HTML/JS stack. Something in a language that is more optimisable and works everywhere, like Lua with C extensions, or OCaml, or Java. JavaScript is hard to get predictable performance from and HTML is extremely complex, we can do better if we're writing native apps (hell, we should have had a better online solution years ago too, but we don't have control there).

<comment><USER11> > why not have a virtual DOM-based data-driven layout engine that _isn't_ an > HTML/JS stack

I'm not advocating RN, I just understand the motivations behind frameworks like it. I think "to make devs lives easier" is not a fair assessment. Also, to be fair, JS performance is generally adequate. My own experience with performance on mobile devices often fell back to rendering (e.g. managing textures, making animations smooth, infinite tiled scrolling). Very rarely was raw CPU processing a major concern. My experience may not be typical.

As for other cross platform native development libraries/platforms/etc. - I've had some experience with a few of them (e.g. marmalade[0] which was in C++) and generally they do not work for me. I even attempted to write my own and it was its own monster.

In general, I am personally biased towards Native. I would definitely take RN on a test spin if I was in the prototype phase of a new app. I would use that time to determine if I wanted to bring RN into production or re-write as Native.

[0] [https://en.wikipedia.org/wiki/Marmalade_(software)](https://en.wikipedia.org/wiki/Marmalade_\(software\))

<comment><USER13> What is "adequate"? Any long term task still hangs the business logic thread - the only thread - unless you fallback to native. At what point does constant fallback to native for implementing what is not possible in JS a detriment to development? You may say, multithreading is an edge-case, but is it? I have not been involved in a single project where actual multithreading was not needed. Also, the way RN is implemented internally, such as async bridge and layout (CSSLayout / "yoga"), it is quite impossible to use native optimized views, such UITableView with reusable views, because this API is designed for synchronous API calls.

</comment></comment></comment></comment></comment><comment><USER14> I didn't know what single/multi-dex means so i looked it up.

Android application (APK) files contain executable bytecode files in the form of Dalvik Executable (DEX) files, which contain the compiled code used to run your app. The Dalvik Executable specification limits the total number of methods that can be referenced within a single DEX file to 65,536, including Android framework methods, library methods, and methods in your own code. Getting past this limit requires that you configure your app build process to generate more than one DEX file, known as a multidex configuration.

Do Android apps regularly encompass over 65.3k methods? I assume a majority of these would be framework type functionality, but it really seems that a multi- dex product would be near impossible to maintain.

<comment><USER15> This is one of those Android design decisions that Google probably wishes they could get to do over again. The DEX header file format allocates only 2 bytes to hold the number of methods the app can reference. This was a very short sighted decision that has come back to bite them repeatedly. It would be interesting to know why they only allocated 2 bytes instead of 4 which would have given them the ability to reference over 4 billion methods. If their reasoning was for cost saving measures than it was a pretty silly decision. There has been some talk about revising the DEX header file format to correct some of the early design mistakes, but I'm not sure when they'll get around to it.

<comment><USER16> It's not that easy, and not just one field.

DEX uses a method table, listing every method with an ID, and using in the rest of the file only that ID to refer to it.

This ID is limited to 2 bytes.

Obviously, thats an issue, but short of using varint or straightaway uint32 there's few alternatives. And those use either more CPU or memory.

<comment><USER15> Thanks for the correction. Here's a transcript from the Android Developer podcast, courtesy of [http://blog.osom.info/2014/10/multi-dex-to-rescue-from- infam...](http://blog.osom.info/2014/10/multi-dex-to-rescue-from- infamous-65536.html), talking about the issue with an Android engineer:

>Tor: So [regarding] the infamous 64k method [issue].. I understand that it is a dex file format limitation.. which is a short integer. Do you have plans to address this somehow, by either change the dex format or some other way?

>Anwar: So we've talked about revving DEX, so that limitation doesn't exist anymore. And there's a couple of reasons we haven't done that: one, there're other things we would like to do better as well, including supporting new language features. The other reason is - it doesn't help us with devices still in the field. It's hard to go and say "by the way, we're going to upgrade your runtime.." So what do we do in order to address that? We will do the DEX byte code [change], but I think there's sort of building block that we needed first - what we're calling multi-DEX. And the idea is.. here's something people were doing - they were breaking up their files into multiple DEX files (each of which exceeds the 64k limit), the main classes in DEX file could see the classes and use them in sort of references rather than loading those classes and having limitations in how you can use them. They will go and use reflection to find the boot class path and modify it to include their secondary DEX files. So this is kind of hack, but a necessary one for them.

>What we're doing in L is in runtime we will have a native support for multi- DEX. All your DEX files that you have in your app will get dexopt-ed or compiled by us and collapsed into a single .oat file which is a binary file we generate.. ..And we have a support library on top of that.. ..if you have multi-DEX it will work on older releases of Android back to Ice Cream Sandwich.. will work on Gingerbread too, but we're only validating back to ICS. So once you have that, than that free's you in the future to do the DEX byte code change, and then something that partitions it and runs on the existing [devices]..

One interesting note is that he mentions that they'll hopefully have the DEX revision by M. Well, we're on N so it looks like they missed that target date. Perhaps O will finally get the long awaited DEX file format revision.

<comment><USER17> Available on 0.x% of devices, thanks to them not forcing OEMs to update as part of Play Store contract.

<comment><USER15> Yeah, why they don't enforce this is baffling. I can give them a break for letting their OEM's take their time with OS updates, but not requiring their OEM's to issue security patches is negligent.

<comment><USER18> Microsoft enforced that and OEMs decided they'd rather build Android phones than Windows Phone ones. The rest is history.

<comment><USER17> I think having an OS available for free was more relevant.

<comment><USER19> Yeah, it's not like Samsung can go make iOS phones. And I highly doubt any of these hardware OEMs could possibly pull off a software project that doesn't suck, let alone a whole OS and dev ecosystem.

<comment><USER18> Samsung already releases phones running Tizen to have a side bet against Android. The quality of software is not very important when your only competitor builds phones that are significantly more expensive.

<comment><USER17> Tizen is a joke for app developers, it was already rebooted so many times, no one serious would spend a second trying to target the platform.

1 - Meego reborn as Tizen

2 - Tizen gets the Bada C++ SDK, with its Symbian C++ like flavour

3 - Enlightment guys join Tizen

4 - C++ SDK gets kicked out and replaced by Enlightment C libraries

5 - Developers complain that Tizen 2.3 drops C++ and is a C only experience

6 - Samsung announces support for .NET Core as high level native Tizen tooling

Really, what SDK are they going to release next?!

<comment><USER20> There was also a period of only allowing "HTML5 apps" (during the jQuery era no less) if I remember it correctly.

<comment><USER17> It is still the case when targeting Tizen TV devices.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER21> As an iOS developer, I had to decide between investing more time in Swift or React-Native. I chose React-Native simply because I thought it will allow me to broaden my mobile development experience and maybe one day stretch to even the Android platform. Furthermore, it improved my javascript skills in general and allowed me to create React web apps as well. I think it is the right choice thus far. Anyone else have similar experiences?

<comment><USER22> As someone who was in your shoes last year as I made a job transition into a lead developer role at a new company. I picked React Native for a small project over Swift: [https://studio.carnegiemuseums.org/out-loud- cdc979453ef0#.rh...](https://studio.carnegiemuseums.org/out-loud- cdc979453ef0#.rh2rkrgsb). It was worth it. Not only because immutable render functions make view code extremely pleasurable to write, but also because it's mostly JS and JSX it allowed me to quickly spin up a web developer to work on this project with me. (About 2-3 weeks.)

Now React Native is not without it's downsides though. You pretty much have to know the platform underneath if you want to do anything past API calls and rendering to a list view. (And even that list view does not support the heavy recycling that iOS manages for you.) For the above project I had to write our own Bluetooth, Audio and Accessibility Native Modules.

But the speed at which we were able to develop over a native solution was worth it alone. I highly suggest looking into React Native if your next project is simple enough.

<comment><USER23> > I had to write our own Bluetooth, Audio and Accessibility Native Modules

I hope you open sourced these :)

I was looking at React Native the other day and the impression I got was that almost every piece that does more than display data from the web needed extra modules and far from all of them were written already.

<comment><USER13> This is true. Some great ones exist (like [https://github.com/airbnb/react- native-maps](https://github.com/airbnb/react-native-maps) and [https://github.com/wix/react-native-navigation](https://github.com/wix/react- native-navigation)), but those are few and far between. Most are very simplistic and only solve very narrow cases. So you end up having to do a lot of the work yourself, for both platforms. And that is a big chore, as there is a lot of boilerplate to integrate native components with RN.

Disclaimer: react-native-navigation is developed by Wix, my employer, but I have not worked on that one.

</comment></comment></comment></comment><comment><USER24> They probably traded a really nice iOS codebase that had been maintained and improved upon for something that is going to end up with tons of special cases for when the UI is running on iOS/Android etc and make it incredibly difficult to test, reason about.

Instead of improving the code on each respective platform, you end up with an inbred red-headed step child that shares the limitations and thorns of each, all smushed together.

Now, making a change that once was once limited in scope to a single UI on Android now has the potential to affect both apps in new and exciting (read: unpredictable) ways.

I've been down this path before. There's something incredibly satisfying about reusing code, but there's such a thing as too much of a good thing.

I'd like to see a case study done in a few years once the whiskers have had some time to accumulate on this codebase.

Steve Jobs knew about the perils of this development methodology which is why he specifically put his foot down on technologies like Flash -- which (let's admit it, folks), React Native really has more in common than we'd like to admit.

<comment><USER25> I would guess one reason for Instagram to go the RN route is simply easier hiring.

For every really good iOS/Android developer, there are probably 10 really good web developers that easily can pick up RN. As a web developer myself, it's a full time job to keep up with the JS ecosystem alone.

I tried learning ObjC a few years back but gave up because of limited time, weird syntax and very slow feedback loop.

Now I am stoked that I can finally build native apps with the web tech I spent so much time learning, and I don't think I'm alone in that regard.

<comment><USER26> Instagram is the last group that would have problems hiring iOS and Android developers. I'm almost certain that's not the reason for the switch to React Native.

The main reason to switch is that the user cannot tell the difference for their use case, and they get to iterate faster.

<comment><USER27> I'm not sure if this is still the case, but I remember hearing a year and a half ago or so that the Instagram team was still pretty small then. FB is pretty lean in terms of number of frontend devs - at that time I remember being told the number was ~250 or so, which has probably grown since then.

</comment></comment></comment></comment><comment><USER28> I opened Instagram the other day and saw a grey error message show up across the top of the app... it said something about a React error. I didn't get to read it well because it quickly disappeared. I thought I was tripping. Good to know I wasn't.

<comment><USER29> Same here. Something about a debug error.

<comment><USER30> That is the one thing that is difficult in React Native, getting rid of those debug errors. Sometimes they don't make enough sense to know what they are. But we google are way out of them. Sometimes they're related to a compatibility issues, and communication issues between Objective C and RN.

<comment><USER9> I would not expect any of these error messages to show up in a production build unless it was misconfigured (which it unfortunately sounds like the Instagram build was based on these reports).

</comment></comment></comment></comment><comment><USER31> The careers link posted in the footnote errors when loading: [https://our.intern.facebook.com/l.php?d=AQHtPpH_2FKp-3oVD3c5...](https://our.intern.facebook.com/l.php?d=AQHtPpH_2FKp-3oVD3c57N8Xi13ihf6dqJh6FoNsgrYMTVn7YWz- VEHqIRY&u=https%3A%2F%2Fwww.instagram.com%2Fabout%2Fjobs%2F&h=8AQFXdAKr&s=1)

"Sorry, something went wrong. We're working on it and we'll get it fixed as soon as we can."

Based on the URL, is this actually some internal FB link tracking redirect? You probably simply want direct URL: [https://www.instagram.com/about/jobs](https://www.instagram.com/about/jobs)

<comment><AUTHOR> Oops, that was an internal link - fixing now.

</comment></comment><comment><USER13> Please speak, if you can, on the mental toll the move to web ecosystem has taken on your native developers that have until now developed on respective native ecosystems. In particularly, I refer to having to work in JS, having to install tens if not hundreds if not thousands npm dependencies in order to do the most routine tasks, having to restart packager and clear cache every few runs, etc.

<comment><AUTHOR> Packager has gotten pretty stable lately, you shouldn't need to restart it anymore. In regards npm modules, you only need to do so when upgrading dependencies which doesn't happen that often.

We also use yarn, an npm client FB built from the ground up to removes some of the pain with npm's one: [https://code.facebook.com/posts/1840075619545360](https://code.facebook.com/posts/1840075619545360)

</comment></comment><comment><USER32> Call me old-fashioned, but I thought the Android/iOS code sharing nut was cracked: Business logic in C or C++ and UI in Objective-C (iOS) and Java (Android + NDK). As a bonus, you could bolt a desktop UI on top of the C++ as well.

<comment><USER33> That's how we do it as well. Bonus: you can test your business logic without having to run it on a phone.

I'm shocked more people don't do this—I guess they don't know C++?

<comment><USER13> Web developers are a dime a dozen - very low barrier to entry, both from learning standpoint, and quality standpoint (sadly). C++ developers - a lot less. C++ developers cost more. Native developers who are also willing to learn C++ are also expensive. My cynical view is that with RN, startups are just able to hire a few web developers instead of having to hire native developers, so it's a lot cheaper.

</comment></comment></comment><comment><USER34> I'm getting tired of having to allow scripts to even get to see the images. Why dont they use <img> tags?

<comment><USER35> There's a lot of software developers who like to over-engineer things. Some are probably working at Medium.

<comment><USER10> At times I feel filling the building with just a few too many smart people can sometimes cause a regression on experience as things are over engineered and too many people struggle to find smarter solutions to solved problems.

Take Google Maps for example, the old tile based version is blazing fast and uses almost no CPU. "Modern" version of Maps makes my MacBook Pro fans turn on almost straight away, chugs and chokes when dragging and although the zoom motion is clearer the actual data display isn't any better.

</comment></comment></comment><comment><AUTHOR> @martinbigio here in case anyone has questions

<comment> k-mcgrady Probably OT but a bug that's been driving me crazy for a while now. When I open Instagram it reloads the feed every time as if the app had been purged from memory. This means if I accidentally close the app and reopen it my scroll position is lost and thanks to the sort algorithm the feed order has changed and I can't get back to where I was.

<comment><USER36> See this every time. Also on iOS if you have the app open, lock the phone, and then unlock you will be at the home screen. Almost as if the app ran out of memory or crashed in the background.

Side effects of RN?

</comment></comment></comment><comment><USER37> Has anyone tried using the React Native plugin for Windows [1] in a non- trivial app yet? I'd love to hear what experiences people have had with it, and if there's anything to watch out for coming from the RN Android/iOS camps. Any open source apps that makes use of React Native for Windows that you can point me to would be super helpful as well.

[1] [https://github.com/ReactWindows/react-native- windows](https://github.com/ReactWindows/react-native-windows)

<comment><USER38> I mean, the Instagram App is also available on Windows, with almost all features as the iOS/Android counterparts. So I'm not sure, maybe they are already using that as well?

</comment></comment><comment><USER39> Great engineering. Instagram always runs snappy and also with low bandwidth (>1Mbit/s). Meanwhile Snapchat does not even know how to download first clicked story video first.

<comment><USER40> Though Instagram stories are pretty slow to load.

</comment></comment><comment><USER41> My project (the weather sensor) is using React Native for the Mobile end. I would still like to work on a professional project to really see how well or bad RN is in an enterprise type project. Having used Titanium Appcelerator on a personal project, I find RN much better than Titanium. I assume it's much better than Xamarin as well.

I think learning RN is a good bet because, it is coming from Facebook. I'm not sure if people remember, but FB on mobile was originally built using Webviews and had notoriously bad reviews because it was slow and laggy. It's because of this lesson that they are in a good position to create a competent platform.

I also think as web developers, we should try to understand more of the tooling/language in one of the mobile platforms of our choice.

</comment><comment><USER42> Did this change occur recently? I've noticed in the past 3-4 months Instagram has become a lot slower. To be fair, it's started to gain some speed in the past month, but I'd be interested to see how this increase in latency coincided with the migration to React Native.

<comment><USER9> When teams at Facebook roll out features or rewrites like this, they almost always monitor performance metrics so I'm comfortable claiming that React Native is unlikely to be responsible for slowness you've seen recently.

</comment></comment><comment><USER43> So I see they have a lot of code reuse between RN iOS and RN Android.

How much, if any, code reuse can there be between React Native and React (proper)?

<comment><USER26> You can't re-use the UI portion but all the business logic, API calls, stores, socket connections, etc...

For Sleeperbot it's 50% code-sharing between desktop / mobile, and then 95% between iOS & Android.

<comment><USER43> Thank you!

</comment></comment></comment><comment><USER44> Thanks for sharing!

I'm currently leading the (soft) transition of a two-platform, not-so-much- shared-code code base (ObjC, Java, Swift, C++) to React Native.

We hit some snags early on (mostly wrt tooling; also prepare to alter your mind set) but as the article states RN yields an astonishing amount of code reuse between platforms as well as heavily reduced turnaround times.

It's way too early for conclusions/doing a post mortem for our project at this time.

Nonetheless I'd say we're able to iterate faster by an order of magnitude and the added value of discussing features and domain logic/behavior for both platforms at the same time while enabling UX/UI to get results/feedback faster is a huge win.

That said, I'm really looking forward to the challenges that lie ahead (i18n, RTL quirks, proper unit/feature/integration testing scenarios, non-trivial native bridging, …)

</comment><comment><USER43> One thing that draws me to RN is over-the-air code updates on iOS.

Are there any other ways of achieving the same result?

</comment><comment><USER45> React and React Native are pretty great pieces of tech, hopefully the ClojureScript story for them continues to improve. When I need to make a mobile app again I can't think of a reason I'd write it in Java/Swift.

<comment><USER46> The story is already quite good (having shipped a production app myself and maintained it for 6+ months). Checkout re-natal for a good template to start.

<comment><USER45> I had found that earlier, I wasn't sure if it was ready enough for production use. Glad to hear it worked for you!

</comment></comment></comment><comment><USER47> I don't think ReactNative has a reason to exist other than Facebook wanting to own Platform (Which they might abandon just like Parse).

Good Read: [https://www.reddit.com/r/androiddev/comments/5qr9xw/avoiding...](https://www.reddit.com/r/androiddev/comments/5qr9xw/avoiding_react_native/dd1wuzn/)

<comment><USER48> I think you might be confusing Facebook with Google.

Ask any app developer that's used React Native or any web developer that's had to create a native app if it has a reason to exist.

Facebook has hundreds or thousands of React developers that - before React Native - could only develop for web. Now they can move their web developers to their native apps almost seamlessly.

<comment><USER49> And that's a good thing? I'm being serious here. The web ranks among the crappiest user experience I have with software I use today. And when I speak with colleagues who do the web development at the company I work for they seem far from happy with their development environments and process. It's like the presentation, in which MB of JavaScript are required to render a few paragraphs of text with a side bar or drop-down menu, went to the development environment where thousands of dependencies are required to produce "hello world."

The last thing I want is to see yet more traveling down the path of "web app" style development for my phone's apps.

</comment></comment></comment><comment><USER50> I'm curious what you guys think of PWAs vs React Native? Is there a clear advantages of one over the other?

</comment><comment><USER51> For my fellow vue.js enthusiasts, check out [https://github.com/alibaba/weex](https://github.com/alibaba/weex) for compiling "vue-like" syntax to native apps

</comment><comment><USER52> I love react native but only in combination with clojurescript as javascript replacement. Speaking of high-performance, is anyone here who has some insights how performance would change when swapping JS with cljs?

</comment><comment><USER53> React Native is becoming the Wordpress of mobile apps.

<comment><USER54> Not sure that's the best analogy.

<comment><USER53> Not sure you get it...

</comment></comment></comment><comment><USER55> This is great news for Enterprises as well, as most have many internal apps that need to be built for different platforms.

</comment><comment><USER56> This is probably stupid but does react native compile down to the running environment? Code in react and then build/compile against iOS SDKs?

<comment><AUTHOR> JS code run on JSC, bridge modules are implemented on objc/java

</comment></comment><comment><USER57> Very cool!

</comment><comment><USER58> Argh, now I see why I can't change anything on the Push Notifications settings page. Nice experiment, Instagram, but could you please fix it and let me disable all notifications within the app, not iphone settings?

<comment><AUTHOR> what's the problem? If it's a generic error message that's s server-side issue unrelated to RN the team is working on fixing.

</comment></comment><comment><USER59> The dirty little secret about React is that it tries to 'reinvent' the DOM tree, and Web Components will be out soon making it all obsolete. Why not just move to Web Components NOW, and not have to rewrite your view logic in 3 or 4 years. Polymer wins easily. React got a head start, sure, but the W3C standards and native browser support for WebComponents makes React redundant and unnecessary, in the very near future.

<comment><USER60> ReactNative doesn't even have the concept of a DOM, so how can that be its dirty secret?

<comment><USER13> React Native has the native view hierarchy as its DOM, and it also has a "shadow" view hierarchy, which is very similar to the concept of shadow DOM.

[https://github.com/facebook/react- native/blob/master/React/V...](https://github.com/facebook/react- native/blob/master/React/Views/RCTShadowView.h)

</comment></comment></comment><comment><USER61> I really want to look at React Native, but every time I pull up my Facebook app on my iPhone 6, it can take upwards of 30 seconds before the interface is useable.

That's on a very fast connection.

So to me the FB app is so slow, it makes me hesitant to give React Native much more thought as you'd figure the FB app would be THE showcase app for it.

Maybe I'm the only one?

<comment><USER52> Someone correct me if I'm wrong but AFAIK the Facebook app isn't really using react native yet, just in very small parts (event dashboard). The rest is still plain old swift and objc.

<comment><USER61> It's listed in the React Native showcase:

[https://facebook.github.io/react- native/showcase.html](https://facebook.github.io/react-native/showcase.html)</comment></comment></comment>


Aaron Levie on How Box Competed with Giants and Won - <AUTHOR> http://firstround.com/article/Aaron-Levie-on-How-Box-Competed-with-Giants-and-Won

<comment><USER2> Nice article, thanks for posting.</comment>


Judge to Microsoft: OK, You Can Keep Selling Word For a Couple More Days - <AUTHOR> http://mashable.com/2009/09/04/microsoft-word-ban-lifted/

<comment><USER2> See also: <http://news.ycombinator.com/item?id=804585></comment>


My Defamation 2.0 Experience - <AUTHOR> http://intelligentdesigns.net/blog/?p=101

<comment><USER2> It occurs to me that we need a more nimble and inexpensive method for removing or forcing the correction of defamatory materials online.

This is a common problem already, but as the web evolves to allow for more easily discoverable anonymous comments about average people (and it will), it will become an even more pervasive one.

<comment><USER3> Here's a startup idea:

A centralized forum where people can respond to potentially defamatory content. Log in via OpenID or FB Connect, enter the offending link, and then tell your side of the story. Freemium model lets anyone do this, but you can verify your identity for a small fee.

Alas, clearmy.name is currently squatted.

<comment><USER4> A site like "Clearmy.name" would be useless unless Google brings that site up at the top or unless readers bothered to fact-check every allegation against that site.

If you've ever gotten a chain letter by email, you know that people can't even be bothered to check Snopes.com before sending a dubious letter to hundreds of "friends", so I sadly doubt that a lot of people would check Clearmy.name.

</comment></comment></comment><comment><USER5> This incident is symptomatic of some of the special problems of online communication:

 _decontextualization_ : it is easier than ever to remove excerpts from their original context, thus creating a more controversial interpretation, which is then rewarded with attention.

 _differential propagation_ : salacious distortions travel faster than balanced understanding, because they're more interesting and compact. (They also resurrect spontaneously, the moment a distortion that's not paired with its antidote is rediscovered by a new forwarding-happy audience or new traffic-over-ethics aggregator.)

Canonical reference and debunker sites (like Wikipedia and Snopes) help, but still can't outrace outrage-as-entertainment and the bonanza of profitable traffic it brings.

</comment><comment><USER6> > the anonymous smear letter ... quoted three sentences out of context: "What > is my position on pedophilia, then? It's really simple. If the child doesn't > want it [sexual contact], is neutral or ambigious [sic], it's > inappropriate."

If the only time that pedophilia is wrong is when the child does not want it, or is neutral about it, this makes it pretty clear that the writer thinks that sexual contact with children __is __acceptable if the child "wants" it (or claims to want it).

It doesn't seem to be much of a stretch at all to conclude that the writer does defend some pedophilia.

<comment><USER7> It's clear in context (and you've again taken the quote out of context) that he's referring to edge cases, like where a 16 year old was prosecuted for having sex with a 13 year old, and so on.

</comment></comment><comment><USER8> While I'm definitely willing to give the author a benefit of a doubt, I don't see how he says his writing got taken out of context... In fact, context is even worse than the quoted words.

"What is my position on pedophilia, then? It's really simple. If the child doesn't want it [sexual contact], is neutral or ambigious [sic], it's inappropriate." It omitted the sentence immediately following: "This excludes most adult/child sexual contact, but only little child/child contact."

He wants to defend the original writing with showing the next sentences, where he writes "this excludes MOST adult/child sexual contact"? Really? Which adult/child sexual contact is ok, then?

And then: "A 16-year-old girl from Oregon, a beautiful, intelligent young woman" ...

When one uses such language to talk about kids.. sheesh.

<comment><USER9>
      Which adult/child sexual contact is ok, then?

The problem with sexual contact between an adult and a child is that one can never be sure that the child wasn't coerced in some way. However, that does not make the inverse true, that every instance of sexual contact between an adult and a child is subject to (implicit) abuse of power.

It seems to me that Moeller was making a subtle point that I have also made in discussions about the subject: that it is perfectly possible to imagine a situation where sexual contact between an child and an adult takes place with mutual consent and without coercion. One can imagine a 12 year old seducing a 30 year old neighbor, without either of them being harmed by the experience. In many discussions, this can be a relevant point, that defuse blanket statements. This does not change a thing about the fact that you want the law to forbid such things.

      And then: "A 16-year-old girl from Oregon, a beautiful, intelligent young
      woman" ...
      When one uses such language to talk about kids.. sheesh.

These 'kids' are old enough to bear children and have done so during the majority of human history. They have all secondary sexual characteristics that are intended to arouse the males of the species and they are fertile. If you don't find some of them attractive, something is unusual with your hormones.

<comment><USER6> > One can imagine a 12 year old seducing a 30 year old neighbor, without > harming either of them.

"One" can imagine that?

I, for one, CAN NOT imagine that sexual contact between a 12 year old and a 30 year old can ever be anything other than a grave problem.

<comment><USER9> There has been plenty of research into the way both men and women that have experienced early sexual contact rate those experiences later in their life, with many case stories. You would be surprised by the amount of positive experiences. They are only a minority and it doesn't change the way the law should be or the fact that we should disapprove of such encounters. However, it does change the 'ultimate evil' view that people tend to have of pedophilia. Like in the case of theft or murder, there are plenty of exceptions, where we can understand why someone would break the law. We may even sympathize with someone that kills an abusive husband or steals from Goldman-Sachs after losing everything. In the same way, we should be capable of sympathizing with some of the people that have committed an act of pedophilia.</comment></comment></comment></comment>


Ninja announces he is leaving Twitch to stream exclusively on Mixer - <AUTHOR> https://www.theverge.com/2019/8/1/20750393/ninja-mixer-exclusive-twitch-fortnite-streaming-gaming-announcement <comment><AUTHOR> I know how HN feels about streaming culture, but this is a move that'll have significant trickle-down effects.

<comment><USER2> Maybe this one will do more, but when Pewd did his live-streaming on Dlive it helped Dlive's numbers a bit but in all honesty the growth wasn't as large as many people thought it would be.

I think the same will happen here where at first there will be some fuss about it, and in two weeks people will have forgotten about it.

He did lose the biggest tournament for Fortnight and they did recently crown a new 'fortnight king'.

The majority of his viewers are most likely teenagers between the ages of 12-16 (I could be wrong but haven't seen his demographic stats), who are more likely to be loyal to whatever the flavor of the week is rather than stay loyal and switch platforms with him.

</comment></comment><comment><USER3> I wonder what Microsoft's number was to get him off of Twitch; it has to have been alarmingly high.</comment>


Fascism is back. Blame the Internet - <AUTHOR> https://www.washingtonpost.com/news/posteverything/wp/2018/05/21/fascism-is-back-blame-the-internet <comment><USER2> Imagine a minion wandering into a dry, dark cave, filled with TNT, trying not to set a spark that would WHOOSH, set the tinderbox on fire.

Now apply that imagination to the following phrase, given with maximum caveat and desire to hear others thoughts on it, nothing more:

Fascism never left. The internet is just a mirror.</comment>


Social Media Could Make It Impossible to Grow Up - <AUTHOR> https://www.wired.com/story/excerpt-end-of-forgetting-kate-eichhorn/ <comment><USER2> The Xerox Star appears to have been truly amazing, and must've been way ahead of its time. Apple copied a whole lot from them, then popularized the GUI- system, which in turn was then copied by Microsoft in Windows, and the rest is history.

I first heard of the XS on a documentary, but I can't remeber which, and I'm currently bandwidth restricted, so I can't go hunting on YouTube. But IIRC, it was a documentary on either Apple, Steve Jobs, early Microsoft/Windows or GUIs, and seemed professionally made.</comment>


Mediachain enivisions a blockchain-based tool for identifying artists' work - <AUTHOR> http://techcrunch.com/2016/06/01/mediachain-enivisions-a-blockchain-based-tool-for-identifying-artists-work-across-the-internet/ <comment><USER2> > Imagine being able to connect with the artist of a viral GIF you see in your > feed, learn the history or origin of any image, or automatically reward a > musician whenever you press play.

OK, I've gone and imagined it. I'm not entirely convinced that any appreciable number of people actually want to do these things though.

Is this a clever application of a trendy technology creating a solution that's searching for a problem? What are the real life _business model_ use cases for such a tool?

<comment><USER3> Our goal is to make the monetization of media follow the content, instead of flowing from the platform like it does today.

Today, Mediachain can automatically link an image to who made it. That same channel can be used to transfer value directly through content in the future. We believe that this will create a huge opportunity for developers to build new media applications that reward creators directly through their content, no matter where it is.

<comment><USER4> And what's the utility to end-users, who just want to share a cute picture of a cat, that they should care? And thus that a media host should care to implement this?

<comment><USER5> Perhaps the media host would receive less DRM take downs and a more accurate 'relevant content' prediction model since the true origin of content is confirmed.

<comment><USER4> Given that DRM takedowns are already not meaningfully linked to accuracy or relevance, it seems unlikely that Mediachain will change that.

</comment></comment></comment></comment></comment><comment><USER3> Hey HN, I'm Denis, one of the creators of Mediachain. Happy to answer any questions!

This Co.Design article does a great job of explaining how Mediachain helps creators: [http://www.fastcodesign.com/3060426/could-blockchains- solve-...](http://www.fastcodesign.com/3060426/could-blockchains-solve-the- webs-image-attribution-problem)

Here is our official fundraising announcement with more details: [https://blog.mediachain.io/mediachain-labs-funded-by- union-s...](https://blog.mediachain.io/mediachain-labs-funded-by-union-square- ventures-andreessen-horowitz-to-build-a-universal-open-337ee690f61b)

<comment><USER6> Hey Denis, What differentiates your company from the hundreds of other "blockchain-based" identity companies that do almost the same thing?

I've seen _a lot_ of companies throwing around these exact buzzwords and fancy landing pages for 5 years now and most just seem to be raking in VC funding while fading into obscurity a year later.

There's a list if you scroll down on this link: [http://www.blockchaintechnologies.com/blockchain- companies](http://www.blockchaintechnologies.com/blockchain-companies)

<comment><USER3> We're creating a completely open, decentralized media library and our goal is to help creators reach their audience directly through their content.

We believe that value should follow the content, instead of flowing from a platform.

Today, Mediachain helps preserve attribution for creative works wherever they go, so you can know the creator of that anonymous viral image you see in your feed.

In the future the same infrastructure will enable financial exchange directly between a creator and their audience through their works.

We've written some more about the implications of Mediachain here: [https://blog.mediachain.io/the-gif-that-fell-to-earth- eae706...](https://blog.mediachain.io/the-gif-that-fell-to-earth-eae706c72f1f) [https://blog.mediachain.io/what-a-blockchain-for-music- reall...](https://blog.mediachain.io/what-a-blockchain-for-music-really- means-e2f8dc66d57d#.y4xge49cc)

<comment><USER6> So it's on "IPFS" so I'd need to buy into the "filecoin" scam which is going on? Why not just use bitcoin?

<comment><USER7> Right now, filecoin is only a whitepaper. There's no implementation yet. Possibly never.

Now, Filecoin seems to, from the whitepaper, gotten it right. We all know of the tragedy of the commons. Their solution was an elegant way around that, by granting filecoin to whom share their bandwidth and local storage. And then, others will take your coin for duplicating files you want copied.

But right now, it doesnt exist. And IPFS still works flawlessly.

<comment><USER6> > by granting filecoin to whom share their bandwidth and local storage

This is what every blockchain does.. (lottery mining)

>But right now, it doesnt exist. And IPFS still works flawlessly

Reading the IPFS website, I was under the impression IPFS nodes were utilizing filecoin. My bad.

<comment><USER8> Filecoin is one of several proposed approaches for encouraging seeding ("pinning") in the IPFS network. In our network (Mediachain), we will probably start out by using tit-for-tat pinning between peers for this purpose.

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> It's a great idea with a lot of utility, but my question is: How does dispute resolution work? I.e. How do you prevent bad actors from beating the original artist to the punch, and registering someone else's artwork as theirs on the blockchain?

<comment><USER3> The short answer is reputation. Consumers of the data should be able to filter by cryptographic signature to prioritize users that have more reputation over ones that don't. A timestamp is just one piece of metadata.

For example, on a platform like Soundcloud there are many Rhiannas but it is obvious which account the "real" Rihanna is because she has the most followers, likes, etc. Popularity can be another data point.

Projects like Blockstack already offer solutions that take a similar approach, allowing you to link your social media accounts so your identity is more trustable.

We also envision developers and trusted organizations like Creative Commons or DPLA creating indexes on top of Mediachain to help users filter the data.

<comment><USER10> Reputation is not as easy to measure as simple popularity. There are very many "content creators" like LadBible who are orders of magnitude more popular than the actual content creators they steal from.

</comment></comment></comment><comment><USER11> What happens if someone crops and scrubs the metadata of the original image and then shares it? Can mediachain identify the original source of the new image?

<comment><USER3> Any metadata that is stored in EXIF or part of the file can be easily stripped out. This is why Mediachain uses perceptual recognition technology similar to Shazam or Google Image search to identify media based on how it looks or sounds, automatically resolving to metadata stored in Mediachain. Near duplicate image detection is quite far along and works very well even for images that are cropped, distorted, etc.

More on our approach in this post: [https://blog.mediachain.io/perceptual- resolution-9c00ad5ca55...](https://blog.mediachain.io/perceptual- resolution-9c00ad5ca555?source=latest)

Details on the implementation in this RFC: [https://github.com/mediachain/mediachain/blob/master/rfc/med...](https://github.com/mediachain/mediachain/blob/master/rfc/mediachain- rfc-3.md)

</comment></comment><comment><USER12> How does your perceptual recognition technology distinguish piracy from Fair Use? Given the impossibility of knowing with certainty which jurisdiction the end user is in, which Copyright scheme are you assuming? Can works be registered as Public Domain or as subject to a permissive license such as Creative Commons?

This sounds like you're making an Internet-scale DRM scheme. What precautions are taking to protect people from creators trying to take more than copyright provides?

<comment><USER3> The goal of Mediachain isn't to enforce scarcity of media online, but to help creators benefit from the scale of sharing. Today, an image can easily go viral without viewers knowing who the author was. Mediachain makes sure that the creator can be present wherever the content goes, automatically.

Our view is that bits are easily reproduced and there is no way to stop that, and until now there's been no easy way for creators to benefit from that. Mediachain allows creators to connect directly to their audiences through the content itself. This way, gratitude can be exchanged through attribution, and in the future, even a payment directly through the content.

</comment></comment><comment><USER13> Ok. How about this:[http://i.imgur.com/heXkHzU.png](http://i.imgur.com/heXkHzU.png)

It's a partial screenshot of the article in my browser. I intend to use it in a lecture as an example of the complications behind fair use. (irl I really do teach such a lecture). Who is it attributable to? The artist of the drawing, me, techcrunch or mediachain?

In short: I am suspicious of any service, and there have been a few, that claims to be able to identify the owner or creator of a work. It's a layering problem, with nearly every digital image being at some level the property of a great many people.

(fyi: if this was a law exam, the best answer is "me" in that I created the composition and am well-covered by fair use in my use of it here.)

<comment><USER8> Declaring ownership and provenance with complete certainty is very hard, which is why we don't profess to do it. Our approach is to nondestructively aggregate potentially conflicting claims and allow for more nuanced resolution at read time, as appropriate for a given situation. In your particular example, we would have a chain of derivative works.

Obviously, in certain cases (payment routing) a definitive answer is required, but this is already something that PROs and similar organizations deal with on a daily basis, and we can support their arbitration.

<comment><USER13> If you plan on linking money to content, you better have a really definitive answer. That movement of money is essentially the purchase of a license. If a business or individual relies on your answer as to who that license should be purchased from, they do not want to be hit with a copyright complaint should the real owner appear. And if people end up abusing your system to monetize content that they should not, expect all sorts of legal docs in the mail.

<comment><USER8> Absolutely! Spotify's 30M settlement with NMPA is a great example of this kind of failure in existing systems

</comment></comment></comment></comment><comment><USER14> NYC-based Monegraph anyone?</comment>


IPhone leak is getting bigger - <AUTHOR> http://www.h-online.com/security/news/item/iPhone-leak-is-getting-bigger-Update-1012575.html <comment><USER2> See update at bottom: The leak only applies to phones that were shut down while unlocked. It appears the phone doesn't lock until after the host pairing code starts so there is a window. This will _not_ let an attacker into a lost, locked phone.

But if you shutdown your phone, it would be a good idea to lock it first.</comment>


What part of "No, Totally" don't you understand? - <AUTHOR> http://www.newyorker.com/books/page-turner/what-part-of-no-totally-dont-you-understand <comment><USER3> Seems simple enough to me. The "No" is directed at defusing a redundant introductory lecture.

Translate as:

"No, you don't have to explain further, I completely understand"

"No, stop, I've already heard of that and I'm totally onboard with your opinion"

I spend a lot of time being introduced to topics I'm already familiar with, but just nodding politely or saying "yeah" is interpreted as active listening, as "I'd like to hear more" rather than "Yeah, you can stop right there", which is too confrontational to use directly. What's your preferred way of expressing this sentiment, of interrupting someone in order to claim knowledge in their present topic, without indicating hostility or belittling them?

Extending one of the other posts, "No, your assumption is incorrect, I am in fact already familiar with this subject and I agree wholeheartedly with your sentiment".

<comment><USER4> I think this is the correct explanation. Can someone find a counter-example where "no" is used in the weird way the New Yorker piece is describing, but where it can't be taken to mean "No, you don't have to go on; I know exactly what you're talking about/asking"?

The example given by yathern...

> A: I wasn't sure if you'd like to go to the park - do you want to?

> B: No, totally! Definitely want to go.

...seems to fit.

<comment><USER5> > Can someone find a counter-example where "no" is used in the weird way the > New Yorker piece is describing

I haven't listened to it, but I've heard that this goes into a bunch of different scenarios:

[http://www.slate.com/articles/podcasts/lexicon_valley/2013/0...](http://www.slate.com/articles/podcasts/lexicon_valley/2013/06/yeah_no_lexicon_valley_slate_podcast.html)

</comment></comment></comment><comment><USER6> I think part of the reasoning behind this type of response is that each response is dealing with a different level of abstraction.

> A: Did you see any birds at the park?

> B: Yeah, no - I didn't see any.

B is first acknowledging the question and it's intent - as well implying that maybe he did look for birds - which then flows into the fact that 'no' \- he did not see any.

This can be done with the 'No, totally' example as well.

> A: I wasn't sure if you'd like to go to the park - do you want to?

> B: No, totally! Definitely want to go.

B is first saying 'No' to the implied "You don't want to go.". B is essentially saying 'The assumption you made was wrong - I do indeed want to go'.

Granted, I made these examples to be easy to dissect, and it's likely that from this pattern, it devolved into common vernacular despite being used in this way. But I think it still holds up for most uses.

<comment><USER7> Your second example is the one I'm most familiar with. I say stuff like that often. It's got nothing to do with all the article's other reasons -- it's usually just because my mind is racing faster than I can speak.

Someone : "I thought you really wanted to use the paintbrush. Did you see the if there were any rollers?"

Me (mental response): "No (I didn't want to use the paintbrush). Yes (I did see the rollers) but they looked bad".

Me (actually said out loud): "No. Yes, but they looked bad"

</comment></comment><comment><USER8> The different possible origins of this phrase are interesting. The article mentions a couple, and there's some in the comments here.

I've always seen it as I'm saying "no" to alleviate any doubt the other person had that I did not agree with their statement.

The conversation might go: A. I really think "OK Computer" is the best Radiohead album. B. No, totally!

But the implication is more like: A. I think "OK Computer" is the best Radiohead album. Am I crazy for not picking "Kid A" or "In Rainbows?" B. No, I don't think you're crazy for liking "OK Computer" the best. I totally agree with you.

Does anybody else see it this way? (Please respond with "No, totally!" (It's okay if you don't like "OK Computer"))

<comment><USER9> I agree with this. in the lena DUNHAM case she seems to be affirming maron's assumptions. The question implies that if you don't agree with me I have totally misunderstood you as a person. If she replied with yeah, ok(or any other negative word), she would be communicating her new knowledge of marons inability to relate and the either dismissing the statement or rejecting it. Much conversation is to relate as apposed to communicating specific ideas. on a slight tangent that new usage of random to mean unexpected is more actually meant to me of all the actions I've seen you take I would not have predicted this on.

</comment></comment><comment><USER10> No, English is messed up :P

I learned about some of this from learning Japanese where I had to learn you answer the question directly rather than confirm the negative by repeating it.

In Japanese:

Q: You don't like cigars do you

A: Yes (Yes I don't like cigars)

In English

Q: You don't like cigars do you

A: No (it's effectively confirming the negative of "like")

My Japanese friends learning English of course found English very confusing. I'd point out if you answer the question with more than just "Yes" or "No" it's almost always clear.

A: Yes, I don't like cigars

A: No, I don't like cigars

Both have the same meaning, whereas just Yes or just No is ambiguous.

Of course the article had examples of just yes or just no. To someone of the same language background they are probably unambigious

<comment><USER11> I like the way Mandarin does this. There's no pure "yes" or "no," just a negation you can apply to a verb. The answers would be either "like" (yes, I like cigars) or "not like" (no, I don't like them).

<comment><USER12> Does this work for questions phrased in the negative? Ni bu hui shuo zhongwen ma? (You can't speak Chinese?) could be responded to with "bu hui", "hui", or "dui" I think. "Dui" (correct) would mean... Right, I cant? "Dui bu dui" is also an interesting departure for this...

<comment><USER13> Yes, it also works for questions phrased in the negative, and 对/不对 (dui / bu dui) ("that's right"/"that's not right") does not make any sense as a response to that question, you need to use 会/不会 (hui/ bu hui) ("I can"/"I can't"). It's all very explicit compared to most languages.

But another, perhaps more natural way of negatively phrasing the question would be "你不会说中文,是吗?" or "你不会说中文,对吗?" or even the odd formulation that you mention "你不会说中文,对不对?" (You don't speak Chinese, right?), in which case you could respond with 对/不对 ("that's right"/"that's not right").

<comment><USER13> It's too late to edit, but I now realize that what I wrote is pretty confusing. Especially the part with "You don't speak Chinese, right?" which should be between quotes. It's the translation of the previous sentence, not something that I'm actually asking... And I should add that I don't speak Mandarin fluently, but I'm still confident about the above.

<comment><USER14> I studied Chinese in college for a few years. Everything you wrote is correct.

</comment></comment></comment></comment></comment></comment><comment><USER15> In New Zealand we say "yeah, nah", which is sort of a similar thing to this.

We've even got ad campaigns with it now:

[http://www.alcohol.org.nz/alcohol-activities- services/campai...](http://www.alcohol.org.nz/alcohol-activities- services/campaigns-communication-work/say-yeah-nah-1)

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

</comment><comment><USER16> In South Africa we say "Ja, Nie" (which translated is "Yes, No" or "Yes and No"). In this case there does happen to be a theory as to where it came from. The story goes that during the Anglo-Boer War[1] when Afrikaaners were captured they would use it as a response during interrogations - <USER2> exceptionally defiant phrase. There is no explanation or story for how it entered common use but you do hear it almost on a daily basis.

[1]: [http://en.wikipedia.org/wiki/Second_Boer_War](http://en.wikipedia.org/wiki/Second_Boer_War)

</comment><comment><USER17> One of my favorite racing drivers was recently interviewed, made this mistake and then immediately mocked himself for doing so, pretty funny: [https://www.youtube.com/watch?v=BuJ4trSKS-0&feature=youtu.be...](https://www.youtube.com/watch?v=BuJ4trSKS-0&feature=youtu.be&t=39s)

<comment><USER18> This is great because he says "Yeah, no", notices it, calls himself out for it, and then _immediately does it again_ , and he stops and calls himself out a second time, and then you can see him make a visible effort to omit the "no" the third time around.

</comment></comment><comment><USER19> I think with "No, Totally" in particular, the "no" is refuting something implied. So with "Makes you want to hit them", you are instinctively saying "no" the cultural prohibition against violence. "No that's not normal behavior, but yeah, totally I want to hit them."

For "Would you like ice cream?" you'd say "Totally" because the connotation is good. "Don't you just want to eat the whole tub of ice cream" \-- "no, totally", is a reasonable response because you're resisting the negative connotation of pigging out.

I think this is actually unrelated to the "Yeah, No" phenomenon.

<comment><USER20> Yes, totally. :) I read the whole article waiting for this explanation to be brought up.

</comment></comment><comment><USER21> This is pretty crazy analysis for what I see to be a pretty simple phenomenon. Put the truncated "Oh" in front of the "no", in order to indicate emotional sentiment, and you have your simple explanation.

"oh no" = hat tip to an [unexpected] unpleasant feeling

"oh yes" = hat tip to an [unexpected] pleasant feeling

Take the "Did you see any birds at the park?" "yeah, no, I didn't see any" = "Oh yeah, it would have been nice to, but no I didn't see any.

</comment><comment><USER22> I see this more as "No, you're not taking it far enough. It's even more of that thing you said than how you said it," and less as an auto-antonym.

</comment><comment><USER23> > At first blush, "no" does not appear to be the kind of word whose meaning > you can monkey with. For one thing, there is its length. At just two letters > and one syllable, it lacks the pliable properties of longer words. You can't > stuff stuff inside it. [...]

I guess these 'long form' articles have to be long, but some of these paragraphs seem pretty forced.

<comment><USER24> This article seems particularly bad (I stopped reading halfway through), but a lot of articles published in The New Yorker seems to do this kind of meandering. The other day I was reading a story about Jake Leg[0], and if you compare it to the corresponding Wikipedia article[1] the difference is really striking---the Wikipedia article tells you straight away what caused the contamination, while the New Yorker story somehow tries to keep you in suspense.

I guess I just don't see what these authors are trying to do. If someone started reading an article about "no, yes", probably they want to know about "no, yes". Why intersperse a bunch of unrelated fluff?

[0] [http://www.danbaum.com/Nine_Lives/Articles_files/Jake%20Leg,...](http://www.danbaum.com/Nine_Lives/Articles_files/Jake%20Leg,%20New%20Yorker.pdf) [1] [https://en.wikipedia.org/wiki/Jamaica_ginger](https://en.wikipedia.org/wiki/Jamaica_ginger)

<comment><USER25> I respectfully disagree. I thought this "no, totally" article was entertaining and enjoyable.

It's strange to me that you're comparing The New Yorker and Wikipedia. One publishes stories. The other publishes reference articles. I appreciate suspense in a story; I appreciate a quick summary of the facts in a reference article. They are very different forms of writing.

</comment></comment></comment><comment><USER26> It feels almost like there is an implied leading question like: "Am I wrong?"

<comment><USER27> No, that's exactly right.

</comment></comment><comment><USER28> Weird, I remember when I was in NZ a few years back "yeah nah..." meant "yes" which confused me. I think Australia had it too, but I'm not sure.

Another semi-related but confusing thing was while I've been living in Czech Republic I visited South Korea. I ended up getting twisted up trying to answer yes\no in Korean because...

English: Yes | No

Czech[1]: No | Ne

Korean: Ye\Ne | Anio

Each language has one that's annoyingly similar to the opposite in at least one different language. Trying to get this right after a few beers is _hard_.

[1] = "No" is a common contraction of "Ano" but even then that conflicts with Korean "Anio".

</comment><comment><USER29> Here's another possibility, the first one that occurred to me: the "no" is a rejection of the implicit alternative to what was stated.

The author ends up at a fairly convincing alternative explanation, though.

<comment><USER30> This is sort of what I've assumed recently. I hear this a lot and it always sounds like there is an implicit "do you disagree?" after the first statement to which the person is responding "no, I agree with you."

</comment></comment><comment><USER31> I've always wondered how "awful" came to mean "bad" (the opposite of "awe full") and then has apparently added the meaning "very" ("awfully good"?)?

<comment><USER9> Words flipping from positive to negative and visa versa is very common in language. Just the other day I was talking to some younger kids about hockey and they were going on about a goal being "filthy" and "Dirty". In my day a dirty goal was one that didn't look nice. To them these goals were so naughty(as in sexy) you wanted to take a shower after seeing them.

Here's some reading [http://www.dailykos.com/story/2014/03/15/1284995/-Origins- of...](http://www.dailykos.com/story/2014/03/15/1284995/-Origins-of-English- Amelioration-and-Perjoration)

<comment><USER32> I don't think this particular case is a new-ish usage; "filthy" has long been popular in baseball to describe a very crafty pitch or pitcher, or "sick" in music for an amazing solo or musician.

</comment></comment></comment><comment><USER33> This part, though somewhat unrelated to the topic, is pleasantly insightful:

> Saying yes as often as possible is, famously, the first rule of improv, > vital to maintaining energy, imagination, and humor. It is also, I have long > thought, a sure sign that you're falling in love, not to mention crucial to > sustaining that love over the long haul. And, while sometimes impractical, > dangerous, or just plain dumb, saying yes to as much stuff as possible is, > over all, a pretty good strategy for getting through life.

</comment><comment><USER34> I didn't know this bit:

 _' Back when English was a four-form system, it, too, had a si—a word used specifically to contradict negative statements. That word was "yes." To affirm positive statements, you used "yea"'_

(Then continues about the similar no / nay.)

Anyway, I'm surprised the writer did not work in the joke about the lecturer saying:

"As you know, a double negative becomes a positive, but the reverse does not happen."

Voice from the back of the room: "Yeah, yeah ..."

<comment><USER35> The punchline is "Yeah, right"

</comment></comment><comment><USER36> It kind of grates on me when someone always answers in the affirmative with 'No, [affirmative]'. It has become more and more common (especially when I speak with people from California).

I think there's combination of forces at play. But I think a big factor is that people are afraid of appearing too agreeable. It would just be way to overt and enthusiastic to just say 'Yeah, totally' for Californian sensibilities.

</comment><comment><USER37> French has an interesting word which somewhat clarifies this situation: "si" (not the conditional "if" in this case).

For lack of a better explanation, it's essentially a negative "yes", used to negate a negation.

For instance:

      A: "Don't you understand?"
      B: "Si"

Meaning "No, I don't agree with you, but yes, I do understand".

I find it very simple yet quite powerful.

<comment><USER38> I don't think it actually means ""No, I don't agree with you." I think it's just an unambiguous "Yes, I do" answer to a negated question.

<comment><USER37> I was mostly trying to emphasize my perception of the meaning as a native french speaker. Not saying this necessarily makes me right, I just wanted to highlight both the negation of the question itself as well as the confirmation of the underlying statement.

</comment></comment></comment><comment><USER39> The edge case where it is expected that one would not understand a spoken response of "No, totally" is where the thing it was said in response to both was phrased such that a negative answer could be one of absolute agreement and where the previous thing said contained in it the word totally. This case could give the interpretation that while you more or less agree you would like the word totally omitted from your agreement.

Example(leveraged from jasallen's example in another post): Don't you totally want to eat the whole tub of ice cream?

As a spoken response in this edge case "No, totally"(yes I very much want to eat it all) would be indistinguishable from "No totally" (yes I want to eat it all, but I am not as enthusiastic about doing so as you are).

</comment><comment><USER40> As a non-native English speaker "No, Totally" doesn't sound natural at all to me ("Yes, Totally" sounds better and makes way more sense).

I only understood what the author was really talking about when he introduced other examples (like _to dust_ ).

<comment><USER41> >As a non-native English speaker "No, Totally" doesn't sound natural at all to me

I'm a native English speaker and "No, Totally" doesn't sound at all natural to me either.

<comment><USER42> Agreed. Even with my British flair for using double negatives for cautious agreement, "no, totally" sounds like a particularly awkward Americanism.

</comment></comment></comment><comment><USER43> Made me wish for a comeback of the yeas and nays of yonder. It's pretty amazing how many different languages struggle with this, and how some have tried to deal with it using a 4-tuple instead of a 2-tuple.

</comment><comment><USER44> I can't say I've noticed this before, which leads me to think it's probably an American colloquialism, but that's my default response to these kinds of things.

Could be that I've just not noticed it.

</comment><comment><USER45> In Australia, we have "yeah nah yeah", which is a similar phenomenon. I have no idea where it originated. I think "nah yeah nah" may also be prevalent.

</comment><comment><USER46> It could read as, "No, I was not going there, but since you did, I agree"

The "NO" indicates a mismatch in the train of thought and logical flow, or expected logical flow. So it's noted, communicated, followed by a basic response to the unexpected dialog.

Where the flow is expected, seems like this would be awkward, and just a "totally" would work.

</comment><comment><USER47> The four-word system (yea, nay, yes, no) is interesting. Might the modern "yeah" be a relic of "yea"?

The following sounds strange to me:

      Shoot, there aren't any open pubs in Canterbury at this hour.
      Yeah.

But the following sounds just fine:

      Is Chaucer drunk?
      Yeah.

<comment><USER14> _Yeah_ is indeed from _yea_ , from Old English _gea_. All three were originally pronounced identically, but _yea_ underwent a sound change so that it now rhymes with _yay_. _Yeah_ is one of the few words to have retained its Old English pronunciation.

[https://en.wiktionary.org/wiki/yeah](https://en.wiktionary.org/wiki/yeah)

</comment></comment><comment><USER48> Reminds me of German 'doch'

</comment><comment><USER49> "No, you're not crazy" seems to fit the sentiment most closely.

</comment><comment><USER50> I would blame the French. Frenchmen speaking English badly often say Borat like phrases, for example "its great, no?". It happens when you learn vocabulary without grammar rules.

<comment><USER51> What grammar rule is violated? The question "is it not?" Is completely valid English and common with French speakers.

I would literally argue that it's ironic that most English speakers have a bad command of the language. Of course you're experience may be different. The reality is that grammar is often, especially in spoken language, is butchered. It's affect is that many people could care less.

<comment><USER52> God, I hope that second paragraph is _intended_ to illustrate the irony (or you don't fall in the native speaker category!)

:P

</comment></comment></comment><comment><USER53> Are we sure we're spelling it right? Is it an abbreviated version of "I know, totally"?</comment>


Finding Large Primes by calculating n^2-2, Checking Validity with Legendre   - <AUTHOR> http://www.decompiler.org/r2primes.htm

<comment><USER2> Fail.</comment>


Ask HN: Wanna watch tech/startup events in Silicon Valley? - <AUTHOR> If I livestream events from SF such as tech events, start-up events, meet-ups of ycombinators etc.
1) would you like to attend alive and ask questions? 2) would you pay for your question to be answered? 3) would you like to get a newsletter about events of your interested subjects or people? 4) would you sponsor this activity? 5) what kind of trouble can occur during this process? Best regards, Volkan <comment><USER2> 1) would you like to attend alive and ask questions? Depends. 2) would you pay for your question to be answered? Nope 3) would you like to get a newsletter about events of your interested subjects or people? We are under information bombing. My RSS feed is full already. No. 4) would you sponsor this activity? Nope. 5) what kind of trouble can occur during this process? Process? Define process.</comment>


Why I hate your Single Page App - <AUTHOR> https://medium.com/@stilkov/why-i-hate-your-single-page-app-f08bb4ff9134#.uwyldkird <comment><USER2> If breaking browser features means I don't have to install Flash or Java to run the _application_ then please break as many goddamn browser features as you want.</comment>


Ask HN: Citus/Postgres as an alternative to NoSQL - <AUTHOR> Is using the Citus extension to Postgres a sensible and scalable alternative to NoSQL databases? DynamoDB seems really expensive depending on the use case and managing Cassandra seems harder than Postgres.
I'm wondering if my hunches here are valid.
Note that Citus MX is in beta and will eventually be open source. It allows fully decentralized nodes (no master node bottleneck). <comment><USER2> I'll bite despite not being the most qualified person around to answer the question :)

First of all. It's well considered to think about alternatives to NoSQL. You lose _so much_ correctness and resilience by moving to systems like Mongo and Cassandra that throw ACID out the window. At some point of scale you're going to need to loosen your data constraints to allow further growth, but most people aren't actually going to get to that point, and of those left over, practicing some basic pragmatic data austerity may allow you to avoid "webscale" databases altogether.

Regarding Dynamo: I've used it on fairly large projects at two companies now. It _mostly_ works as advertised, but its nature means that you're constantly fighting the system if you ever need to access data in a way that you hadn't originally considered. You can scan relatively cheaply along an index, but if you have any other predicate condition that needs to be added, you'll have to fall back to seq scanning the table. This is obviously slow, but also costly because it'll have a huge impact on your provisioned read throughput.

On both projects we eventually had to think about moving off on Dynamo because of serious troubles with ingestion bottlenecks. I wasn't directly involved in either project so I have a little trouble remembering the exact details, but both problems were essentially related to the partitioning balance of incoming data. You can provision as much write throughput as you want, but if you're data isn't balanced perfectly by partition key as it comes in, single shards can become exhausted and put severe pressure on the entire system.

Regarding Citus: I still haven't used it directly, but Postgres is obviously a great system, and Citus seems to be a nice augmentation for its functionality. The fact that it can guarantee atomicity, consistency, and isolation within the bounds of a single shard is potentially _huge_ for allowing you to maintain incredible robustness even at scale.

I had a casual conversation with a CloudFlare engineer once wherein I asked them about the dirt, but they didn't give me any and seemed to be fairly content with the product.

Regarding Cassandra: again, no direct experience. I guess this is where you eventually need to go if you scale out far enough, but it seems like an incredible pain to setup, build with, and manage.

</comment><comment><USER3> (Marco from Citus Data)

It depends on the use-case, but PostgreSQL and Citus can be a sensible alternative to NoSQL.

RDBMS and NoSQL are on the opposite ends of the scaling spectrum. RDMBS provide very rich functionality and put few restrictions on your data model, but require the data to be stored one big lump on a single machine. NoSQL databases provide minimal functionality and put severe restrictions on your data model (must be a key->value set), but can distribute the data across many machines.

Citus sits somewhere in the middle. The ideal use-case for Citus is one in which your data is kind of lumpy/relational, but can still be distributed by a particular key. The most notable example is multi-tenancy [1]. If you're running a (B2B) SaaS application with many customers, your queries are usually specific to a particular tenant, which means you can probably add a tenant_id column to all your tables and distribute the tables by that column. Citus automatically co-locates [2] data to support joins between different tables on tenant_id. You can then use _full SQL_ and ACID transactions as long as you're always filtering by one specific tenant, and a useful subset of SQL for parallel queries across all tenants (incl. inner/outer joins). Citus is far more capable than most databases in this area, partly because it can build on the querying features of PostgreSQL, rather than having to implement them from scratch.

The main advantage of using Citus over PostgreSQL in this case is that you can scale out memory, CPU, and storage space to keep up with your read workload. In addition, it provides parallel aggregations through INSERT..SELECT and parallel indexing when performing a COPY, allowing you to keep up with bulk write workloads. The main drawback is that you cannot perform arbitrary SQL queries across all the data and some queries may require a different data model.

The main advantage of using Citus over NoSQL in this case is that you can use arbitrary single-tenant SQL queries and indexes, which makes data modelling far simpler and thus cheaper. Being able to perform parallel cross-tenant analytical queries and parallel aggregation [3] also avoids the need for maintaining separate systems for analytics (again, cheaper). Bulk loading through COPY can provide extremely high write throughput at relatively low cost [4]. A drawback is that, to provide consistency, Citus has designated primary nodes for taking writes. If a primary goes down there will be ~1 minute of down-time for the keys stored on that primary until the secondary takes over (similar to e.g. Kafka). However, this is not a huge concern for most applications, especially considering that PostgreSQL is very stable software so crashes are usually only hardware related.

In a pure key-value storage use-case, the extra functionality provided by Citus is not as beneficial as it is in the multi-tenant use-case, though features like JSONB, GIN indexes, SQL functions and ACID transactions can still be invaluable. In terms of short request throughput, regular Citus is comparable to a single PostgreSQL node in being able to sustain around ~50k writes/sec, which is less than typical NoSQL databases. However, if you need more than 50k/s writes, then Citus MX will be able to scale out your write workload horizontally [5].

For key-value use-cases, I would say Citus (MX) is competitive with NoSQL databases, but not specifically better or worse, just making different trade- offs. The big advantage is mainly that, if one day you decide you also need analytics, or a new query, or a new filter, or a new conversion, then you don't need to deploy a new system and probably won't have to remodel your data.

[1] [https://www.citusdata.com/blog/2016/08/10/sharding-for-a- mul...](https://www.citusdata.com/blog/2016/08/10/sharding-for-a-multi-tenant- app-with-postgres/)

[2] [https://www.citusdata.com/blog/2016/12/22/scaling_out_sql_wi...](https://www.citusdata.com/blog/2016/12/22/scaling_out_sql_with- colocation/)

[3] [https://www.citusdata.com/blog/2016/11/29/event- aggregation-...](https://www.citusdata.com/blog/2016/11/29/event-aggregation- at-scale-with-postgresql/)

[4] [https://www.citusdata.com/blog/2016/06/15/copy-postgresql- di...](https://www.citusdata.com/blog/2016/06/15/copy-postgresql-distributed- tables/)

[5] [https://www.citusdata.com/blog/2016/09/22/announcing- citus-m...](https://www.citusdata.com/blog/2016/09/22/announcing-citus-mx/)</comment>


IBM 5150 emulated in JavaScript - <AUTHOR> http://jsmachines.net/

<comment><USER2> This gave me nostalgia chills.</comment>


Micro Experiments - <AUTHOR> http://quantifiedself.com/2011/04/micro-experiments/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+QuantifiedSelf+%28The+Quantified+Self%29 <comment><USER2> I wish that science education, especially at the middle school level, focused on stuff like this. As it is, science education isn't for the most part about learning to do science, as it is about learning about a bunch of theories that were derived via science. Having kids do actual experiments on themselves would be great, both because it would help them understand the utility of science and because it would actually teach them to do science.

(It seems like most "experiments" we did in my grade school science classes weren't actually scientific; they were really just hands-on activities. Even if they were scientific, we rarely had to do the experimental design.)</comment>