Introducing React Native [video] - <AUTHOR> https://www.youtube.com/watch?v=KVZ-P-ZI6W4 <comment><USER2> I'm part of the group that thought "what the hell?" when I first saw the React syntax - but seeing this has completely changed my mind and I'm really looking forward to picking up React as soon as possible.

If this delivers on its promises (no reason to assume it won't, seeing as it's already being used in large apps) then it's going to change the mobile development landscape.

It sounded like they may even be hinting at in-browser testing the way they were knocking on provisioning profiles and perhaps maybe even some sort of live-reload development tool? I'm really interested in seeing what kind of tools Facebook will make available along side the core React Native project. Mind you, this is a huge gift even if they don't have any fancy tools to go along with it.

Really excited, thanks FBOS team.

<comment><USER3> > when I first saw the React syntax

Do you mean JSX? Because "the React syntax" is just plain JS unless you're using JSX, is it not? IIRC even vdom nodes can be created by hand with literal objects.

<comment><USER2> Yeah, JSX. Whoops!

<comment><USER3> Yeah it's completely optional, facebook built it because they had built something similar previously and they like it, and I guess it may be simpler for "pure" designers used to HTML and stuff, but it's AOT-compiled to the corresponding JS calls and the mapping is fairly simple:

        <Component1 attr1="value1" attr2={foo}>
            <Component2/>
            <Component3/>
        </Component1>

becomes (more or less)

        Component1(
            {attr1: "value", attr2: foo},
            Component2(),
            Component3()
        );

</comment></comment></comment></comment><comment><USER4> We just demoed something similar at the GWTCreate conference, an Angular-like library called Singular ([http://daniel- kurka.de/talks/gwtcreate15/singular.pdf](http://daniel- kurka.de/talks/gwtcreate15/singular.pdf))

It differs in that it uses the same techniques as Google Inbox to run native code. We cross compile to Objective-C with j2objc, and cross-compile to JS via GWT, the data binding, controllers, are shared code on all platforms that run full speed native, while the UI templating language on each platform is platform native (e.g. angular directives directly in Android XML files)

It produces completely platform-impedance matched apps on each platform (e.g. native on mobile, JS on Web) while allowing the continued use of the regular UI design toolchains people are used to (Android Studio/Xcode Interface Builder)

<comment><USER5> > We cross compile to Objective-C with j2objc, and cross-compile to JS via > GWT, the data binding, controllers, are shared code on all platforms that > run full speed native, while the UI templating language on each platform is > platform native (e.g. angular directives directly in Android XML files)

Honestly, this sounds like quite a technical achievement, but...

WHY? WHY? Why... are we still forced to go through these extraordinary lengths just to get pictures and interaction on a screen?

<comment><USER4> Long term, I want the Web to win. Eventually I think it will. In the 90s, no one ever thought apps like Gmail, Docs, or Maps could exist in the browser, and now no one questions that an Office suite can be done.

Eventually mobile performance, and API surface area will increase to the point where they're "good enough". Then they'll be an inflection point where people write Web apps for cross platform-ness for all but the most demanding stuff (like games or video editing)

<comment><USER5> But the web is just another set of absurdly arcane APIs upon (something) upon (other things). What I want i something like this:

       https://www.youtube.com/watch?v=UEIHfXLMtwA

I realize it's only-O'Caml at the moment, but I think this is mostly the _kind_ of thing we're all striving for?

(IOW: I want _you_ , personnaly, to work for this objective :))

</comment></comment></comment></comment><comment><USER6> I wish they'd go into more detail on why they can't make an app like paper in the browser environment. They mentioned something about Web Workers being crippled and later on explained how their framework puts JavaScript in it's own thread by default.

I'm also wondering why in their experience no one ever comes close to native widgets when imitating them in a Web apps.

<comment><USER7> with gpu-accelerated css transitions, requestAnimationFrame, virtual dom and web workers, the experience can be damn close. he makes it seem like "no comparison", this is provably false at least for the apps he demoed. for games, native is still necessary. what react offers beyond performance though, is definitely awesome.

imo, the talk comes off a bit like a sales pitch at a pep rally.

<comment><USER8> You're absolutely right that it is possible to get close. I think my main point here, (though I probably didn't cover this well enough and I was being somewhat hyperbolic, I guess), was that 'damn close' is unfortunately not the default on web, and it's actually really, really hard to get there.

Sorry for coming across as a sales person. Someone tweeted about a previous presentation of mine in the past asking "who the hell is this marketing guy they had do this talk". I assure you I'm not in either marketing, or sales, I just get really excited sometimes.

<comment><USER9> I thought the talk had a nice balance of pitching the idea of native React and the technical ideas behind it.

</comment></comment></comment></comment><comment><USER10> So I have a simple question; how is this better than Swift or Objective C? It seems like Facebook has done everything in its power to avoid writing Objective C. I am also interested to know if this is what powers the current 1.7 star rated Facebook app. I am just having a hard time understanding how Facebook has earned much credibility with their mobile efforts. Also, how is this different or better than Ruby Motion? I just don't get it. We've had a lot of these fake native solutions but how does it work with existing Cocoa libraries, etc. I think the bigger question is why? Is Facebook allergic to actually writing Java ObC or Swift? Before the downvotes, consider the history and track record and quality of Facebook on mobile. I honestly don't know the answers to the above questions (they aren't completely rhetorical.)

</comment><comment><USER11> Well, my money is on this (concept if not implementation) being the future of client-side development. Absent horrific performance/robustness problems, which seem pretty unlikely from this team, this is sounding like the droids we were looking for, the holy grail ring to unite us all, web and native.

And did even Steve Yegge ever see this next big language coming?

<comment><USER12> Having spent the past six or so months working with React and Flux, I sure hope so. For the first time in my technical career, I've actually _enjoyed_ working in Javascript.

The real power of React isn't just the virtual DOM -- it's being able to leverage Flux and an immutable, single-source-of-truth app state. Pretty much every time I turn around to build something, this combination has made what used to be an exercise in hair-pulling into an absolute joy.

<comment><USER13> To some extent the virtual DOM is what enables that, because it allows that style of programming while still having good performance.

</comment></comment></comment><comment><USER14> Here's the moment in the video where it's announced: [https://www.youtube.com/watch?v=KVZ-P- ZI6W4#t=1341](https://www.youtube.com/watch?v=KVZ-P-ZI6W4#t=1341)

<comment><USER15> And just as a heads-up to those who haven't watched, implementation details and code samples are coming tomorrow.

But basically the tl;dw seems to be that you can write JavaScript React code that runs efficiently on mobile and renders _native_ primitive components instead of dom primitives (<View> instead of <div>).

It also introduces the idea of "Learn once, write everywhere" instead of "Write once, run everywhere", which I think is a great idea.

<comment><USER16> Is 'tomorrows' video online yet? Can't seem to find it, or has it not been tomorrow yet? :)

</comment></comment></comment><comment><USER17> I think this can be really amazing as is react js now.

\--

I had to build a simple at first but very complex under the hood. I wrote that app in a weekend with react and was a ton fun and most important worked well since day one.

I have been out from the web development since like 1.5 year, but yeah IMO _react is the best thing happened to javascript since ... ever._

Thanks again guys!

<comment><USER18> > react is the best thing happened to javascript

Why?

<comment><USER17> Because when you deal with complex code react make it easier to read and as said in the talk more confident when making changes. On a large codebase we all know that you have to be a good JS dev to keep it well organized well readable etc...

</comment></comment></comment><comment><USER19> Wow. I've been struggling to teach myself objective-c, never getting beyond the simple tutorials. So I'm happy to try this out.

I currently have an MVP in ionic framework and would love to port this over to react. Though I should say that Ionic is amazing in its own right.

Also, I tend to agree with some of the comments in this thread -- regular Joe user can't really tell the difference. Ionic on an iPhone looks damn-near close to native. Android leaves a little to be desired.

Nice work React team

<comment> squeaky-clean Same situation here, using Ionic, but this seems extremely cool. I'll definitely build something with ReactNative as soon as I can. We're only making a news app, but Ionic feels completely native once we optimized it correctly and use the latest beta features.

As for Android being slow does that include 4.4 devices, or just older version of Android? If it's older devices, you should try the new Ionic beta with Crosswalk integration (you'll need to install/enable Crosswalk, but it's very easy to do). Sadly, it'll add about 25mb to your .apk, but on phones earlier than 4.4 the performance boost is at least 10x if not more.

<comment><USER19> On your suggestion I tried it on my phone (4.1.2). The rendering improved, but speed is still an issue. Scrolling with big images is jerky.

However, I have not yet optimized images or CSS. I'll probably spend next week looking into optimizations for ionic.

<comment><USER20> Take a look at this blog post on improving scroll performance. [https://nolanlawson.s3.amazonaws.com/www/ionic_list_perf/ind...](https://nolanlawson.s3.amazonaws.com/www/ionic_list_perf/index.html) The biggest trick is to use CSS and pseudo elements instead of actual DOM elements and bindonce wherever possible. Performant scrolling on older Android will always be tricky, even on native.

</comment></comment></comment></comment><comment><USER21> Sorry, dumb question, don't feel like watching the video:

What platforms are targetted? Out of, say, iOS, Android, Linux/X11 desktop, Windows desktop, WinRT, OSX?

<comment><USER22> This is Eric, from the React Native team.

We're starting with iOS and Android, which will keep us busy for the foreseeable future. That said, we will open source soon, and we'd be happy to accept help targeting other platforms!

<comment><USER23> Very interesting. Microsoft allows you to build fully native (not webview wrappers) apps using WinJS, and they have shown that React (along with Angular) can be used to build those apps [1]. I wonder if Microsoft will put resources into bridging the gap between React Native and Windows 10.

As a long time web oriented .NET developer wanting to pick up mobile who has been wondering whether to go Cordova or dive in fully native (ObjC/Java/Xaml) this is going to make the choice very difficult.

[1] [https://github.com/winjs/winjs/wiki/Using-WinJS-with- React](https://github.com/winjs/winjs/wiki/Using-WinJS-with-React)

<comment><USER24> Honest question: Would you even need something like react on windows given that wpf/winrt already support dependency properties and data binding?

<comment><USER23> TL;DR to below: focusing on JS instead of Xaml seems like a smarter play for a .NET developer that hasn't used Xaml in WPF or SL previously.

I put "web oriented .NET developer" in my response for this specific type of question. I kind of defaulted (11 years ago) into ASP classic and ASP.NET as a result of ad hoc consulting/support work for MS technologies back in 2000. But despite my affection for C# I abandoned ASP.NET's faux desktop event driven emulation for MVC as soon as it was released. Ever since then I felt sort of stuck in between thinking of myself as a Web Developer vs thinking of myself as a .NET Developer.

Which brings my long winded response back to your original question about WPF and data binding. WPF and Xaml are pretty foreign to me (I still have no idea about how WPF/SL/WinRT Xaml differ it all seems like Xaml to me) despite a long history with C#. But I am interested in native app development, so I have been torn on whether to go all in with C# knowing I could take it cross platform with Xamarin but need to reorient myself into the Xaml world or go all in with HTML5 knowing Cordova could be "mostly good enough".

I'm a Microsoft fan (I actually enjoy my Surface RT and Windows Phone) so WinJS on Windows 8 seemed like a good hedge for not throwing away all my JS knowledge (which is becoming a predominant part of my work with SPAs) but still letting me go fully native. But the overall Windows dev community seems to have spoken, Xaml is it and WinJS is a pariah, MS doesn't help much by staying mum on the matter but I think they are trying to shove WinJS into the Cordova camp and double down on Xaml for Win 10 with WinJS eventually fading away.

<comment><USER24> I program in WPF in C# with absolutely no XAML. I used to use dependency properties/data binding a lot, I even made a wrapper [1] so you could write things like:

        w0.Right.Bind = w1.Left + w2.Width;

And that would automatically generate a one way data binding in WPF (so if w1's left property, w2's width property, or w0's width property changes, w0's left property is automatically recomputed).

I've since moved on to my own dependency management (rebranded hence forth as managed time) system called Glitch [2], but that's because I'm trying to invent what's next.

I'm an MS employee but I have no idea what what is being done in this area. I do have lots of respect for WPF, it was weird that the other platforms couldn't put forward a decent UI platform for so long (well, JavaFX, but it didn't go anywhere).

[1] [http://bling.codeplex.com/](http://bling.codeplex.com/)

[2] [http://research.microsoft.com/en- us/people/smcdirm/managedti...](http://research.microsoft.com/en- us/people/smcdirm/managedtime.aspx)

<comment><USER23> I should have mentioned that I don't actually have a problem with WPF or Xaml from a technical standpoint (I've been watching several Pluralsight and MSVA courses and the binding certainly looks very powerful). My wavering between WPF/C# vs HTML/JS/C# is more about where I think development will be going in the future and how that works out for me professionally. That is why I really was hoping WinJS would take off so I could get the best of both worlds, being able to develop for an OS (WP/Win8) I actually enjoy but also not letting my web dev skills atrophy. I'm very curious to see if WinJS gets mentioned at Build this year or if it will fade quietly into the background.

</comment></comment></comment></comment></comment></comment></comment><comment><USER25> Recruters: Looking for ReactJS Native developer with 5+ years of experience!

<comment><USER26> According to the video, they were using ReactJS internally for four years internally before open-sourcing it, so it might be possible :)

</comment></comment><comment><USER15> Just a minor quibble; I think the speaker is a bit too negative about faux- native apps, especially with React. For example, see this demo by Pete Hunt:

[https://medium.com/@floydophone/building-a-real-time- frosted...](https://medium.com/@floydophone/building-a-real-time-frosted- glass-effect-on-mobile-web-87ce4a41019f)

<comment><USER27> If you look at the demo you'll see that while it's likely close to the best you can do with web tech, the physics don't feel correct because we can't reuse the native constants. Also the UI is very flat and simple. More complex UIs would be a struggle without react native.

</comment></comment><comment><USER28> I'm Jordan and I'm on the React (and React Native) team. There's been some great questions and insight on this thread. React Native offers a ton of benefits around productivity (and ability to use React of course), but since there are many questions about performance, I thought I'd share some of my own personal perspective on the matter.

React Native is very different than other approaches because:

1\. We're not promising to give you One Weird Trick that allows you to change nothing about your development philosophy/practices and yet automatically create excellent mobile experiences. If you're developing for mobile, and you want an excellent user experience, you must care about performance and you must care about programming nuanced interactions. Behind any great mobile experience, is someone who cared. Don't believe anyone that tells you differently. However, I feel that the amount of work that React Native asks of developers in order to achieve it, is much less than any other alternative that I've seen.

2\. React Native doesn't use the DOM at all. React naturally tames many of the performance issues that typically arise from unpredictable programming practices in the browser, but that can only get you so far. React Native takes it to the next level, beyond what can be done in the browser. React Native shows that ReactJS has always been more about "zero DOM" than "virtual DOM" (contrary to popular belief).

4\. React Native is different because we want to keep some of the best parts about web development. Just because we want the performance and resource control of native views, that doesn't mean we should abandon the great things about the web. With React Native, you can use CSS FlexBox to lay out your native views, and many other familiar style attributes - but without the catastrophic CSS style reflows. The event system also works exactly as it does in your React apps today because it runs the same library code. By building in terms of the subset of web styles/layout that we know we can make fast native implementations for, it allows developers to build great apps today without setting back progress of the web in the future. I feel this is strictly better than encouraging developers to abandon anything remotely resembling web technology and instead learn a completely different toolchain (or two or three).

3\. React Native is different because it makes high quality apps written in JS _possible_. With browsers, you will likely run up against a fundamental limitation and there's nothing you can do about it. Either you don't have access to a platform component (certain scroll view with physics/Maps), or the interaction that you're implementing keeps getting interrupted by image decoding and there's nothing you can do about it.

With React Native, you can do something about it. You can build ReactJS apps using native platform views that could _never_ be implemented in JS (like Maps), and you can also build using higher performing granular building blocks (multi-threaded decoded <Image />) (<View/> blocks that don't use the DOM at all). The result is that this unlocks an unprecedented level of quality that feels great and matches the platform characteristics.

<comment><USER29> Hi Jordan, I'm interested on which CSS rules causes reflows?

<comment><USER28> Avoiding CSS reflows in modern browsers should be pretty well documented, and I imagine it only makes sense to discuss reflows in a _particular_ browser. @vjeux will cover more about the style/layout API in React Native tomorrow, but the main point I wanted to get across is that React Native's style rules are a limited subset that are generally cheaper to compute. More importantly - the result of these computations aren't given to the JS environment in a synchronous manner. You can't read/write/read/write style properties/computations and inadvertently trigger more reflows than necessary. I've seen that pattern make web experiences unusable. In React Native, reads must be done asynchronously, and they are batched together for efficiency. Not only is this one major footgun that React Native takes away, but the asynchronous nature also means that style computation (layout primarily) can be done in a different "pipeline" stage, which opens up future opportunity to parallelize that work with JS execution.

</comment></comment></comment><comment><USER30> That's it. I'm finally going to port GridBagLayout to Javascript.

<comment><USER31> The memories of GridBagLayout still haunt me to this day (see username).

This is a classic gridbag cartoon: [http://madbean.com/anim/totallygridbag](http://madbean.com/anim/totallygridbag)

<comment><USER30> The horrible thing is that once I use it for a while, it starts making sense. That's usually the time I stop doing Java for a while.

</comment></comment></comment><comment><USER32> What is the defacto best way to learn React? I like the architecture and the coding style, but there doesn't seem to be a lot of talk about best practices.

<comment><USER33> I second this

</comment></comment><comment><USER34> I wonder how they are handling persistent storage and multi-threading if at all.

</comment><comment><USER29> I wonder why it is such a big of a deal of not having DOM API:s on the WebWorker thread? I think the discussion from Browser vendors is that there is no use case or benefit of having them there.

And not having the "native feel" or performance. I think browser vendors are on the verge on closing this gap totally. If not browser vendors, hardware will do it.

<comment><USER35> It's the same with all other native UI, though.

.Net Winform, WPF, Swing, etc., they don't allow you to make modification to UI outside main thread.

</comment></comment><comment><USER15> I had just started to think about switching to Mithril from React. This completely changed my mind. Incredibly exciting.

</comment><comment><USER36> When I tried similar solutions (running business logic in JS and abstracting native platform specific UI implementations), one of main problems I encountered was that JS was running in a clean VM while most libraries rely in some way on either browser or node.js environment. I wonder if React Native addresses this.

<comment><USER37> React is pretty much environment agnostic. It supports server-side rendering because it works without a DOM.

Based on how they are specifically talking about not sharing code but sharing knowledge (i.e. same API, different components), I'd assume the environment- specific stuff is implemented by the actual primitive components (View, etc, the equivalent of div, etc, in the browser).

They make it very clear that you won't be taking your web app and just magically have it work natively. You'd just write your native app using React, too.

</comment></comment><comment><USER38> Please, could anyone write a tl;dw (too long; didn't watch)?

<comment><USER39> Scroll down? CTRL + F the comments, and you'll see that someone did a "tl;dw" hours ago

<comment><USER38> I scrolled but I didn't notice it, thank you

</comment></comment></comment><comment><USER40> Looks like React is reaching critical mass.

<comment><USER10> Based on what metric? A Facebook team talking about a Facebook framework and a HN thread filled with React enthusiasts? I am not bashing any of it, but to suggest critical mass is a bit immature.

<comment><USER41> Yeah, I have yet to meet a react developer in person. Maybe the definition of 'critical mass' is just enough fans to have commentors posting about it 24 hours a day. I would say rust has reached critical mass if react has.

</comment></comment></comment><comment><USER42> That sounds amazing. It's been a while since I haven't been that excited about a framework. Native wrappers are so hard to create and maintain that it's promising to have a company like Facebook behind one.

I can't wait to have access to this repo to see source code and examples.

</comment><comment><USER43> Can someone elaborate on how React Native would fit into the app development workflow (iOS)?

Having a brief look over the ReactJS webpage, it seems like it would replace view controllers and perhaps Storyboards?

Or are we talking about writing the entire application in Javascript, declaratively?

<comment><USER44> React follows an approach similar to ReactiveCocoa ([https://github.com/ReactiveCocoa/ReactiveCocoa](https://github.com/ReactiveCocoa/ReactiveCocoa)). It helps modularize the code into components instead of having a spaghetti string mess that often happens in view controllers.

Currently there is no details on React Native, however, I don't believe it would replace the Storyboard as views are still necessary for the React code to interact with the components.

What you would be doing is coding in JS and behind the scenes your app would interact with the views and do the necessarily updates. I'm guessing it'll be a hybrid approach. While you'll most likely still need to know Obj-C or Swift, you can probably get away with a lot of boiler plate code with React.

</comment></comment><comment><USER45> From the video, Facebook mentions that they are using the React native for the Facebook iOS groups application. Theres a live demo to demonstrate. Video starts at 24:05.

[1] [http://youtu.be/KVZ-P-ZI6W4?t=24m5s](http://youtu.be/KVZ-P-ZI6W4?t=24m5s) [2] [https://itunes.apple.com/us/app/facebook- groups/id931735837?...](https://itunes.apple.com/us/app/facebook- groups/id931735837?mt=8)

</comment><comment><USER46> Can anyone please explain what a "declarative API" is, and why that is better than an imperative? He claims this is the best part of the framework, but I'm just left with a big "what?" since I don't understand what the hell that sentence means.

I mean he admits he had to build a bunch of products before he understood the concept, but didn't waste a single slide to explain it in the presentation.

<comment><USER47> The briefest explanation is that imperative is a list of instructions describing how you want something done. A declarative approach describes what you want done.

The typical example for this is SQL - you don't tell an SQL database how to run a query, you tell it what you want, and it figures it out.

In Reacts case, you describe your application in terms of components that know how to render themselves given different sets of data, or states. When the application state changes, the entire application is re-rendered. The "magic" of React is that the use of a virtual dom to create an efficient diff from the current dom state to the new dom state allows this to be very performant, ensuring a minimum of actual dom changes are made.

The resulting components are much, much easier to reason about. You can see, looking at the code, exactly how the component will behave given different data. In essence, what you see is what you get. This is a far better dev experience than working with components that can be mutated by events; you need to build a mental model of all the various states that the component could find itself in.

I was driven to this approach using Backbone to tame a particularly complex interface, similar in complexity to the ads example shown in the video. But as mentioned, doing this naively (in this case, re-rendering a backbone template instead of mutating it), leads to all kinds of user interface glitches. React smooths over those glitches.

<comment><USER46> Thanks, much clearer now. :)

</comment></comment></comment><comment><USER48> Sounds exciting. When is the source going to be released? Also, how much of the app logic can be implemented in cross-platform JS versus native code?

</comment><comment><USER49> [https://www.youtube.com/watch?v=KVZ-P- ZI6W4](https://www.youtube.com/watch?v=KVZ-P-ZI6W4)

Look at 10:00 ... that sounds very much like what we were going through and building at the exact same time

[http://platform.qbix.com](http://platform.qbix.com) ... self contained components, completely parallelizable etc. Also in PHP and JS :)

And it all works!

</comment><comment><USER50> I understood that the native react serializes the ui "DOM" to some format and sends it to the native process. Will the native rendering engine be open source and/or will the protocol be open/specified ? This could be handy for embedded targets.

<comment><AUTHOR> Yep, you've got the gist of it. We render the app in JS, React creates this view hierarchy (still in JS), this is serialized and sent over the bridge (asynchronously) to the native engine who then creates the equivalent native view hierarchy and renders it.

The source code for the iOS native engine (and the JS infra, and some examples) will be given to attendees of React.js Conf tomorrow (Jan 29). The iOS and Android versions of React Native will be open sourced soon! :)

<comment><USER50> Is this native engine still html based (eg blink engine or webkit) or is it using the platforms drawing engines? We are currently building user interfaces for STB platforms using a a js platform mapped to a native canvas running on v8. If we could use the react protocol it would be great.

<comment><AUTHOR> Nope, there's no DOM or HTML. It's creating native iOS/Android views.

</comment></comment></comment></comment><comment><USER51> Will the talk dealing with Relay and GraphQL also be uploaded?

</comment><comment><USER52> I bet someone is planning to write a Markdown editor using React Native. Maybe a text editor is a good test if React Native app can be as good as native app.

</comment><comment><USER53> This is amazing - wonder when we can get our hands on it.

</comment><comment><USER54> What about native APIs like in-app purchases, push notifications, ads SDKs, GameCenter ? Will we be able to access those ?

<comment><USER55> Jing said there's full binding and easy access to any native service

</comment></comment><comment><USER56> Looks amazing. Is React Native supposed to be just a View lib for XCode project or it will be the platform like Titanium?

<comment><USER57> Their promise of being cross-platform probably will move them into a cross-env toolchain, a-la Titanium.

</comment></comment><comment><USER11> React Native, in retrospect ... the day the Berlin Wall fell?

</comment><comment><USER58> A lot of people here feels offended by new ideas. I bet that many here commented even before the end of the video, and probably never used React on real apps. Could We avoid the tribalism and territorialism, please?

</comment><comment><USER59> Basic question - does this make it easier for someone who knows (or can hack around in) JS to create a native android app? I'm thinking/hoping yes from the video and comments...

</comment><comment><USER60> Sounds excellent. I need it today.

</comment><comment><USER57> \-- Attention -- Cross posting from the other thread --

Seasoned Appcelerator's Titanium Mobile SDK dev here. Looks like that a lot of people here is comparing this announcement from the react team to the Titanium Mobile SDK. I'd like to give some info to shed some light on the differences, and probably anticipate the challenges they have to (or had to) solve.

## Architecture

Both Titanium SDK and this Native React thing do have a JavaScript runtime behind the curtains.

Both frameworks will run the JS runtime on the background, on a different thread from the UI. This is incredibly important to remind.

Titanium SDK follows an OOP-ish, imperative approach. You create views using factories (`Titanium.UI.createScrollView({ })`) and you add those views to parent views (`parent.add(child)`). This is very similar to a browser DOM, and in fact it's cumbersome to work with. They built an xml preprocessor called Alloy which does a better job at exposing the view hierarchy right in the source, but it just compiles down to JS, `create()` and `add()`.

This is important for the evaluation at least for the following reason: every time you update a property on a view (actually on a proxy object to the real view) you're crossing the bridge and you have to pay that penality. The bridge is the void between the JS runtime's thread and the main, UI's one. This is incredibly painful when trying to do JS animations, sometimes if you're not careful you can get hurt very badly. You can still do great things, but it's way better to use the native `.animate()` methods, which cross the bridge only twice (at start, and at the end as a callback invoking).

On Native React you should not have this kind of problems because changes will be batched and updated on a update loop basis or at least debounced. Or at least optimized in some smart way. I believe.

## Layout

One big problem will be the layout. Given that they don't want the developers to understand every layout system every platform provides, they have to normalize it somehow. Titanium SDK has it's own layout system, incredibly easy to understand even from a web-only dev experience:

a) by default everything is absolute positioned,

b) you can get a vertical flow layout by setting the 'layout' property on the parent view or

c) you can get a horizontal flow (inline-block-ish) by setting 'layout' to horizontal.

Native React will probably follow a more intimately web-ish approach, just look at this JS/C/Java implementation of the box-model and flex-box specification by Facebook itself [1]

[1]: [https://github.com/facebook/css-layout](https://github.com/facebook/css- layout)

## Support and limits

Titanium SDK is always criticized for being to limited in what you can do with it. This actually comes from two different issues:

1) they have to (almost) manually implement every API you might need, by proxying from native-land to JS-land;

2) they have to follow every release of the platform's SDK;

3) you cannot just put native code along-side your JS code, so you cannot go where they didn't.

Let's see how Native React will solve this issue.

Titanium SDK is undergoing an heavy lifting refactoring to solve exactly this issues. The project is code-named Hyperloop and is already working behind the curtains for the Windows 8 version of the SDK.

## Conclusion

Because I shamelessy want to karma-drift this topic, I'll stop here.

It's interesting, but until they show us some (native) code... it's just ideas.

Follow me on twitter (@_pier) and github (@yuchi [2]) for Titanium related stuff.

Also my company, SMC, does a lot of great opensource things for Titanium (on gh we're @smclab)

[2]: [https://github.com/yuchi](https://github.com/yuchi)

</comment><comment><USER61> Already done with Smartface App Studio.

</comment><comment><USER62> What is this and why is it a big deal?

</comment><comment><USER63> Am I getting this right: they use something like Display Postscript[1] instead of the virtual DOM? Are we back in the 80ties?

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

<comment><USER64> No, React Native translates a declarative API into imperative calls. Just like React does in the browser (after going through the Virtual DOM as, essentially, an optimisation).

<comment><USER63> Yes, just like the DPS interpreter translates (high-level) DPS into (low- level) pixels. Looks pretty similar to me. (but then I am not overly familiar with DPS or ReactJS)

EDIT: To clarify, I am sure that the current UIKit also tries to do optimize rendering. They probably do some kind of internal batching, etc. But they have no (public) data format like DPS or a virtual DOM that is generated, optimized and rendered. I don't think that DPS is all that different.

<comment><USER65> It's not similar. Postscript (display or "regular") is imperative. It's an instruction stream.

React belongs one level "up", abstracting away the translation from a declarative representation of the view to a stream of calls on some lower level mechanism to reproduce that representation in the most efficient way possible.

The basic idea of React is that instead of having your application spitting out an instruction here and an instruction there, which may result in lots of reflows and redrawing, if individual state changes are expensive it can be more efficient to re-create a full representation of the _desired_ state and have an engine compare that desired state to the actual state and figuring out the best possible set of steps to get from the actual to desired state.

E.g. the engine may be able to figure out that a subtree changes so much it's going to be best to just replace it wholesale instead of manipulating node by node.

The "output" from a React style engine can be a series of DOM manipulations, or it could be DPS instructions, or any number of other things - the idea is very general.

</comment></comment></comment></comment><comment><USER66> It fails like many other framework tried to create native apps with JavaScript

<comment><USER67> Those mobile Javascript frameworks uses the DOM. React native won't.

<comment><USER66> It's not about DOM. UIKit is pretty sofisticated to build layer to translate JS to native code. It needs years of work and constant update.

<comment><USER68> ::cough:: [https://twitter.com/andy_matuschak/status/560511204867575808](https://twitter.com/andy_matuschak/status/560511204867575808)

<comment><USER66> He is just talking about layer model. Being iOS engineer for 4 years and Web developer for 5 years, These frameworks only works for certain use cases and at the end you wish that you did the right thing from beginning.

</comment></comment></comment></comment></comment><comment><USER69> If I'm one of Reacts competitors I'm ecstatic that they're abandoning the web. It reminds me of when Angular wastes energy on angular.dart because of a Google mandate. Didn't help them much.

<comment><USER70> I work on React. We're not abandoning the web.

<comment><USER69> But you are deemphasizing it, no?</comment></comment></comment>


Harvard says foreign freshmen can't come to campus this fall - <AUTHOR> https://www.nytimes.com/2020/07/22/world/coronavirus-covid-19.html <comment><USER2> Link is bogus.

Here's one that works:

[https://www.bostonherald.com/2020/07/21/harvard-wont- allow-f...](https://www.bostonherald.com/2020/07/21/harvard-wont-allow-first- year-international-students-on-campus-this-fall/)

>First-year international students won't be allowed on Harvard University's campus this fall, the institution said Tuesday, citing federal visa restrictions on new scholars who will take their classes entirely online.

>The announcement comes a week after an Immigration and Customs Enforcement policy that would have expelled international students studying virtually amid the coronavirus pandemic was rescinded.

> While the policy shift allows current international students to remain in > the United States while completing their courses online, it doesn't apply to > newly admitted international scholars who require F-1 sponsorship

Which is strange because Harvard is NOT completely online for first-year, only partially online.

<comment><USER3> >Which is strange because Harvard is NOT completely online for first-year, only partially online.

AFAIK, there's a certain minimum proportion of classes that have to be in- person to meet the visa requirements.</comment></comment>


Never Trust a Programmer - <AUTHOR> http://johnnance01.wordpress.com/2010/06/15/never-trust-a-programmer/ <comment><USER2> It's a problem of incentives. When I worked in a corporate environment, I worked very hard to ensure that people asking for things were the ones who paid for it -- even internally. A project # to bill against for everything.

In the agency world (where I was), carefully billing time was de rigueur for client-facing people. I pushed to have it apply for non-billable internal people too.

So the "idea people" had to do cost-benefit. Requires a cultural change (and trust), but it brings discipline to both sides. Really helped.

</comment><comment><USER3> " _A programmer has to be quietly focused doing mental gymnastics to produce clean working code. It's difficult and takes all your energy. There's no time to run around to see whose throwing you under the bus._ "

Indeed; my worse experiences have been exactly of this sort.

</comment><comment><AUTHOR> The other thing I'd add is an expectation from sales/non-technicals that you produce an golden egg the first pass through.

People say they want to be agile, but they rarely realize that it also means you have to do less.

I often got hammered on not being fast enough, and yet, when cutting corners and throwing it together with boogers and duct tape to get it to a demonstrable state, I was told it wasn't presentable to customers because it didn't have the frills and throw pillows.

Next time, I'm just not working with someone that doesn't understand mvp.

<comment><USER4> It is better than dealing with the salesmen selling things that just are not possible. One time I was given a day to implement a magic iPhone detection algorithm. It had to distinguish from iPod touch, and somehow this was to be done based on "network characteristics". So during an emergency meeting the salesman said "It can just be done from the MAC address, quit whining." Well after a while we managed to get hte customer happy, and the salesman was told "Next time, if you aren't sure talk to the programmers first". The programming team was told to expect a new hire that "knew what he was doing".

<comment><USER5> The neat thing about contract law: Actual impossible contracts rarely are enforceable.

<comment><USER4> Yeah, unfortunately there is this other thing called "at will employment" which means I pretty much had to do what the bosses told me to provided it was legal (which is different from physically possible).

</comment></comment></comment></comment><comment><USER6> This story is very close to a place I worked at as a co-op a few years ago.

The sales and PMs would promise the world to the clients, and development hours were taken away from the developers to support the IAs that were overbudget. We had a solid dev team and delivered the sites on time, but one of the projects was all wrong in the client's eyes (due to poor specification, the whole IA -> Design -> HTML workflow was a very slow, behind schedule waterfall) and it was blamed on development. We quickly made the changes, that project ended well.

I ended up leaving after my co-op to accepted an offer from a prior co-op. Shortly after, most of the dev team quit, and the VP of technology was fired. A couple of months ago the company closed its doors, owing months of paychecks to employees, and clients lost project/money.

</comment><comment> brown9-2 Pro tip for those newly graduated programmers or those in school:

Avoid companies like the one described in this article like the plague.

(Although I suppose it's hard to tell what things are like from the interview process alone, but a business model based on selling to large enterprises is a red flag.)

</comment><comment><USER7> We've found that detailed sprint burndown records are a useful tool. If you can say "historically, our estimates are 90% accurate", and then pull up a bunch of charts and figures to back up that assertion, it lends a lot of weight to your argument.

</comment><comment><USER8> Programming and research are an expectations game. Your manager neither knows what you do or how long it might take. My manager once had to write my status report because I was so busy.He was a good manager but revealed himself to be totally clueless about what I was doing.Thereafter I became extremely serious and a bit paranoid about my status reports.

Necessarily a manager evaluates you by whether the product works or it doesn't and is on time or late. You are evaluated against management expectations. The more that they expect,the worse you do. Because expectations are typically unrealistic,you can get a fine reputation for perfunctory but consistently on time work.

Decrease early expectations to do well. During project planning be pessimistic and extreme humble. Programing and research have very high product and deadline risk. For each project have a contract with your manager that identifies the main risks, and accept responsibility for only what you can do something about. Your professional self management will impress your manager, but he will hate the uncertainty.

</comment><comment><USER9> I worked on a company just like this 7 or 8 years ago. I remember the project of the other team that went in flames because of the ridiculous estimates that the sales people committed to the client and our idiot VP agreed to take. People literally worked 24x7 for a month or so.

<comment><USER10> That is the first problem.

Never work more because somebody else screwed up.

Second, document your estimates and then let the manager write his and in the end, see who was closest.

</comment></comment><comment><USER11> Boy isn't this the truth. My last job the project manager was great at getting everything in writing and a signed contract up front. It made life so much easier. When they came back with we want this too. He would just point at the contract and say, once we've completed this contract we can make a new one for the additional items you would like. Worked like a charm.

</comment><comment><USER12> This is a very good article. The message has been written about many times but it's still important. It's not easy to say no or push back. It can even be fatal in organizations that don't enforce "ownership." How can you say no if no one is asking you?

Happens way too often. But it's understandably difficult to solve as an organizational issue.

</comment><comment><USER13> I'm baffled by the title. Is the author trying to trap non-programmers into understanding their error by (falsely) promising to provide them a scapegoat? Or is he using "trust" as in "trust in the omnipotent"?

<comment><USER14> _"Is the author trying to trap non-programmers into understanding their error by (falsely) promising to provide them a scapegoat?"_

Yes.

</comment></comment><comment><USER15> More like never trust anyone who says yes too quickly.

</comment><comment><USER16> Wrong title, good post, crucial topic. Thanks!</comment>


Ask YC: Debt Financing for startups e.g.: Facebook, Blekko? - <AUTHOR>

Why do startups use debt financing, why is it so popualar, other than the fact that startups don't need to part with equity?<p>and in the couple of cases I have seen it, it's mostly for hardware/ infrastructure related stuff? why is that?<p>-- Blekko: http://www.techcrunch.com/2008/05/14/stealth-search-engine-blekko-gets-money-from-marc-andreessen-softtech/<p>-- Facebook: http://www.businessweek.com/technology/content/may2008/tc2008059_855064.htm <comment><USER2> If you want a real answer, read 2-4 books. If you want a pithy, poorly explained 2-4 sentence overview, then here's my attempt: debt financing is attractive to startups since they can often get favorable terms on the debt (one year payment and/or interest free). Investors often like convertible debt since it is less risky than a straight investment; i.e. debt is paid before any profits are paid. Investors also will generally have the option to convert the debt to equity later on at today's valuation. Why is it often done for hardware? Easy: collateral.</comment>


Spam 'produces 17m tons of CO2' - <AUTHOR> http://news.bbc.co.uk/1/hi/technology/8001749.stm <comment><USER2> Is there a difference between this and <http://news.ycombinator.com/item?id=565409> ??

The URLs are different ...</comment>


Graphs in Operations - <AUTHOR> http://blog.lusis.org/blog/2012/03/06/graphs-in-operations/

<comment><USER2> Maven deals with dependencies related to application builds. If I understand the article correctly, the author is suggesting a way of sanely managing dependencies related to deployment configurations. This might include subgraphs that represent the application builds on several nodes, but would also reference configuration files from app servers, web servers, etc.

A first step might be to simply visualize the relationships in question. I have used GraphViz (<http://graphviz.org/>) to this end for a number of situations (internal corporate projects).

I think the challenge is that the relationships (edges) of the graph do not all necessarily represent the same types of dependencies. Some would result in compile time errors, some run time errors, some would cripple a system, and some have little practical effect. I do like the idea of a simple declarative system representing a dependencies between components as a graph though.

</comment><comment><USER3> This is actually an active area of research in the theory of computation, and computational semantics. Researchers have been hard at work trying to formulate an algebra of ubiquitous computation that can encapsulate the spatial and temporal arrangement of mobile processes (which in this case includes computer processes, physical processes, chemical processes, etc). Graphs (or variants) are the structure that is being used to model these systems. Processes are nodes (or sets of nodes) with an algebraic structure that permits composition and formal reasoning.

For an easy-ish overview, check out: -- edit -- this was the wrong set of slides... These are dense.

<http://www.cl.cam.ac.uk/archive/rm135/Bigraphs-Lectures.pdf>

The easy ones are here: <http://lcs.ios.ac.cn/lectures/bigraphs-tutorial.pdf>

</comment><comment><USER4> Its something that we're thinking a lot about at Verelo.com

I've personally been very big on trend graphs myself, how are we doing today v's yesterday, this week v's last week. I find you learn a lot more from these than you do any other type of monitoring (unless the issue is dead simple, like something is down)

We've been focused right now on making great monitoring systems, however we're just starting to get the chance to step into prevention. Prevention is a fun area because it starts to include trending.

My hope is that within the next month or two we have a few things. Firstly a means of providing a great downtime prevention tool, but also an end point where data can be sent (or we can pull it on your schedule) and then provide a graph and notifications based on changes in the trending data. Think of it like stock alerts...

So yep...i agree with you, we need graphing and more of it.

<comment><USER5> The article isn't about graphs-as-in-charts, but graphs as in the mathematical concept. In this case, expressing dependencies between different pieces of operational infrastructure, such that changes to one piece of infrastructure trigger automatic changes to other pieces.

Unfortunately, the author is pretty vague about exactly what pieces of infrastructure they imagine defining relationships between, and what triggers they might use. On the smaller side, they mention 'I changed a config, I must restart nginx' (micro level dependency between nginx and its config) and 'something changed in my app tier, need to tell my load balancer' (macro-level dependency between a service and its front-end). What kind of dependencies would be useful to define between services in a service oriented architecture, which are usually designed so as to minimize dependencies?

<comment><USER6> as stated in a comment on the original blog, work on things like these are done using rules engines ( based off rete algorithm <http://en.wikipedia.org/wiki/Rete_algorithm> )

Here is a example of monitoring for a fire in a room, and how one handles it -- similar concepts can be applied to infrastructure components as well ) -- [http://blog.athico.com/2009/03/drools-quick-start- stateful-k...](http://blog.athico.com/2009/03/drools-quick-start-stateful- knowledge.html)

</comment></comment></comment><comment><USER7> Oh wow. I didn't realize until postrank told me that my post had made it to HN. I'll answer some comments below (and I have another post in the works.</comment>


Shoemaker-Levy: 1st observable collision of extraterrestrial bodies - <AUTHOR> http://en.wikipedia.org/wiki/Comet_Shoemaker%E2%80%93Levy_9

<comment><USER2> I remember being a kid and asking my parents to drive me to the local observatory. We stood there for a couple of hours just to peek at the telescope for a minute. I think I'll never forget the fascination I had and how amazed I was.</comment>


Scientists discover how to turn light into matter after 80-year quest - <AUTHOR> http://www3.imperial.ac.uk/newsandeventspggrp/imperialcollege/newssummary/news_16-5-2014-15-32-44

<comment><USER2> To be clearer, Theoretical Physicists have a theory about an experiment that would allow Experimental Physicists to prove a theory made by earlier Theoretical Physicists. They haven't actually conducted the Experiment.

 _" In Theory, there is no difference between Theory and Reality. But in Reality there is."_

<comment><USER3> I prefer the phrasing, _The only difference between theory and practice is that in theory, there is no difference between theory and practice._

</comment></comment><comment><USER4> I'll count my chickens when they hatch, lets wait until they do it.

</comment><comment><USER5> So it's turning light into electrons? Isn't that already done with solar panels?

<comment><USER6> No, solar panels turn light into the _change of energy state_ of an existing electron. This is why they operate at the characteristic band gap voltage of the semiconductor from which they are made.

This experiment is about creating an entirely new electron/positron pair.

<comment><USER7> Solar panels wouldn't be the ideal use of this ability if it were made real, would they? I haven't looked through the full article yet, but would this new approach help overcome the problem of Carnot's theorem in any way?

<comment><USER6> Carnot's theorem is irrelevant to solar cells, as they aren't expanding-fluid- driven heat engines.

Multijunction cells are the way to go for increased W/m^2, but are very bad W/$ at the moment.

</comment></comment></comment></comment><comment><USER8> Probably a long way off, but I can't help but imagine the kind of amazing applications something like this might have. If we could reliably capture and store the resulting positrons, then recombine them with electrons later to release the energy and harness it somehow, I'd imagine this could make for an energy storage system with some really interesting properties.

<comment><USER9> Like the fact that light doesn't take up any space, so you could theoretically store an infinite amount of energy?

<comment><USER10> Sorry, doesn't work. Light still exerts pressure, so even if you could losslessly trap light in a storage container indefinitely, the container would explode long before the energy density became 'infinite'. Furthermore, the energy and momentum in light contributes to the gravitational field, so even if you could make an infinitely strong mirror-box, pumping too much energy into it would eventually result in collapsing into a black hole.

</comment></comment></comment><comment><USER11> Can anyone explain the vertical lines in the space time diagrams? Presumably not infinite velocity?

<comment><USER12> They are not space time diagrams, they are Feynman graphs. Technically they are a clever way to write down the terms of a series expansion. In the convention used, on the left hand side are the incoming particles and the outgoing particles are on the right. The internal lines and vertices are just representations of formulas, and the important thing is only the topology of the graph.

However one of the really great things of Feynman graphs is, that they admit a easy interpretation about what is happening. Then the interior lines are interpreted as virtual particles that are created during the reaction, but since they are virtual they do not really have a defined speed, so the lines are just drawn like that.

<comment><USER13> In fact, Feynman diagrams _are_ spacetime diagrams. (They are commonly computed in momentum space, i.e. Fourier space, but you can also do them in normal position space.) When you draw a Feynman diagram, the vertices correspond to actual points in spacetime, which are then integrated over a la the path integral.

</comment></comment></comment><comment><USER14> How much energy is this photon/photon collier going to take? If a future experiment works, could we use this created matter to turn around and use it as energy? Or would that not be possible (i.e. - The energy used is far greater than the energy gained)

<comment><USER15> No, the energy gained will be equal or (most likely) less than the energy used. This is because we have conservation of energy, so a process like

energy (the original photons) -> matter (electron/positron) -> energy

can not produce more energy than was put in.

</comment></comment><comment><USER16> By no means is this my forte, but would this violate the conservation of mass?

<comment><USER15> Mass is not a conserved quantity. Energy for example is a conserved quantity. So like in a nuclear fission reaction we loose mass but this lost mass is then converted into energy. I have not read the article in detail, but I suppose they want to turn part of the photons energy into masses for the electron and the positron. Mass and energy are linked via E = mc^2.

<comment><USER17> In fact, both energy and mass are conserved. If you accept e=mc^2 as "true," it's easy to show.

If energy is conserved and mass is not, then what can E=mc^2 possibly mean? Is it a relation, like F=ma? Then if E is constant and of course c is constant, then m must be constant too.

Or is it an exchange rate: you can convert this much mass into that much energy? But then energy is no longer conserved, if you can make it from mass.

Last try. Maybe e=mc^2 means, within a given quantity of mass, there is necessarily a minimum energy? And this is true, but notice that the equation is phrased as an equality. Equalities go both ways: we can just as easily derive m=e/c^2, and now the "minimum energy" idea runs aground.

In modern interpretations, energy and mass are both conserved, and e=mc^2 is understood to be the energy in the rest frame of the system. Individually photons are massless, but multiple photon systems can and usually do have mass. The price we pay for conceiving of mass as conserved and invariant is that it no longer adds nicely.

</comment></comment></comment><comment><USER18> A dupe of [https://news.ycombinator.com/item?id=7763711](https://news.ycombinator.com/item?id=7763711).

</comment><comment><USER19> Sounds like this theory could lead to creating one heck of a weapon, Dr. Venture.

</comment><comment><USER20> Black holes probably do this?

</comment><comment><USER21> there is no way this is not sensationalized.

</comment><comment><USER22> Imperial mages learn conjuration.

</comment><comment><USER23> 1\. grab a flashlight 2\. make your friend grab a flash light 3\. turn them on and point them at each other 4\. make it rain

<comment><USER24> My friend is so obstinate I cannot complete step 2, and now there is severe drought.</comment></comment>


Facebook Use May Lead to Psychological Disorders in Teens - <AUTHOR> http://mashable.com/2011/08/08/facebook-teens-study/

<comment><USER2> I hate headlines like this. What it should have said was "Facebook OVERuse..." Which is just as true of any number of things. For example, students who check Facebook during a 15-minute period when they're supposed to be studying get lower grades. No, really?

</comment><comment><USER3> You cannot make a non polarizing comment about this topic but i think it's a good thing that this research is done. Facebook or social networking general is affecting the life of a lot of people, there is definitely change in peoples personality.

</comment><comment><USER4> you're right. though facebook profiles owners cannot be younger than 13, there is about 1,5-2 million teens registered. we should do something!</comment>


The ginsu knife of sales letters - <AUTHOR> http://b2brainmaker.com/b2b-lead-generation/the-ginsu-knife-of-sales-letters/

<comment><USER2> What's a "ginsu knife"?

Yes, I know I can go and look it up on Google (and I have) and I know I can do more work to understand your post, but why should I bother? If you can't make the effort to make your post understandable to someone not in your domain, why should I assume you're saying something worth reading?

<comment><USER3> "If you can't make the effort to make your post understandable to someone not in your domain, why should I assume you're saying something worth reading?"

He assumed the domain of people familiar with ginsu knives is roughly identical to the domain of people who have ever watched an infomercial in the past two decades.

Obviously, there are people all over the world for which this assumption is false. However, globalization is arguably incomplete until every single human on earth has at some time thought: "Gee. Cuts through a boot. How tired would I have to be for this advertisement to work?"</comment></comment>


Two Bytes to $951M - <AUTHOR> http://baesystemsai.blogspot.com/2016/04/two-bytes-to-951m.html <comment><USER2> Very interesting how the authors of this malware covered their tracks. I'd love to know how they gained access and infected the SWIFT systems in the first place, I think that is significant as well.</comment>


Ask HN: is there still a country without web censorship? - <AUTHOR> During my recent trip in Turkey, I've had the opportunity to first-hand experience what a "hard, in plain sight censorship" is. YouTube home page was showing a government's statement and Twitter was not even reachable. There are of course a lot of different kind of censorships (Italy is blocking thousands of websites for any reason a judge might think of, U.K. is censoring porn, and so on and so forth).<p>I'm not sure about the situation in the US (DMCA, COPPA, and the likes) but at this point I wonder: is there any place left on earth with no censorship and/or any filters at all? And if the answer is (most likely) "no", what can we deduce for the future to come on this matter? <comment><USER2> Side note: I don't consider DMCA censorship - most of the time the content is available elsewhere, it's just that someone's nicked a copy from the original author (or whoever owns the rights).

If I send a takedown notice to someone who's ripped off an article from my blog, people can still read the article on my blog.

<comment><USER3> > most of the time the content is available elsewhere,

As is often the case with censorship, what happens "most of the time" is not the concern - it's the rest.

The DMCA isn't exclusively a tool of censorship, but no effective tool of censorship is. For it to survive as an effective tool, it has to provide some value in other ways.

<comment><USER4> > but no effective tool of censorship is. For it to survive as an effective > tool, it has to provide some value in other ways.

There are laws and tools built exclusively to censor web content all around the world. That's what OP is referring to as "hard, plain sight censorship." How are tools & laws like the ones used by N. Korea, Iran, and a variety of other autocratic regimes[1] not "effective tools"? What value does something like China's "Great Firewall"[2] provide other than censorship?

Seems to be a big difference between those and the DMCA.

[1] [http://www.freedomhouse.org/report/special-reports/what- next...](http://www.freedomhouse.org/report/special-reports/what-next-quest- protect-human-rights-defenders-and-journalists-digital-world)

[2] [http://en.wikipedia.org/wiki/Golden_Shield_Project](http://en.wikipedia.org/wiki/Golden_Shield_Project)

</comment></comment></comment><comment><USER5> The US web is not really censored. DMCA is not censorship and COPPA is a violation of federal law for various reasons.

<comment><USER6> It is true that the US doesn't have a national framework for censoring the Internet. However, it does exist in patchwork form on an ISP level. Every major ISP censors and filters websites and IP's it deems to be harmful. A lot of times, there's confusion and a lot of innocent sites are caught up in the mix due to name based virtual hosting in webservers.

Some would argue that anti-spam blacklists and droplists are censorship, and pretty much every ISP uses those. I don't share that point of view, but there are those who would argue this.

<comment><USER5> I have not come across anything that was censored by my ISP in anyway. Only one such case was cited on Wikipedia, were Verizon blocked text messages due to a violation of ToS.

Could you provide any more information on ISPs blocking content?

<comment><USER6> Comcast has an abuse block list. Verizon has an abuse block list.

Between those two you've got > 50% of America covered.

Every ISP has a spam blocklist. Technically that's censorship, too.

</comment></comment></comment></comment><comment><USER7> There are two ways to think of "web censorship":

The first is that web censorship (as opposed to just plain old regular censorship) requires filtering or interfering with the end-to-end principle. In this case, the U.S isn't really censored (although we had a close call with SOPA / PIPA). The DMCA and COPPA don't affect the end-to-end principle or block content -- they only threaten penalties on various people on the edges of the network.

The second way to think about this is to say that threatening penalties on people for what they say IS Internet Censorship. The question now isn't about "web censorship" per se, but really about whether said country has any restrictions on speech that can be applied to speech online. And if you take a very strict view of free speech rights, I'm pretty dubious you'll find any country that fits the bill (except perhaps some tiny nation with almost no laws to begin with).

Varying levels of "speech" you'd need to permit to be completely "censorship" free:

* Spammy advertisements

* Infringement of any and all IP rights

* Hate speech

* Threats

* Cyberbullying and other intentional inflictions of emotional distress

* Publication of private data

* (Re)-distribution of child porn

<comment><USER8> All of the things you mention can be illegal without imposing pre-publication censorship as has been the case with printed material for centuries.

</comment></comment><comment> vezzy-fnord I don't know if there's any place without _de jure_ Internet censorship, but there are several places where there is _de facto_ no Internet censorship.

Most of the Balkans fall under that.

</comment><comment><USER9> I think that here in Uruguay, we don't have any kind of internet censorship, but we have a monopolic ISP owned by the state, so... At any moment they could turn on the censorship switch and there is almost nothing you could do about it.

I feel like this is the general situation on countries where you "don't" have internet censorsihip, you don't, today.

</comment><comment><USER10> Most parts of the European Union? Obviously there are some exceptions like the UK but overall there are few countries that have either the technical infrastructure or the legal framework required to perform large-scale Internet censorship (please correct me if I'm wrong). Of course it's difficult to draw the line between politically motivated censorship (which most people are concerned about) and legitimate, small-scale censorship of websites that contain illegal content. I don't consider content removal due to copyright issues (e.g. on Youtube) censorship, for example, but I'm of course aware that governments often justify the censoring of content through its alleged illegality. Before talking about the extent of censorship on the Internet it would be necessary to have a good definition of the term first, I think.

</comment><comment><USER11> I think it's important to be clear about what you mean by the word "censorship."

Generally it's considered to be a restriction on freedom of expression by a system of legal authority. Generally it is not thought to include matters of private choice and contracts, even if the sanctity of those contracts are enforced by the system of authority.

The U.S. has a system of law that permits people to control the distribution of their expressions. Tool can decide they don't want their music distributed by iTunes, and the government will enforce that decision. But it's not censorship because iTunes is not expressing any original thought by selling digital copies of Tool's albums. And Tool themselves are free to post their own music online with no restriction.

</comment><comment><USER12> Iceland is relatively free of censorship. There are a couple of IP numbers filtered by way of court order (hosted images of minors in compromising positions), but sadly those filters have collateral damage (shared hosting sites on same IPs). Interior Ministry is in awe of the results in the UK and wants to do the same. Resistance to the ideas is pretty high since the general population has a pretty good idea of the entailments. (side note: a popular Icelandic blog and news aggregator, eyjan.is is blocked by the UK porn filters, bit of an irony really).

</comment><comment><USER13> I'm pretty sure there is no censorship in Croatia. Not because of the general philosophy, but simply because I am convinced everyone who works in the government's tech department still thinks FORTRAN is the latest shit in computer science.

The amount of expertise in this country is shamefully low[1].

[1]: Citation needed, but my experience with "technical high ups" would indicate so.

</comment><comment><USER14> Poland censors nothing. So far. There have been efforts to introduce censorship, so far effectively countered.

<comment><USER15> No event so far, but the law is in place, meaning there is no clear definition if someone publishes on the internet is he/she a journalist. Some may use bullets that you offend head of the state, president or "blasphemy". Better off in a country which doesn't have any tools at all.

Over the years there was this notion that US is a role model of democracy and freedom which is a joke especially in a context of recent news.

<comment><USER14> The question was clearly about _censorship_. There is nothing of the kind. You can access anything you want and publish anything you want. Certain things you publish might offend people and potentially get you in trouble, but the government doesn't censor the internet.

That said, it is not a battle that is completely over.

</comment></comment></comment><comment><USER16> You can turn it off in the UK; right?

<comment><USER17> There is a system you can't turn off, although you're unlikely to run into it from day to day usage: [http://en.wikipedia.org/wiki/Cleanfeed_(content_blocking_sys...](http://en.wikipedia.org/wiki/Cleanfeed_\(content_blocking_system\))

<comment><USER6> Unlikely, but possible. Large web hosts end up on the list from time to time, and a lot of innocent sites are blocked in the process. It's an incredibly difficult process to find out what site triggered the initial block and to get your IP's removed from the list.

Yes, they use IP's. They don't do URL-level filtering. They use IP's.

</comment></comment></comment><comment><USER18> Spain: [http://en.wikipedia.org/wiki/Internet_in_Spain#Internet_cens...](http://en.wikipedia.org/wiki/Internet_in_Spain#Internet_censorship_in_Spain)

</comment><comment><USER8> None of the filtering in the UK is legally mandated, and only the major ISPs implement it. Smaller ISPs still offer a completely unfiltered service.

</comment><comment><USER15> Monaco? Small islands like Jersey (UK)?

</comment><comment><USER19> Maybe Bhutan.

<comment><USER20> It is not possible to censor what does not exist, right?

<comment><USER19> I don't know, but I'd assume Bhutanese monks probably excel at similar types of deep philosphical inquiry. Perhaps they even have cats, and the internet has nothing to offer them?

</comment></comment></comment><comment><USER21> I believe the Moon has no censorship that is readily observable. Then again the Moon is not a country. The real question is is there a country with a provable lack of web censorship? Assuming of course you can define that well enough.

</comment><comment><USER22> Australia</comment>


Kevin Mitnick on 2600's "Off the Hook" radio show (MP3) - <AUTHOR> http://www.2600.com/offthehook/mp3files/broadband/off_the_hook__20110727-64.mp3

<comment><AUTHOR> The whole thing is great, but especially don't miss the part where Kevin whistles the nuclear launch codes at 34:30!

</comment><comment><USER2> you couldn't find a show like this on commercial radio if you tried.</comment>


Why Nasa Converted Its Lessons-Learned Database into a Knowledge Graph - <AUTHOR> https://blog.nuclino.com/why-nasa-converted-its-lessons-learned-database-into-a-knowledge-graph <comment><USER2> The tech story by NASA's chief knowledge architect is more detailed on [https://linkurio.us/blog/how-nasa-experiments-with- knowledge...](https://linkurio.us/blog/how-nasa-experiments-with-knowledge- discovery/) and [https://neo4j.com/blog/nasa-critical-data-knowledge- graph/](https://neo4j.com/blog/nasa-critical-data-knowledge-graph/), with a presentation video on [https://www.youtube.com/watch?v=vwJyU9vsfmU](https://www.youtube.com/watch?v=vwJyU9vsfmU)

Disclamer: Linkurious CEO here, the tool used to explore the Neo4j graph database used at NASA.

<comment><USER3> Since linkcurious is for the enterprise, What would be your recommendations for a personal knowledge database for individual users ?

<comment><USER4> I've been working on building a personal knowledge database tool recently, feel free to shoot me an email at firstname.lastname@example.com if you'd like to be one of the first to try it out.

<comment><USER5> Due to the number of crawlers on this site, I recommend (if it's not too late) you edit your post to use the format

address at domain dot com :)

PS: Sent you an email. :)

</comment></comment></comment></comment><comment><USER6> I was hyped to read a cool article about NASA and tech, but this just reads like an advertising for a software that I've never heard of.

<comment><USER7> Was about to post the same thing, multiple submissions by the same person for the same product over the last 2 months.

<comment><USER8> First, there would be nothing wrong with it.

Second, I have no idea what you're talking about. The submitter seems to have exactly six submissions so far, and not a single other one about this. [Edit: Obviously mistaken on that point]

<comment><USER9> I don't know who's submission history you're looking at, but zzaner's history shows 4 of 6 links pointing to nuclino.com and a 5th is a link to Nuclino for iOS. Only the 6th seems to have nothing to do with Nuclino.

</comment></comment></comment></comment><comment><USER10> I spent a bulk of my programming career modelling business processes in a graph database with strong schema, lifecycle control (state machines) and formal change control (revisioning).

I was always blown away with how easy it was to turn around a very stable and useful system where the customers could actually understand the data model and refactoring was easy to reason through.

Graph databases FTW.

<comment><USER11> What tools you used for this?

<comment><USER12> +1

<comment><USER13> Grakn (Grakn.ai) offers a strongly typed graph database that is open source :) (disclaimer: work there)

<comment><USER10> Took a look. Interesting project. The abstraction model available to declaring relationships/vertices was hard to grasp at first glance but as I thought about it further, I can see some interesting benefits for pattern matching grammar. eMatrix did not have abstraction for relationships/vertices types but did for object/edge types.

</comment></comment></comment></comment></comment><comment><USER14> I didn't know the LLIS was available online.

The first one I managed to click on was related to a fire in an employee's car: [https://llis.nasa.gov/lesson/943](https://llis.nasa.gov/lesson/943)

<comment><USER15> "Employee Falls Down Steep Ramp": [https://llis.nasa.gov/lesson/21803](https://llis.nasa.gov/lesson/21803)

<comment><USER15> That's as thorough as documentation gets [https://llis.nasa.gov/lesson/589](https://llis.nasa.gov/lesson/589)

</comment></comment></comment><comment><USER16> So one thing I still don't understand is whether Neo4J a pure graph database is better than using something like AegensGraph[0] or Cayley[1], which uses a pre-existing DB engine for their persistent layer. If yes, what are the advantages? Is it something that totally depends on the use case? If it is, what criteria should be used to make a decision?

[0]:[https://github.com/bitnine-oss/agensgraph](https://github.com/bitnine- oss/agensgraph) [1]:[https://github.com/cayleygraph/cayley](https://github.com/cayleygraph/cayley)

<comment> the-alchemist There's pros and cons to deciding whether to go "graph native" or existing DB.

PROS

You can optimize for exactly the types of queries that you want graph databases to answer: shortest path, path finding, etc. Relational databases / document databases are (generally) very poop at those types of queries because those are not the types of queries people want to run on those databases. In a "graph native" database, everything down to the storage on disk can be optimized to perform graph algorithms.

CONS

There's years, sometimes decades, of engineering that goes into databases (I'm thinking of PostgreSQL and Cassandra, both of which have graph "layers" available). A lot of the engineering work is non-graph specific: ACID, how to handle transactions, distributed computing, WAL, replication.

Why re-engineer all of those just to perform graph operations? More quickly.

Also, I can send you a good paper by the founder of DGraph Labs if you're really curious.

<comment><USER16> I would love to read the DGraph paper.

</comment></comment></comment><comment><USER17> The real NASA knowledge graph, with actual technical detail... [https://www.stardog.com/categories/nasa/](https://www.stardog.com/categories/nasa/)

<comment><USER18> Yes, and thanks. This bit is really important, I see too many people who don't understand the difference between a graph database and a knowledge graph.

"So how did we build this thing with the smart folks at NASA as partners and customers? The key takeaway here is that a Knowledge Graph platform is a Knowledge Toolkit plus a Graph Database, and all of those components are critical at NASA.

Doing this with a plain graph database isn't going to work unless you want to do all the heavy lifting of AI, knowledge representation, machine learning, and automated reasoning yourself, from scratch. I'll wait while you decide…didn't think so."

</comment></comment><comment><USER19> I wonder if there is an enterprise app that does this for you?

I can think of plenty of examples at my work where spidering a website and displaying it in a graph would be really cool.

Our wiki would be one for sure.

<comment> ice-berg True, I've been using mind mapping tools but it's not the same.

Nuclino ([https://www.nuclino.com/](https://www.nuclino.com/)) looks promising, trying it out now.

<comment><USER20> New account + gratuitous namedrop of the product whose corporate blog is linked in the submission.

</comment></comment></comment><comment><USER21> This seems to be an advertisement albeit a strange one. They make it clear that NASA used Neo4J rather than Nuclino. Neo4J is a true graph database, but I didn't find anything on the Nuclino website that suggests what Nuclino really is or what technology it uses.

<comment><USER22> Nuclino is a tool to write documentation and the only thing "graph" about it, from my understanding as a user, is you can link to different documents within nuclino which then generates a graph. This graph nuclino visualises so the user can explore the documentation.

In my experience this exploring thing kinda only makes sense when you want to document doing/trying the same thing again ( which NASA probably is). If you are just documenting how to connect to a database, set something up or similar it, to me, falls pretty glat. Maybe I'm using it wrong...

No idea what they use under the hood.

Source: Use it where I work

<comment><USER21> Wikipedia says it's written in Javascript. If true, that's kind of horrifying. [https://en.wikipedia.org/wiki/Nuclino](https://en.wikipedia.org/wiki/Nuclino)

<comment><USER16> Why so? From their site, it looks like they are not really selling a grpah db but a webapp. Lots of application are written in NodeJs.

</comment></comment></comment></comment><comment><USER23> What I am looking for is a nice way (graph) where I can connect all kinds of events/people/commits/bugs/tickets and jump between them.

Currently I am putting links on GitHub PR descriptions so I know in my deployment GitHub repo, Who releases What, When and in Which cluster (where)

The PRs contain links to Jira tickets.

So all in all if you "sprinkle" enough links on GitHub Jira, I essentially can click through them and answer the question, how that ended up here? What changed? Where is the bug?

But I feel like this set of links referencing GitHub, Jira, PRs, Commits, Error Reports would be really fitting in some kind of graph

</comment><comment><USER24> This kind of reminds me of the FMEA and its web structure, which is very useful.

It does share the big weakness with all the other such databases though, very hard to convince people to use it, specially to add and maintain content.

</comment><comment><USER25> Does anybody here have a 'canonical' application or example in mind that shows me what neo4j can do that matches my intuitive understanding better than the 'regular' RDBMS?

<comment><USER26> That can be non-obvious, so fair. We (graphistry) get pulled into a lot of investigative scenarios -- account takeover (web logs), malware/phishing analysis (host/network logs & feeds), AML, claims fraud, etc. I found the problems being solved to be some combination of: awkward to express with SQL, too slow to run in a RDBMS, or hard to visually explore relationships/correlations.

Examples:

=== Shortest Paths

1a. Referral: "Who on our team connected to which leadership at Apple?"

(target:Company[name="Apple"])<-[_:Leadership]--(champion)--[ _]-- >(us:Company[name="myCompany"])

1b. Supply Chain, AML, entanglements...: "How are these companies related, even if 5 companies away, and across all sorts of relationship types?"

(a:Company[name="a16z"])-[r:1..3]-(b:Company[name="juicero"])

=== Neighborhood (incl. multi-hop):

2a: 360 context on a security/fraud/ops incident:

(hacked:Computer[ip="10.10.0.0"])-[e:Alert]-(metadata:_)

\+ (hacked:Computer[ip="10.10.0.0"])-[Login]->(u:User)-[e:Alert]-(metadata: _)

2b: fraud rings:

(fraudster:clientIP)-[login:http]-(b:Fingerprint)

\+ (fraudster:clientIP)-[x:http[method="POST"]]-(p:Page)

2c: Journeys (customer, patient, ...)

(a:Patient[id=123]-[e:1..2]->(b:_)

=== Whole system optimization / compute:

Personalized pagerank, supplychain optimization, business process mining, ...

===

The above can be extended, such as by adding in compute (correlation, influence scores, ...). That feds into viz / recommendations / decision making.

 __or: Not all uses of graph are end-to-end. We often get used with a graph db to improve understanding it (our viz scale 100-1000X over the tools here via GPUs)... but folks may instead plug their graphdb into a tabular frontend. Or use us with a tabular system like Splunk /Spark/Elastic. So the above can be hard to write in Splunk/SQL, or slow to run, or hard to visually understand.

</comment></comment><comment><USER27> One problem I've seen in start ups as they scale isn't the lack of good documentation but the lack of information organization and hierarchy. The cost you pay is repeating experiments/trials, and generally slower development. The best way, I've found to overcome this, is to just talk to people and construct an information map/hierarchy as a mental model. Obviously, this process can't scale with the business. I wonder if this tool would be useful for software/product dev in start up environments?

</comment><comment><USER28> Has anybody ever seen a knowledge database for a large organization that actually works? I always see these efforts but usually they turn out pretty useless because nobody keeps them up to date.

<comment><USER29> Does Wikipedia count?

<comment><USER28> Wikipedia is pretty phenomenal but I was thinking more about a company. I have never seen a company that has the culture of continuously contributing to these efforts. They all fizzle out quickly.

<comment><USER30> In the two companies I've worked for, I was/am one of the main people that try to update documentation. I should ask if my previous company still uses the wiki that I kind of revived (it was full of useful info, but most people preferred to bother others, and if they searched the wiki before, they would not update the wiki with the newly learned info). By making it a useful resource, I felt like more people would start to use it, but my six months of employment were probably too short to really make that a reality.

I'm working in an even smaller company now - previously it was about 40 employees, now it's a handful. There are docs for the important things so there is no single point of failure, but very few day to day things are written down (like whom to report to that you're ill). As we grow, it's slowly becoming worth it to document that (single source of info instead of either having to bother the big boss or having different sources) and I'm looking at options to organise it. Organising it topic-based (graph(-like)) is an interesting alternative to the standard info dump with a search feature (wiki).

Trying out Nuclino just now and putting some items into it, I additionally noticed that having a separate system from your actual knowledge database can also be useful: info pages are on the wiki, custom tools are in different git repositories, project info might be in some task manager... If you have a separate system (such as a graph) that just points you to the right URL (wiki/task manager) or folder within a git repository, the system can outlast any of the individual products being used. Then again, having a layer of indirection makes it more time-consuming to use when you know that your info page is going to be in the wiki. I guess it will have to be very quick to call up and integrated nicely to make it worth it for others to use.

<comment><USER28> The problem with separate systems is that when you want to look up something you don't know where to look unless it fits exactly into certain categories. Right now we use OneNote within the team for everything. It's not perfect but at least I know where to look.

<comment><USER30> Having a system that organises the knowledge/info available should of course be comprehensive. If not everything is in there, there is no point having it.

But it's a good point you make. Now that I write it like this, it makes it more clear for myself how the system would work. It wouldn't just be another separate system, it would be the index for all the systems and whenever someone writes a new page where-ever, they should be required to link it into this graph (or whatever form it takes).

<comment><USER28> Also make sure that it's really easy to figure out where to put new information and then it should be easy to put the information there. From my experience even the slightest friction or confusion will make people stop using the system.

</comment></comment></comment></comment></comment></comment></comment><comment><USER31> not very convincing. If the differentiator was the correlation of data in a more meaningful way - It doesn't matter if you display the correlating data in a list or a graph...

</comment><comment><USER32> Is there any way to view the knowledge graph in the new design? Lot's of other people linking the database itself, but I can't actually find a link with the new design...

</comment><comment><USER33> This reads like SCP but with NASA and sometimes more scary.

</comment><comment><USER34> Never heard of this in my four years there. Hrm.

</comment><comment><USER35> It's not like space-travel knowledge-bases are rocket science ... oh, wait.

</comment><comment><USER36> Really rather not read a bunch of content marketing on this site. Could we stick to news?</comment>


The long history of drinking games - <AUTHOR> https://www.historytoday.com/history-matters/rules-drinking <comment><USER2> > Yet it cannot be just a question of wine being harder to stomach in greater > quantities than beer

I'd also say that pennying[1], a drinking game established at Cambridge/Oxford/Durham/St. Andrews (and others) and played almost exclusively with wine (or occasionally port), points in this direction.

[1] [https://enacademic.com/dic.nsf/enwiki/654919](https://enacademic.com/dic.nsf/enwiki/654919) \- a particularly devious example is the engineer's penny, which is a penny that has been bent so that it will fit down the neck of a wine bottle, "obliging" (obviously not enforced on anyone) you to finish the bottle

<comment><USER3> > Professor Stephen Hawking is not to be pennied. This is not actually a rule, > but is now widely accepted after two Robinson College students attending a > Caius College formal hall were fined in excess of £50 and given a lifelong > ban from the college for pennying his dessert.

Hah!

</comment></comment><comment><USER4> Everyone agrees alcohol is a drug like any other but then treats it far more tolerantly. Suppose we had cocaine snorting games or heroin smoking games. I like my drugs and believe they should be legalised but our socially sanctioned, even socially expected, abuse of alcohol is rather ominous.

<comment><USER5> > Suppose we had cocaine snorting games or heroin smoking games

Yes. Imagine.

<comment><USER6> i've played "ketamine chicken" with a partner and a long mirror before, heh

</comment></comment></comment><comment><USER7> > But in countries where wine is more popular than beer, such as Italy, > France, Spain and Greece, bingeing and drinking games are rarer and > generally frowned on.

Being from one of these countries I can safely say this is wrong on both counts. As a student I saw how popular drinking games were, and participated in many.

This is only a small part of the article, but it's always a bad feeling when one of the opening lines presents incorrect statements as facts. What else in this article is also completely wrong?

Are readers supposed to actively attempt to trigger the Gell-Mann amnesia effect to be able to enjoy an article?

<comment><USER8> Speaking for France, I agree with that original sentence. I played some drinking games while I was a student but it was very rare. Less than what I did on a single week when I visited a student friend in England. I asked my girlfriend (also french) and same thing for her - but replace England with Germany.

<comment><USER9> In Austria at least the alcoholic beverage used does not matter that much, especially in eastern Austria drinking games are also played with wine and must, not to mention that lots of drinking games everywhere are based on the consumption of spirits

</comment></comment></comment><comment><USER10> Playing the drinking long-game: with some help from the Templars, scattered Jaredites, and the Bavarian Illuminati, manage to get your drinking buddies' ode to wine, women, and song regularly played for olympic[1] podiums.

"And long may the sons of Anacreon intwine / The Myrtle of Venus with Bacchus's Vine."

[1] the games wouldn't be revived until 1896, so that part probably took more conspiracy work than getting the tune used for a national anthem in the first place.

</comment><comment><USER11> Bit of interesting history, one of the earliest examples we have of Greek writing is an inscription on an 8th century BCE wine cup found in Pithekoussai, referred to as Nestor's Cup.

Some scholars think the inscription on it is the result of a drinking game where writers alternated writing verses.

For the curious, the inscription says: Nestor's cup, good to drink from. Whoever drinks from this cup, him straightaway the desire of beautiful-crowned Aphrodite will seize.

</comment><comment><USER12> Meanwhile, in Wisconsin it doesn't count as drinking if you drink less than a six-pack and drunk driving is still a misdemeanor.

</comment><comment><USER13> Here's a bit I wrote about drinking games.

I enjoy drinking but I hate drinking games. I mean, talk about a way to disguise your drinking problem as laughing matter, as a veritable vocation of which to be proud. If you enjoy drinking games, that's fine in the same way that it's fine to have a drinking problem.

As I observe it, flip cup competitors are not so much vying for victory as they are crying for help. You have to hear the irony as they encourage their fellow addicts to, and I quote, "chug, chug, chug, yeahhhh!" All I hear is, "help, help, help uuussssss!"

So let's reach out to this community with the love and support they need. In fact, let's advertise a support line for this troubled community with posters that read:

Do You Enjoy Beer Pong,

Quarters, And the Like?

Call Anonymously: 1-800-PONG-NOMO.

<comment><USER14> That's a weird mindset. You enjoy drinking but consider having social fun while doing so a symptom of addiction?

What's the appropiate situation then to drink without considering it harmful? Gazing through a window with a nostalgic look?

<comment><USER4> > You enjoy drinking but consider having social fun while doing so...

He's talking about drinking games. He's said nothing about being against social fun per se, just a comment on drinking games.

<comment><USER14> >disguise your drinking problem as laughing matter

That's why I caught the implication of social fun while drinking != bad.

If it isn't the case, then I don't see what's specific about drinking games that makes them necessarily a drinking problem.</comment></comment></comment></comment>