Reason 3 - <AUTHOR> https://reasonml.github.io/community/blog/#reason-3 <comment><USER3> "Messenger used to receive bugs reports on a daily basis; since the introduction of Reason, there have been a total of 10 bugs (that's during the whole year, not per week)!"

That's truly amazing.

Interesting how Elm is inspiring other frameworks and languages. First Redux and now Reason's error messages.

<comment><USER4> I'm not saying that Reason doesn't deserve some of the credit, but surely some of this must be attributable to relative maturity of Messenger. Right?

<comment><USER5> (Hey Brandon!)

The JS part of messenger.com bugs a lot more.

</comment></comment></comment><comment><USER6> Just want to say I'm really excited about Bucklescript and the collaboration with Reason.

I started using the Reason syntax, but soon ended up migrating my project to vanilla OCaml as I found the syntax less JavaScript-like and easier to follow when thinking functionally vs imperatively. Also, there are many more tutorials out there (currently) for OCaml than there are for the Reason syntax.

As I understand it the two syntaxes are pretty much interchangeable, both use the same underlying AST, the same compile-to-JS backend (Bucklescript) and can even be auto-converted using `refmt`.

Also, if it's important to you, only the Reason project seems to still be encumbered by Facebook's patent grant, while the Bucklescript project was originally started by Bloomberg and now seems to be an independent project without the additional patent clause.

Both projects are really exciting as a practical way to bring type safety into the browser, with ridiculously fast compile times and tiny bundles.

<comment><USER7> For learning Reason, I found this page invaluable: [https://reasonml.github.io/try](https://reasonml.github.io/try)

You can put in Reason or OCaml and it will spit out the other. I used it to work through Real World OCaml in Reason.

</comment></comment><comment><USER8> Why oh why the brackets? Obfuscates currying too much.

        let make ::message ::extraGreeting=? _children => ...
        let make = (~message, ~extraGreeting=?, _children) => ...

Plain OCaml:

        let make ~message ?extraGreeting _children = ...

Fortunately bucklescript is a completely separate project. After this change I might ditch Reason and just write OCaml. There were some little improvements with Reason vs OCaml but now OCaml appears to be a clear winner!

<comment><USER5> I've given an answer to currying at [https://news.ycombinator.com/item?id=15573956](https://news.ycombinator.com/item?id=15573956)

BuckleScript's author and I collaborate on a daily basis, btw. So you're definitely welcome to use _just_ BuckleScript. I'm not too sure your reaction is genuine happiness for vanilla OCaml, but if it really is, then our mission's accomplished ([https://reasonml.github.io/guide/what-and-why#why- reason](https://reasonml.github.io/guide/what-and-why#why-reason)). If not, sorry about that.

</comment></comment><comment> lf-non Has someone done a comparision of Reason+Bucklescript with Fable[1] ?

F# has embraced the OCaml syntax while at the same time cleaning out many of the warts (+., do end etc.). It also now has good tooling available on all platforms.

Despite being a full time javascript/typescript developer I find F# syntax much more appealing and easy to grok than Reason's js inspired syntax.

[1] [http://fable.io](http://fable.io)

<comment><USER9> > F# has embraced the OCaml syntax while at the same time cleaning out many of > the warts (+., do end etc.). It also now has good tooling available on all > platforms.

Unfortunately, it also drops my favorite thing about OCaml, which is the module system.

I also like that there are different operators for ints and floats. It makes it very clear when you've accidentally mixed the two.

<comment><USER10> You can't accidentally mix floats and ints, it's a typed language.

<comment><USER9> It's typed, but the types can be fully inferred. If you didn't specify the types of your function, it could end up being inferred as float -> float -> float instead of int -> int -> int.

The different operators are a concise way to tell the type-checker that you're working with floats.

<comment><USER10> No it won't be inferred as float->float->float if there is an int literal or whatever base type you pass to the function. Check typeclasses for how this works.

</comment></comment></comment></comment></comment><comment><USER11> It's good to see languages like these showing up. Would love to code something complicated before I have a detailed opinion. With my experience in Typescript (another typed language claiming to make code better with some heavy React, Angular 4 projects); more than occasionally you have to escape into JS world (the dreaded <any> cast); thing that could have been done simpler with modern ES6 syntax needs some heavy lifting and rope jumping.

Since it's all JS under the hood, the type system is an illusion that language plays tricks on you. This makes it hard for people to understand how JS works or functions; without prior knowledge. Just to quote example one of my team mate had an interface in Typescript, and he was not able to understand why cant he do `x instanceof Foo`. Long story short is you can't have good "Typescript" programmer without being good JS developer. Which I believe will be the case here too. Yes it makes auto-complete better and documents really well; but improves code is debatable.

Don't get me wrong; I am not against it. All I am mentioning is the flip side that nobody will mention. OCaml is really powerful and cool kids are going to experience it with this effort, may be bring in new features/inspiration for next ES. But IMHO just a transpiled language can give you better constructs to express code; but it can't prevent a dumb programmer from making errors. I will for sure give this a shot and blog about it.

<comment><USER12> It should be possible to implement the instanceof operator for arbitrary types using essentially the same logic as the type checker. (Caveat: I don't know whether any TypeScript-specific properties make this impossible, since I have never used it.)

For each object, there is some function that takes no input and returns that object, by simply constructing the recursion-free parts of the object graph and then filling in any cycles. (TypeScript allows mutation, right?)

Then the question of `x instanceof Foo` becomes "is the function returning x typeable as () -> Foo". Of course that check is going to be much much more expensive than the simple comparison of the class tag other languages use, so I can understand why it's not part of the language.

<comment><USER9> The type checker has access to the source code (and any type annotations). That information isn't available at runtime, so I'm not sure how you'd be able to run the type checker at runtime.

<comment><USER12> You don't need the _original_ source code, any code producing the object you want to check will do. If the object has a field "field" with value "value", then the code

      function () { return {field: "value"}; }

produces a value of type Foo precisely when the original object was of type Foo, even if the code producing it was much more complex.

I don't see why that wouldn't work. If you have a specific example where that approach fails, I'd like to know about it.

<comment><USER9> But I don't know where you'd get that source code from at runtime though? I'm sure there are languages that contain enough runtime information, but, as an pertinent example, there isn't a way to tell that you have an object with certain fields in OCaml at runtime. It's just a block at runtime. All of the names are gone, as they were only used at compile time.

<comment><USER12> I was assuming the TypeScript/JavaScript scenario, where TypeScript objects are implemented as JavaScript objects and their structure is available at runtime. Of course it does not work if you do not have that reflection capability.

<comment><USER13> You can provide your own type guards: [https://www.typescriptlang.org/docs/handbook/advanced- types....](https://www.typescriptlang.org/docs/handbook/advanced-types.html)

Doing this in the general case, I assume, is probably not practical.

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> Both the blog post and the release notes remark that the change to function definition and application syntax would get a lot of attention, but neither of them even hint at a reason for such a significant change. The PRs implementing the change don't seem to provide a rationale, either. Does anyone have more background as to why this change was made?

<comment><USER15> [https://www.reddit.com/r/reasonml/comments/6v2olv/new_syntax...](https://www.reddit.com/r/reasonml/comments/6v2olv/new_syntax_after_pr_1299/dly4aa7/)

[https://github.com/facebook/reason/pull/1299#issuecomment-32...](https://github.com/facebook/reason/pull/1299#issuecomment-323335204)

</comment></comment><comment><USER16> Does anyone know why the React/Reason creators switched from SML to OCaml?

      Reason's creator also created ReactJS, whose first prototypes were written in SML,
      a distant cousin of OCaml. We've transcribed ReactML into ReactJS for wide adoption.[0]

[0] [https://reasonml.github.io/guide/what-and- why/](https://reasonml.github.io/guide/what-and-why/)

<comment><USER17> Hi, I'm the original inventor of React and I really like SML, however SML just didn't have a few of the escape hatches or advanced features that were needed to implement a very usable, extensible, and type safe React interface or implementation, so I eventually explored the OCaml type system and I found that it has many of those missing links. One surprise was that when showing it to fellow UI developers, I would constantly be met with confused looks and after digging into people's feedback, I found that most developers weren't seeing the same thing that I was seeing on the screen so they weren't able to see the ideas expressed in the code. The syntax was very commonly cited as a major point of friction. I don't see anything wrong with OCaml's syntax but my opinion alone doesn't matter because a major goal of software is to collaborate with other people - who matter.

To fix the problem, a couple people from various parts of Facebook got together and started building/testing Reason together, and eventually we shipped what is likely the largest (in terms of machines (billions)) OCaml deployment ever via Reason React.

There's still many pieces of OCaml beyond syntax that should be improved and we would like to continue fixing all the blockers to adoption that we can. Thankfully the rest of the OCaml community has the same goal and are doing great things at deeper parts of the toolchain and compiler. Our story started from the UI use case so our work and messaging so far has centered around it.

<comment><USER18> > The syntax was very commonly cited as a major point of friction. I don't see > anything wrong with OCaml's syntax but my opinion alone doesn't matter > because a major goal of software is to collaborate with other people - <USER2> > matter.

This is a perspective I wish was more prevalent in the programming community.

<comment><USER19> Yes! When first saw Reason I was horrified by the syntax (I really like the ML family syntax). But then I though about it, and here's my take now: if syntax is all we're giving up in order for OCaml to reach a far wider audience, then we're still coming out way ahead of what we had before.

<comment><USER20> I think that's the idea. Look at ELixir for example; they added Ruby syntax and macros onto Erlang and it's bringing tons of folks to the ecosystem. Sometime syou need to meet people where they are, if you want them to join your community.

</comment></comment></comment></comment></comment><comment><USER21> The two issues I have with Reason for me are:

1) It is not compatible with advanced optimizations in Google Closure's compilation process.

2) I've been burned by less than ideal implementations of immutable data structures for functional programming in the past, particularly in Elm. I haven't done enough with Immutable-Re to know if it has similar issues, but all functional data structures are not created the same. I'm spoiled by ClojureScript's implementation which has never thrown a stack overflow error for me, unlike Elm. In Elm, if you have a list that gets too large, you have to manually break it up into different lists and do weird concatenation stuff that is quite clunky because somehow it's not doing structural sharing quite right to ensure these things are transparent under the hood. Experienced Elm users helped explain this to me, and it's not something I like to think about when writing in a functional style.

So I've been a bit hesitant to embrace just any functional programming language for serious enterprise work. But I'm very intrigued by Reason and Bucklescript and am keeping a very close eye on them. I probably won't do more than toy projects in them any time soon, but it would be great to someday.

<comment><USER22> > In Elm, if you have a list that gets too large, you have to manually break > it up into different lists

To clarify, for anyone who comes across this later: there was a bug in the Elm 0.18 compiler that was triggered by enormous list _literals_. (Hence the workaround of concatenating smaller literals.) Nothing to do with the data structure itself.

After all, it's a singly linked list; there's not a whole lot of variation in how those are implemented. ;)

<comment><USER21> Is Elm using a particular library for its persistent structures, or are they custom for Elm?

I've read that it has both List and Array, yet neither appears to be ideal for proper functional programming; List, as you say, is a linked list, yet it is recommended [0] over Array for functional operations like map, fold, etc -- but you wouldn't normally want linked lists for that sort of thing, esp. if your maps and folds were part of a larger data transformation of composed functions. Does Elm offer anything similar to the structure of ClojureScript's persistent vector?

I have learned that FP without the guts of serious persistent structures is not so good in practice.

[0] [https://stackoverflow.com/questions/37707577/array-vs- list-i...](https://stackoverflow.com/questions/37707577/array-vs-list-in- elm#comment67060087_37707812)

</comment></comment></comment><comment><USER23> Are the new parentheses optional? I love modern JS syntax but the Reason syntax sans parentheses was really growing on me.

Also I'm still hoping for an async/await équivalent. I'd love to use Reason for Node API stuff but the JS interop with promises isn't very pretty...

<comment><USER24> I simply don't understand why people like C style syntax so much.

<comment><USER5> I made this release, and I also don't understand, and I do mean this _very honestly_. Aside from familiarity that is.

But the thing to realize is that this syntax change isn't for folks and you and me. We'll be fine with either.

<comment><USER25> But the syntax adds a layer of obfuscation over the mechanics of currying. I thought we were getting somewhere with Elm, Purescript, and Reason adopting it and making it more widely known, but then we've gone a step backward again. I kind of feel like we need better communication and education rather than just doing a band-aid fix that only helps folks in the short term. :(

Did you consider having a 'beginner mode' Reason, then flipping a switch to compare it to compare it to the non-parened version is?

<comment><USER5> I'm gonna argue beside the point, but currying has negative semantics and type system impact in a language with uncontrolled side-effects. It also prevents some optimizations and new type features.

Don't take my words for it: [https://github.com/facebook/reason/pull/1299#issuecomment-30...](https://github.com/facebook/reason/pull/1299#issuecomment-309032848) [https://realworldocaml.org/v1/en/html/imperative- programming...](https://realworldocaml.org/v1/en/html/imperative- programming-1.html#side-effects-and-weak-polymorphism) [https://drup.github.io/2016/08/02/difflists/](https://drup.github.io/2016/08/02/difflists/) [https://bucklescript.github.io/bucklescript/Manual.html#_cal...](https://bucklescript.github.io/bucklescript/Manual.html#_callback_optimization)

I'm jumping into this conversation early on because too often this point is raised and turns into an uncharitable interpretation of our motivations, e.g. "look at these js programmers, not understanding the beauty of currying". Rest assured that we do (and that we're not just js programmers), and that the Merlin and BuckleScript authors know very well what they're doing. Hope this clarifies things a bit.

<comment><USER25> I'm not talking about you not knowing, I'm more worried about language designers talking down to programmers for short term gains, rather than trying to raise them up with tools that will benefit them in the long term.

Interesting about argument syntax + effects. I've mainly used currying in pure languages. Is it about accidentally calling an effectful function multiple times? Is the idea here that you are conservatively treating everything as effectful with the uncurried syntax (before algebraic effects land), then will make pure stuff curried in order to attract people to use pure functions where possible?

<comment><USER26> There's a distinction between syntax and semantics though. E.g. Go pushes bad semantics (null values, bad error handling, no generics) in the name of beginner ease, with no transition path to better semantics. Reason pushes 'bad' (JavaScript) syntax but _good_ OCaml semantics in the name of attracting JavaScript devs, with a clear transition path to OCaml syntax should they want to.

<comment><USER25> Good points. Still weird to have a syntax that is at odds with the underlying semantics, and hopefully it doesn't sow more confusion than it initially solves in the long term.

I still can't get my head around why it would be an optimization problem too, seeing as it would be most using the same underlying AST. Unless they actually translate the pseudo-parameter lists into actual tuples in the parser, forbidding raw, single argument passing. :/

<comment><USER26> Yes, as far as I know Reason is the first project to try to have auto-currying semantics with tupled syntax. It's definitely a bit of an experiment.

Not sure what optimisation problem you're referring to, Reason and OCaml underlying AST are exactly the same. There are no actual tuples unless the programmer is creating actual tuples.

<comment><USER25> I was referring to chenglou's comment[1] where he said "It also prevents some optimizations and new type features."

[1]: [https://news.ycombinator.com/item?id=15573956](https://news.ycombinator.com/item?id=15573956)

<comment><USER27> I think what @chenglou was referring to are issues like the "value restriction" [1] and the need to wrap "uncurried" FFI functions with a function that "adapts" it to curried form, thereby adding a layer of indirection.

Reason does not solve these, they're problems inherent to the underlying language and the choices made. I think the point being made was just that currying isn't a clear step forward, but causes some problems as well.

[1]: [http://mlton.org/ValueRestriction](http://mlton.org/ValueRestriction)

<comment><USER25> Yeah, definitely agree that there are trade-offs with currying when mapping it to a compilation target like JS, and I am consistently impressed by Bucklescipt's ability to convert the curried versions of functions to regular JS calls. That said, I do still think that it's worth the trouble!

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment> DC-3 > We've found a bug for you

I must admit that if my compiler reported errors like this it would start to grate pretty quickly. Besides, isn't a bug exclusively something that breaks at runtime?

E: s/big/bug/

<comment><USER28> As a new user, it is way more useful. As an old user, you skip right past it.

Every Python exception tells you

> Traceback (most recent call last):

Which is a similar boilerplate statement. Except less useful to newcomers.

And if you doubt the need for newcomers to understand that stack traces and compiler errors are useful, then take a look at new user questions on StackOverflow - it's incredible how many of them flat out don't include that information. This kind of thing makes it way more likely the user recognises this is something useful, and better than that - makes it way more likely they can apply that information and solve their own problem.

> Besides, isn't a bug exclusively something that breaks at runtime?

I mean, it _would_ be a bug if the type checker hadn't caught it. The runtime distinction seems completely arbitrary when we are talking about tools take take runtime errors and make them impossible.

<comment><USER29> Technically "we've found a bug" ought to be "we couldn't prove there's no bug of this sort" and it can be grating, in the same way Clippy helpfully popping up was grating, to have the latter announced as the former.

</comment></comment></comment><comment><USER30> I haven't tried Reason but Merlin (whom the creator also built) looks really nice: [https://github.com/ocaml/merlin](https://github.com/ocaml/merlin)

<comment><USER31> Yeah, merlin is very useful.

</comment></comment><comment><USER32> This fixes the exact problems I would often have with ReasonML . On top of that my coworker hcarty made some nontrivial contributions to it, so I'm super excited. I am a dyed in the wool C style programmer, but after exposure to reasonml, I felt (as odd as it seems) able to read regular OCaml syntax easier. As someone else mentioned, it becomes a matter of what you see in your mind more than what's on the screen. I read OCaml library docs and have no trouble putting them into reason code.

Thanks for your work folks, ReasonML is just getting started.

</comment><comment><USER33> As an OCaml developer... I'm feeling just a _little_ jealous of those Reason error messages. Beautiful!

<comment><USER5> They're available to vanilla OCaml as well (given the constraints listed in the post). Add `"bsc-flags": ["-bs-super-errors"]` in your `bsconfig.json` to turn it on. If you use BuckleScript, that is.

We'll try to make it into a proper compiler plugin, but it's not trivial right now

<comment><USER34> Is JSX from ReasonReact usable directly in OCaml/BuckleScript?

<comment><USER27> Unfortunately not. It's an inseparable part of the Reason syntax. You can however use either the desugared form:

      ([@JSX] div(~foo=bar, ~children=[child1, child2], ()));

Or a preprocessor that'll give you a JSX-like syntax, but without the type checking: [https://github.com/cxa/ppx_bsx](https://github.com/cxa/ppx_bsx)

</comment></comment></comment></comment><comment><USER35> "...simpler cousin of JavaScript, minus the historical crufts, plus the features of ES2030 you can use today"

Thats funny.

</comment><comment><USER36> I love the new function syntax with parentheses! Much easier for us lowly Javascript developers to read at a glance!

<comment><USER37> The only thing I like about it is the fact that it removes the need for the `fun` keyword. Otherwise it just adds noise in my opinion.

<comment><USER5> The removal of `fun` (And unification of @@@) is directly tied to the parens change; otherwise there'd be parsing conflicts

</comment></comment></comment><comment><USER38> As an aside: How on earth have you managed to create a website where clicking a simple <a> in the menu doesn't work without cookies/localStorage enabled?

<comment><USER39> It works fine without JavaScript. Why would you expect websites to work normally if you take random part of JavaScript out?

<comment><USER38> I didn't mention javascript. Why should I need to enable cookies/localStorage to navigate?

</comment></comment></comment><comment><USER40> Are there any recommended reason apps on GitHub that one recommends going through? I'm interested how a medium/large app in reason is structured. Thanks!

</comment><comment><USER41> Quick question from a newb: whats the reason for using Reason? (Ignore the pun)

<comment><USER42> Rationale here: [https://reasonml.github.io/guide/what-and- why](https://reasonml.github.io/guide/what-and-why)

</comment></comment><comment><USER43> Can anyone speak to Windows support yet? Last I looked their was work being done to get better OCaml support on Windows which seemed like the big hurdle that was required. I know there are some workarounds using Windows 10 and Bash but I'm waiting for something I can easily get my whole team to use.

<comment><USER5> Here's a big centralized thread for it: [https://github.com/reasonml/reasonml.github.io/issues/195](https://github.com/reasonml/reasonml.github.io/issues/195)

In short, every part works, but the workflow is a bit contorted atm

</comment></comment><comment><USER44> I would love to see a comparison of the pros/cons of Reason vs Purescript by someone familiar with both.

<comment><USER45> Subjectively, I think PureScript is the better language (in terms of aesthetics and expressiveness) also it has overloads so (2 _5) and (2.3_ 3.3) instead of OCaml's odd (2.3 *. 3.3).

Reason has a much faster compiler, efficient immutable operations, and is built using tried-and-true tech (OCaml).

<comment><USER34> I also really like PureScript, but the output from PureScript seems to be a lot larger than OCaml/BuckleScript and have worse performance. OCaml/BuckleScript has a really small stdlib that is lacking common functions, does not support type classes or point free style. A lot of groups end up making their own stdlib. BuckleScript is probably the more practical option at the moment.

</comment></comment></comment><comment><USER46> Installation is broken with bs-platform, do this to fix it (assuming node is installed in /home/pc/node)

rm /home/pc/node/lib/node_modules/bs-platform/bin/refmt.exe

ln -s /home/pc/node/bin/refmt /home/pc/node/lib/node_modules/bs- platform/bin/refmt.exe

Is there no source map support? Also: I have to set up requirejs myself to make Reason code work in the browser? Not only that, it doesnt seem like the whole "each file is a module" system is actually codified in the output. I see no require calls that would indicate the right loading order for my generated .js files.

Generated code has weird comments in it like /* Facebook _/ and /_ Instagram */

<comment><USER26> There is no source map support because the output JS should correspond almost 1-1 with the input Reason.

Can you give an example of 'I see no require calls'? Require or import calls should be generated correctly.

<comment><USER46> I dont know what to tell you, I'm using the simplest possible project here. It just doesnt seem to pick up anything other than the entry.re file. I initially only had the non-webpack default compilation set up, which does compile all .re files but has the problem that the modules dont get loaded / no idea which order should be loaded. So naturally I set up webpack but now it only watches the entry.re file for some reason. And saying that the output js corresponds 1-1 with reason is really not true at all, especially when compiled into one big module with webpack.

[https://i.imgur.com/hrxmjWl.png](https://i.imgur.com/hrxmjWl.png)

<comment><USER26> I think it only watches one of your files because the other one isn't actually referenced by any code in the pathway of your entry point. If you reference some code from your other file, it will be picked up as well.

Yes, I forgot about bundling, sorry, but if you are in debug mode you're not minifying the bundle JS anyway so whatever you're looking at should still look a fair bit like the input Reason, especially because the names are only minimally mangled.

</comment></comment></comment></comment><comment><USER47> Any update on algebraic effects for single-threaded structured concurrency? In vanilla JS we can implement structured concurrency using generators as primitives. How do we implement _structured concurrency_ in Reason?

<comment><USER48> To be clear, Reason is just a lexer for OCaml. Any actual language features would happen in OCaml.

<comment><USER17> Currently: lexer, and parser, and AST printer (bidirectional parser you could say), with a few lightweight ppx macros included for UI development.

</comment></comment></comment><comment><USER49> Since Reason compiles to native Ocaml binaries I'm assuming there would be no problems using it with MirageOS? Google doesn't bring up any answers other than an older HN comment[1] suggesting support will come soon.

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

<comment><USER50> Because Reason is just a syntax layer over the OCaml syntax, you should write an MirageOS unikernel with Reason. However, because MirageOS needs lot of works, lot of people of this community don't have a plan to switch to Reason - but feel free :) !

After, it's about a convenience easy way to compile your Reason code with an OCaml code. Reason is just a preprocessing, you should use the `-pp` option with /your favorite build system in OCaml/ and, I think, it's enough.

<comment><USER49> I won't be switching to Reason, it's a small greenfield project :) The security model of Mirage will really suit this small app and Reason has piqued my interest for being a little more productive with dev tools and stuff. Also being able to build a frontend in the same language is appealing.

Thanks for the answer; the other comment alluding to support being recent and the lack of information had me a bit worried. I guess the lack of information is because it just works ;)

</comment></comment></comment><comment><USER51> But Reason is already version 9?

(I know there's going to be some overlap between project naming, but Reason is a fairly well-known product...)

<comment><USER52> I only know of ReasonML, what Reason are you referring to?

<comment><USER53> It comes down to domain knowledge. I am a musician, and whenever anyone mentions 'Reason', I instantly think of the DAW software by that name.

I have been a programmer for as long as I have been a musician, but strangely, never heard of ReasonML until now!

<comment><USER23> ReasonML is fairly new but I believe Facebook has big plans for it, so we're likely going to hear a lot more about it in the coming months.

</comment></comment></comment></comment><comment><USER54> Does this bring any interesting new language features which would help with distributed programming (like e.g. Erlang) or is this just another variation of syntax and infrastructure?

<comment><USER26> The latter.

</comment></comment><comment><USER55> So they've changed yet another piece of core, defining OCaml syntax (the lack of C-parens everywhere) for the worse, obfuscating currying in the process. But that's just my opinion, I guess. I don't have to use it.

I do find it ironic that in their announcement, they don't even try to defend the decision, but instead say, effectively, "if you don't like this change, you're just bikeshedding", and "if you don't care about syntax, great!" Given that the entire purpose of Reason is one giant bikeshed about OCaml syntax, this reads as hypocritical.

They also say, effectively, "no complaining in public allowed, just PM us (so we don't have to have a real conversation and we can ignore you)", so you _know_ they're great at working with their community.

<comment><USER56> I'd let it slip because it will probably move a massive amount of devs into the static reasoning mindset. You lose a bit in the process but the gain is still worth it.

<comment><USER57> I don't know. One may be forced to write this silly dialect instead of real OCaml in a couple of years "because Facebook".

</comment></comment></comment><comment><USER58> What are reasons competitors?

<comment><USER27> What are we supposed to be competing for? Reason is a tool that makes different trade-offs than some other tools. These trade-offs might work for you or they might not. It all depends on what YOU actually need.

</comment></comment><comment><USER59> Reason, for me, will always be the digital audio workstation by Propellerhead Software[1]. It was a masterpiece of user experience design.

[1]: [https://en.m.wikipedia.org/wiki/Reason_(software)](https://en.m.wikipedia.org/wiki/Reason_\(software\))

<comment><USER60> Reason the music software has always been a fine argument in favor of skeuomorphic design. We did an industry-wide "ewww" away from that kind of design but when it comes back with a vengeance it will be because of software like Reason.

<comment><USER61> The problem is that skeuomorphic design can become obsolete pretty fast. The virtual version replace the real object, and the aspect of said object is forgotten, rendering copying it useless.

</comment></comment></comment><comment><USER62> And here I thought you were referring to Reason, the music production suite :/

<comment><USER30> Same, it really should be referenced as ReasonML. Reason is a major piece of software that's been around for a very long time.

<comment><USER63> Also it gets difficult to google things very quickly while trying to get up to speed.

</comment></comment></comment><comment><USER64> This syntax is horrible. All the elegant lambda calculus associations are gone.

Yes, the original OCaml syntax looks quirky during the first two weeks. But it makes sense after that.</comment>


Metcalfe's Law is Wrong - <AUTHOR> http://spectrum.ieee.org/computing/networks/metcalfes-law-is-wrong

<comment><USER2> Chalk up another one, Bob.

[https://en.wikipedia.org/wiki/Robert_Metcalfe#Incorrect_pred...](https://en.wikipedia.org/wiki/Robert_Metcalfe#Incorrect_predictions)</comment>


Ask HN: Is AWS down for you? - <AUTHOR>

http://status.aws.amazon.com/ says everything is fine, but we've got major issues with AWS services. <comment><USER2> I can't load <http://status.aws.amazon.com> right now, but everything else is working fine for me.

(Where "everything" == my EC2 instance, S3, and SDB in the US-East region.)

</comment><comment><USER3> It's actually UltraDNS that went down. Many, many sites are unavailable right now.</comment>


Disc rot is a challenge for both archivists and collectors (2017) - <AUTHOR> https://www.vice.com/en_us/article/mg9pdv/the-hidden-phenomenon-that-could-ruin-your-old-discs <comment><USER3> This is such a huge problem for retro gamers. Any games on optical media, even those that aren't particularly old are at risk. As the article mentions, it's doubly infuriating given how optical media was marketed as more durable than cartridges. Meanwhile, a bunch of my Dreamcast and PS2 games have disc rot, while all my carts are still 100% playable.

Besides disc rot, optical drives are also at high risk of the laser dying - this has happened to a PS1, PS2 and Dreamcast of mine.

For these reasons, the most serious retro gamers I know are modding their optical drive systems to replace the CD drive with a SD-card based optical drive emulator.

Anyway, thank heavens for emulation and the homebrew fan community. Without them, so much of video game history would be lost.

<comment><USER4> I have not come across a Dreamcast game with rot. I have some early games which were just pressed badly and the top player in completely pealing off but it was not rot. The Saturn Discs on the other hand I have come across more than a few with rot.

</comment></comment><comment><USER5> The loss of what.cd wasn't difficult because it made piracy hard, it was because the users had created one of the best fully verified lossless cd audio archives on the internet.

Much of this content has popped up (or even been extended) on replacement trackers, but it's only a matter of time before the heroic operators of these trackers get forced to shut down too.

<comment><USER6> I remember the early days of piracy, Napster, Kaza, eDonkey. People were simply sharing all their files. There was pride in having a hard to obtain item, such as TV shows from the 60s, movies not released in DVDs, etc...

P2P could have made archivists jobs so much easier. This is a tech that should have been the next iteration of internet that we killed for no good reason. Not even greed, just a refusal to evolve a profitable but obsolete system.

<comment><USER7> I used to agree totally, but now I have a more nuanced view. While artificial scarcity offends my hacker sensibility, I also have to admit that this creates a society I like, with talented wealthy celebrities, and a large population of people who make their living in and around the industry. I'm not sure I would like a society where creative acts only happens in home studios and the work is given away for free, and all artists have to have day jobs.

<comment><USER6> I never said the new model was "give away everything for free" I just said that "Consider every copy needs to be paid even though making a copy is basically free of cost and that this forces us to put a terrible censorship mechanism into place" was not the right approach.

Now that there are crowdfunding campaigns and tons of tools for microtransaction, that is even less excusable than when you had the effort to imagine the apparition of these obvious solutions.

<comment><USER8> I feel like we're screwed until we get over the "ownership" model.

It means we spend more effort on metadata (What are we allowed to do with it? Who owns it?) than the actual data.

It has stood directly in the way of new creative types (sampling in music, for example) and locked away content where the metadata is faulty/lost (orphan works problem)

It falls apart badly at scale (if you wanted to get distribution rights for everything on an OSX/Windows installation image, imagine the number of third parties alone, plus the original developers, you'd need to sign off)

and then it only really incentivizes work that's commercially appealing, not necessarily the technical best.

I dream of a day where people who want to create will be able to get a stipend-- it might cover a modest lifestyle, but ensures they can live the dream of being an artist/musician/programmer without having to clutch tight over every scrap of their output to keep their income streams alive. If we did it through a tax-funded endowment rather than market forces, we could probably finance a lot more creativity that way (think how many touring singers we could finance at 50k per year for the price of one Taylor Swift, or how many programmers we could hire to work om their passion projects in database theory for what is currently being spent on Oracle licenses.)

</comment></comment></comment></comment></comment><comment><USER9> Theoretically, optical media should be easier to recover than magnetic, because the technology to view their surfaces in detail is readily available --- a light microscope is enough to humanly view the actual recorded data on a CD and even a DVD:

[https://3.14.by/en/read/cd-dvd-microscope](https://3.14.by/en/read/cd-dvd- microscope)

[https://www.youtube.com/watch?v=Y8_HCLPdpkI](https://www.youtube.com/watch?v=Y8_HCLPdpkI) (CD-R)

It would be interesting to see what "disc rot" looks like at that level of detail; and if better reading hardware may be able to read it. In particular, pressed discs actually store data in the varying height of the polycarbonate disc, so as long as those pits and lands haven't been damaged, even if the metallisation is gone, the data remains intact; and if there was a way to strip and re-coat that layer, pressed discs could be recovered. For CD-Rs, perhaps the dye has faded to the point where the typical drive (which can't really spin the disc slower than 1x) won't be able to discern the pits from the lands, but if that data can still be _seen_ somehow, it's recoverable.

<comment><USER10> I am the author of these photos... If you have a sample of rotten disk - <USER2> can send it to me and I'll take a look. Contacts are on the site.

Now my hardware is better, CD and DVD are easy to observe without physical damage. I also can see data on BD disk, but it is on the border of what is possible.

I also tried to decode data from the image, but it will require more collaboration.

</comment></comment><comment><USER11> For archivers there is now writable M-Disc bluray discs which claim to have longevity of 1000 years. It might be an overexaggeration, but they do use a different technology to record the information, a non-organic layer which is chemically much less active and will inevitably decay slower than a regular CD/DVD. There have even been some accelerated aging tests that were able to somewhat confirm that. If you're into archiving you might want to look that up.

<comment><USER12> After looking that up I've decided it's far cheaper to upload my data to S3 with maximum data center redundancy, fund my AWS account with a big enough balance to be able to pay for a decade of service, and give my keys to people I trust.

<comment><USER13> You should not put all eggs into one basket. Amazon might ban your account any day and you'll end up with no data. Or your data might lost because of some bug. There's Google coldline, there's online.net C13, they have similar price. Use at least 2 different providers.

<comment><USER14> Backblaze B2 as well, they advertise B2 at 0.5c/GB/mo, coldline is advertised at 0.4 (though the official docs quote 0.7c[0]), Glacier is 0.4 to 0.5 depending on the zone.

Azure apparently has an "archive" tier for 0.1c, which you can lower even further with long-term high-volume reservation: if you reserve 1PB for 3 years it's 0.081c/GB/mo (using only local redundancy) in the cheapest DCs where it's available (some DCs either don't have that feature at all, or it's way more expensive e.g. 0.1636 in asian DCs where it's available).

[0] [https://cloud.google.com/storage/pricing#storage- pricing](https://cloud.google.com/storage/pricing#storage-pricing)

</comment></comment></comment></comment><comment><USER15> This is going to be one of the reasons why CD collecting (whether it's games, music or otherwise) will likely stall. Even games which have been kept in perfect condition can suffer from rot as a result of poor quality control.

Cartridges are generally more hardened unless they contain some battery-based saving system and even then a dead battery can be replaced.

</comment><comment><USER16> I considered all my old CDs dead (music and PC games - RIP Phantasmagoria, plus MP3 collections) over a decade ago.

The majority of them developed white spots or detachment of the disc layer. This has been known since the early 2000s, I'm surprised anyone would collect them without being aware of the risks.

</comment><comment><USER17> Has anyone looked into whether M Disc is less susceptible to the problems mentioned in TFA?

<comment><USER14> They claim to, but it's hard to determine that, and whether other archival- targeted discs (or which there are several e.g. Northern Star DataTresorDisc, MPO Gold, Verbatim Archival) are also resistant to disc rot, because it's unclear whether accelerated aging triggers disc rot in general or only some very specific instances thereof.

(apparently defunct) syylex's GMD would most likely be structurally immune to disc rot, but you had / have to really really want to make your data rotproof: single-disc (4.7GB) order was 160€ (>$200 at the time). Not including VAT/GST.

</comment></comment><comment><USER18> I have the original install disks for BoeingCalc, the precusor to the more famous VisiCalc (Excel) but they're unreadable using consumer grade tech. Probably the only public copy of the software that I'm aware of.

<comment><USER19> > BoeingCalc, the _precusor_ to the more famous _VisiCalc_

No way:

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

VisiCalc: Initial release 1979

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

SuperCalc: Initial release 1980

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

Multiplan: Initial release 1982

[https://en.wikipedia.org/wiki/Lotus_1-2-3](https://en.wikipedia.org/wiki/Lotus_1-2-3)

Lotus 1 2 3: Initial release 1983

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

Boeing Calc: Initial release 1985 (6 years _after_ VisiCalc).

As it was released, it could read "standard" VisiCalc and Lotus 1-2-3 documents, according to Computerworld:

[https://books.google.at/books?id=97eagSKygYsC&pg=PA48&redir_...](https://books.google.at/books?id=97eagSKygYsC&pg=PA48&redir_esc=y)

What's interesting about Boeing Calc is that it allowed storage of its documents "online". But it was surely only for specific local setup, so it was probably "on the local server."

<comment><USER18> Ah, I think what I was remembering was that you could have multiple worksheets/"tabs" and run calcs between them, like modern excel. I don't think visicalc supported that level of complexity until later.

</comment></comment></comment><comment><USER20> What prevents, or tries to prevent, bit rot in standard CPU hard drives/flash drives? Is there some built-in forward error correction at some layer? If not, how could one add some?

<comment><USER13> Yes, all modern disks use error correcting. Wrong bit reads happen frequently in HDD and corrected all the time. Bits can't rot in HDD or SSD outside of firmware bugs or transmission errors. You'll get sector read error instead of wrong data.

<comment><USER21> > _Bits can 't rot in HDD or SSD outside of firmware bugs or transmission > errors_

The entire photography community begs to differ.

Gradual degradation of stored image data across HDDs of all vendors is very well documented, mainly because the bit rot is _very_ easy to spot when working with visual data.

Bit flips are persistent and they occur on the media itself, not in transmission. There are plenty of theories, including one that argues that bits are flipped by stray neutrinos, but nobody knows for sure.

<comment><USER14> > The entire photography community begs to differ.

Also ZFS. Part of its purpose and design goals was countering bit rot (as well as device hostility to keeping data safe), as Sun had customers affected (even with ECC). Hence the end-to-end checksumming amongst other features.

scrub exists pretty much just for bit rot: you run scrub regularly, it goes over the disk, checks that every block checksums properly, and if they don't[0] it repairs the data using the non-corrupted copy (assuming you have one).

[0] and your dataset is replicated, note that even if you don't use a raid configuration you can mark important dataset as to-duplicate for this purpose (this is _not_ equivalent to device redundancy, it's a feature which exists solely for bitrot / corruption protection)

</comment></comment></comment></comment><comment><USER22> I was tasked with transfering a large collection of cd-r media to hard disk. About 10% was unreadable or corrupted. I have not had a shelved hd go bad yet. I had an amiga 3000 from 92 boot after 25 years of inactivity. Also booted up a classic 8088 that was stored in a basement for about 30 years. No problems with either. Looks like a shelved hd is a cheap and reliable archival option. On a long enough timeline I would expect all cd-r media to be unreadable.

</comment><comment><USER23> For DVDs and CDs, error correction can be added using dvdisaster:

[http://dvdisaster.net/](http://dvdisaster.net/)

<comment><USER24> That link does not work, because there is no "A" record in DNS for dvdisaster.net. Here's the latest snapshot in archive.org [1].

It also seems to be available on Sourceforge [2], but that seems to be about 5 years behind what was on the now non-existent dvdisaster.net website.

[1] [https://web.archive.org/web/20180428070843/http://dvdisaster...](https://web.archive.org/web/20180428070843/http://dvdisaster.net/en/index.html)

[2] [https://sourceforge.net/projects/dvdisaster/](https://sourceforge.net/projects/dvdisaster/)

</comment></comment><comment><USER25> Afaik pressed disk rot is reversible, data is stored on the plastic part (as the name suggests its pressed in by the die), repair would involve sputtering new reflective surface. Plastic itself will probably hold tens of thousands of years. Writable disks are another matter altogether.

</comment><comment><USER26> Makes me wonder if there is some probability of error vs information density, irrespective of media. I assume eventually you'll hit some quantum limit where so much of the data, is error correction that it's not worthwhile. Maybe instead of going denser, it just needs to go larger.

</comment><comment> james-skemp I've got a pretty significant collection of PlayStation 1 and 2 games, and every time I see an article on disc rot I look to see when I need to be worried.

Has anyone seen a list of when disc-based systems might start showing signs? Something like game consoles and capacitors.

<comment><USER27> Not exactly what you are asking but I recently sold off my physical CD collection of about 500, after being in my closet for the past 20 years so no temperature/climate extremes, a few of them had signficant value on EBay, but when I tried to use Exact Audio Copy to verify they still could be read, about half no longer matched the online checksums or the original CD rip I had done before putting them in storage. There were three from Denon Japan that had physically deteriorated inside the disk, I could see there was a problem from a visual inspection.

<comment><USER28> Aha! This must be why them audiophiles prefer to listen to their music using $$$ cd transport from original media! You can hear the difference!

On a serious note, I'm in a similar boat, we're in a middle of the move and it appears that my cd collection is in same predicament. So I'm debating whether to throw them to trash, or keep around (mostly for cover artwork, and to keep my Exact Audio Copy -> flac transfers just a bit more legit (I care of such things)).

<comment><USER29> I dislike CD. My equipment is capable of 192khz/32bit (some only 24bit though), so CD are pretty much trash at 41khz. Better than MP3, solely due to the info MP3 throws away, but not great.

Tidal goes higher, to 96khz on master quality where available (the vast number of tracks are _not_ master quality, sadly).

<comment><USER30> You might want to read [https://people.xiph.org/~xiphmont/demo/neil- young.html](https://people.xiph.org/~xiphmont/demo/neil-young.html)

</comment></comment></comment></comment></comment><comment><USER31> I think I've heard that exposure to high variance in temperature can contribute. For example by storing CD's in your car.

</comment><comment><USER32> I have whole bunch of CDs and DVDs (media and data) many way older then 10 years. Some I burned myself and some were bought. Nearly all doing nice and dandy.

More then that I have an old box of 3" floppies dated 92-95. I recently decided to check some old code, bought USB floppy drive and I was actually able to read them. Well not all of them but still ...

<comment><USER33> Thing is they work, until they don't.

Nearly all may = massive decline soon as much as may mean you are done for another decade...

If you value it, move it now.

<comment><USER32> Who says that I did not. All that really matters was backed up years ago in a few places. But I still have the originals and was just curious. There is something about fishing out old CD and putting it into player.

As for those floppies I was just curious. I could care less if I did not find that old piece of code I mentioned. I was just curious to look at it and see how my way of thinking did change.

<comment><USER33> No worries. That is written for passersby as much as anything else.</comment></comment></comment></comment>


OpenNOP is an open source Linux based network accelerator - <AUTHOR> http://www.opennop.org <comment><AUTHOR> OT: I submitted this because, I was just looking for some open source project in WAN optimization .. and it is really hard to find something, because in google search there is only one project which is annoyingly dominates search results(my guess because of SEO).

Another project: <http://wanproxy.org>

But still this space is heavily owned by big corps. I guess smart developers/startup could find some real market here.

<comment><USER2> Some of those big corps did start out as startups. It is a very hard space to play in especially if software only. With hardware based approaches you just put the boxes inline and that is it. Note that the hardware boxes also do things like have a dual ethernet port card with a relay in it. If the box loses power then the ports are joined together so it still acts as a passthrough. (Our box also had a watchdog that had to be tickled every 2ms by software otherwise the relay would also kick in.)

The network infrastructure needs to be configured to divert traffic to the boxes which is fiddly and becomes a support load very quickly. If SSL forms part of the traffic you want to accelerate then there are two approaches either of which require even more system administration (not network administration).

Once a customer is non-trivial (eg 3 or more offices) then suddenly the sales process slows down drastically as the same product has to be used everywhere and supported by the networking and software people.

What this means is that if you are competing conventionally then it is very hard against the now entrenched vendors. If you are trying to be open source then you will find a very long hard and extremely likely to be an unrewarding slog. Many of the small vendors were out proving the space when the big corps all realised they needed an offering, and did all the acquisitions. The changes of being acquired are very slim now.

<comment><AUTHOR> Thanks for the extensive comments.

What do you think about Silver Peak virtual WANOP solution ?

<comment><USER2> > What do you think about Silver Peak virtual WANOP solution ?

No idea. However they aren't a small startup/open source solution like you were originally looking for! Pretty much everyone's solution is written as software that runs on Linux (sometimes BSD). That then gets packaged up on an hardware appliance, suitably tested, marked up and sold.

Consequently not much is needed to make a virtual appliance, although testing is harder as configurations are more diverse. In other words it is likely to be substantially in behaviour to hardware appliances (unless they deliberately exclude things to protect hardware appliance sales).

</comment></comment></comment></comment><comment><USER3> We use a Riverbed appliance for this at work (<http://www.riverbed.com/us/solutions/wan_optimization/>). Would love to see a comparison on ease of setup, stability, and optimization benchmarks, if anyone knows of one.

<comment><USER2> I used to work for the company that Riverbed was founded to compete with. My favourite party trick was to show new and interesting ways Riverbed could corrupt your data with their CIFS/SMB implementation.

Essentially their technical problem was they defaulted to passing commands through that there wasn't explicit code to detect (by default assume harmless). For example they claimed to support every CIFS client & server out there rather than only ones that had actually been thoroughly tested. Another example is they didn't detect the commands to zero out sections of a file so any app that did that would end up with the wrong data returned or in the file. (As a contrast we only supported actual client and server combinations that had been tested. On encountering a command not in a whitelist we immediately discarded all cached information.) One week I came up with 5 different corruptions they caused. We published one of them with Riverbed then threatening to sue claiming some violation of their user agreement!

Another example is the code had also been written by a bunch of Linux people which means they didn't work correctly with alternate data streams. These leak into the file name space and again affect caching and similar issues. [http://en.wikipedia.org/wiki/NTFS#Alternate_data_streams_.28...](http://en.wikipedia.org/wiki/NTFS#Alternate_data_streams_.28ADS.29)

I would be ashamed to have taken the technical approach they did, and treated customer data integrity as prime importance. Riverbed wanted marketshare and took shortcuts. Of course most people on encountering file issues with Windows end up blaming Windows so they wouldn't realise their WAN optimiser is actually at fault.

In other respects they did make some good choices. They chose to only accelerate TCP instead of IP as we did, which makes setup and auto discovery considerably easier since you can treat each TCP stream in isolation from the others and put your signalling inline into the stream. They also configured their systems to have some swap available. This provides an escape valve should worst case scenarios happen. Our system was RAM based only which meant code had to be very careful to not end up in a scenario where you need more RAM. This was done by being conservative and preallocating RAM. (You have systems at either end of a connection and they will have expectations of each other - eg that data can be decompressed and already exists in a compression dictionary.)

Their marketing was excellent as they correctly realised people would be reluctant to discard something already deployed, and would instead keep adding more of the same (sunk cost issues). They rapidly built up a customer base of many small customers and that was a good foundation for growth.

The company I worked for was acquired by a large company who then mismanaged it into the ground. Riverbed are pretty much the only ones left standing. I wouldn't touch their stuff due to very different technical tastes - but that hasn't affected their customer base and YMMV.

</comment></comment><comment><USER4> Thanks for sharing :)</comment>


ScummVM ported to Raspberry Pi - <AUTHOR> http://www.scummvm.org/news/20160304/ <comment><AUTHOR> "New ports include GCW-Zero (yes, sev finally got one from the Kickstarter) and Raspberry Pi."

See also the announcement on the Raspberry Pi blog;

[https://www.raspberrypi.org/blog/scummvm-sails-onto-the- rasp...](https://www.raspberrypi.org/blog/scummvm-sails-onto-the-raspberry- pi/)</comment>


The 2019 Hyundai Nexo is an upmarket hydrogen fuel-cell SUV - <AUTHOR> https://arstechnica.com/?p=1400853 <comment><USER2> Very poorly written. It doesn't even mention price, and it gives mileage in per-gallon terms that are meaningless for hydrogen.</comment>


Searchcode server a powerful code search engine with a sleak web user interface - <AUTHOR> https://github.com/boyter/searchcode-server <comment><USER2> boyter you rock dude. nice work!

<comment><AUTHOR> Thank you.</comment></comment>


Doom on a Pregnancy Tester - <AUTHOR> https://www.reddit.com/r/nextfuckinglevel/comments/ini2aw/doom_on_a_pregnancy_tester/ <comment><USER2> This original source is @foone on Twitter[0].

[0]: [https://twitter.com/foone/status/1302287398949142533?s=21](https://twitter.com/foone/status/1302287398949142533?s=21)

</comment><comment><USER3> It's just a Doom video with replacement electronics. womp womp womp woooomp.

<comment><USER4> Not even replacement electronics, its a VFX.

</comment></comment><comment><USER5> An earlier teardown of the equate digital pregnant test revealed that the microcontroller was not reprogrammable. This is the key tweet that shows that while this is impressive, this cannot be done out of the box. [https://twitter.com/Foone/status/1302453246536028160?s=20](https://twitter.com/Foone/status/1302453246536028160?s=20)</comment>


An Interactive State Machine Demo - <AUTHOR> https://drakonhub.com/files/lift.html <comment><USER2> I just learned about state machines last month in preparation for NaNoGenMo. They're pretty cool! I squeeled with joy to realize that Markov Chains can be a form of state machine.

Then I started coding an adventure and the if statements began to pile up. Escalated quickly.

Now I have to refactor the protagonist's narrative engine library if I want to add more complexity and reduce total lines code. It'll take a bit, and maybe I can't finish by the end of the month, but it'll allow for more emergent behaviour. Going to lean towards "Utility Functions" as they're called.

</comment><comment><AUTHOR> I've been pushing state machines for a long time with decision trees on Animat's recommendation. They managed to smoothly combine in a visual tool with automation? Hell yeah! I like that the article describes the benefit clearly:

"Behavior is notoriously difficult to test. The number of possible paths that a typical interactive program has is combinatorial. Besides, the previous actions affect the program's state, and thus its future responses. State machines drastically reduce the number of combinations that need to be tested. However, to be useful, state machines must be organized in a strict hierarchy. A well-chosen hierarchy removes irrelevant combinations of states."

This also isn't speculative. Dijkstra invented and used hierarchical layering of state machines to build THE Multiprogramming System [1] in the 1960's. It was very reliable at a time when computers weren't. High-assurance security required that approach on all systems at B3/A1/EAL6-7 both to reduce errors and facilitate mathematical verification. Best example being Karger et al's VAX VMM [2] illustrating it in Section G., "Layered Design." The only thing that's changed since then is that there's more automated methods than ever to help specify, verify, and generate/optimize code for ISM's. Every year, this approach from early-to-mid 60's becomes more usable and verifiable. Decision trees being the wild card here with the combo worth further design experimentation.

[1] [https://en.wikipedia.org/wiki/THE_multiprogramming_system](https://en.wikipedia.org/wiki/THE_multiprogramming_system)

[2] [http://lukemuehlhauser.com/wp-content/uploads/Karger-et- al-A...](http://lukemuehlhauser.com/wp-content/uploads/Karger-et-al-A- retrospective-on-the-VAX-VMM-security-kernel.pdf)

<comment><USER3> "However, to be useful, state machines must be organized in a strict hierarchy. A well-chosen hierarchy removes irrelevant combinations of states." - yes state machines are awesome and I use them all the time when programming real time controllers for machinery/process automation and sequencing.

The best thing for me is that telling the process engineers I want them to tell me their required functionality as a state table (which then is our common/overlapping language of interface) forces them to think about every state needed and to exhaustively and unambiguously consider every transition.

But, as per the text I included at the beginning of this comment, the surprisingly most difficult thing is deciding appropriate system decomposition and hierarchy so you don't end up with the "state explosion" of many, many states when someone tries to cram everything into one state machine.

</comment></comment><comment><USER3> Can't believe this topic isn't getting more up votes.</comment>


Large Scale Visual Recognition Challenge 2011 - Results - <AUTHOR> http://vision.stanford.edu/imagenet/ilsvrc2012/results_prelim.html

<comment><USER2> I don't think this proves a superiority of any algorithm against other. Just that SuperVision team did a great job on task 1 and task 2. I just would add two things: 1) There is a No Free Lunch Theorem (<http://en.wikipedia.org/wiki/No_free_lunch_theorem>) that had been applied to pattern recognition too and that states that there is not a significative difference in performance between most pattern recognition algorithms.

2) There is way more chance to get an increment on performance depending of the choose of the features being used, and that seems to be the case here.

<comment><AUTHOR> Many comments expressed concern about the alleged inappropriateness of the title. Even the no-free lunch theorem has been invoked, and words like SVM mentioned.

However: The original title, "Neural Networks officially best at object recognition", is much more appropriate than the current title, because it is by far the hardest vision contest. It is nearly two orders of magnituder larger and harder than other contests, which is why the winner of this contest is best at object recognition. The original title is much more accurate and should be restored.

Second, the gap between the first and the second entry is so obviously huge (25% error vs 15% error), that it cannot be bridged with simple "feature engineering". Neural networks win precisely because they look at the data, and choose the best possible features. The best human feature engineers could not come close to a relentless data-hungry algorithm.

Third, there was mention of the no-free lunch theorem and of how one cannot tell which methods are better. That theorem says that learning is impossible on data that has no structure, which is true but irrelevant. What's relevant that on the "specific" problem of object recognition as represented by this 1-million large dataset, neural networks are the best method.

Finally, if somebody makes SVMs deep, they will become more like neural networks and do better. Which is the point.

This is the beginning of the neural networks revolution in computer vision.

</comment></comment><comment><USER3> Hinton's team (SuperVision) uses an interesting 'dropout' technique. He gave a Google Tech Talk on this back in June.

[http://www.youtube.com/watch?v=DleXA5ADG78&feature=plcp](http://www.youtube.com/watch?v=DleXA5ADG78&feature=plcp)

And an older talk that covers some of what a deep convolutional net is:

<http://www.youtube.com/watch?v=VdIURAu1-aU>

<comment><USER4> Hinton is currently teaching a Coursera class on neural nets: <https://class.coursera.org/neuralnets-2012-001/class/index>

So far I've watched the first lecture and it seems like it'll be exactly the course I've been wanting: starting with the basics of machine learning but quickly diving into the state of the art for neural nets.

</comment></comment><comment><USER5> Sensational title that misrepresent the results of a competition with limited (albeit high quality) participants. There is limited information of general value in this link.

</comment><comment><USER6> Am not sure if you can apply winner takes all for such marginal difference in error. Give a slightly different database and things go awry.

Check out : "Unbiased Look at Dataset Bias", A. Torralba, A. Efros,CVPR 2011.

<comment><USER7> The difference in error between the first and the rest is ENORMOUS.

Task 1:

        1st 0.15315 (convolutional neural net)
        2nd 0.26172
        3rd 0.26979
        4th 0.27058
        5th 0.29576
        [...]

Differences:

        0.10857
        0.00807
        0.00079
        0.02518

As you can see the first is way ahead of the rest. The difference between the 1st and 2nd is ~11%, between the second and third ~1%.

Task 2:

        1st 0.335463 (convolutional neural net)
        2nd 0.500342
        3rd 0.536474

Idem dito.

But the most exciting thing is that the results were obtained with a relatively general purpose learning algorithm. No extraction of SIFT features, no "hough circle transform to find eyes and noses".

The points of the paper you cite are important concerns, but this result is still very exciting.

<comment><USER4> _the results were obtained with a relatively general purpose learning algorithm. No extraction of SIFT features, no "hough circle transform to find eyes and noses"._

This deserves even more emphasis. _All_ of the other teams were writing tons of domain specific code to implement fancy feature detectors that are the results of years of in-depth research and the subject of many PhDs. The machine learning only comes into play after the manually-coded feature detectors have preprocessed the data.

Meanwhile, the SuperVision team fed raw RGB pixel data directly into their machine learning system and got a _much_ better result.

</comment></comment></comment><comment><USER8> I found the title of this post really ironic.

"There is now clearly an objective answer to which inductive algorithm to use"

</comment><comment><USER9> Neural Networks officially best at object recognition _in this particular competition of seven teams, on two of the three tasks._

Not to take away from the accomplishment of the SuperVision team, but claim in the title seems somewhat sensationalist. Is this competition like the world cup of object recognition or something?

</comment><comment><USER2> Just to add sense for newcomers, the original title of the thread was "Neural Networks officially best at object recognition" and most of the posts in here debated that the title was not appropriate for the link.

</comment><comment><USER10> Congrats to the awesome folks at ISI for scoring 1st at task 3 and 2nd at task 1! Keep rocking my world.

</comment><comment><USER11> why isn't there any solution of task 3 from team SuperVision with their Neural Nets?

</comment><comment><USER12> *this implementation of a neural network designed for object recognition for this particular challenge

</comment><comment><USER13> So, this is what HN posts have come to? The level of tabloid science news coverage.

</comment><comment><USER14> The title has changes at least twice, confusing discussion. Can we have a title history on HN posts? Mutable state stinks.</comment>


IBooks detects jailbroken iphones - <AUTHOR> http://socialapples.com/blog/2011/02/15/apple-cripples-ibooks-for-jailbreakers/ <comment><USER2> It's hard to muster too much outrage about this. You can't read your "rightfully purchased iBooks" on any other device either; you can't read them on a Kindle, nor, to the best of my knowledge, on an Apple Mac computer of any sort. You can't to my mind reasonably expect to play them on jailbroken phones either.

Why are you even buying iBook books? I can't understand the market proposition to them. Kindle books work on Apple and Amazon hardware, and have a wider selection. eBooks are already content-protected (this doesn't bother me, but bothers most geeks); why would you opt into the _more_ protected of the two major options?

<comment><USER3> > _Kindle books work on Apple and Amazon hardware, and have a wider > selection._

Kindle's DRM seems to be a sweet spot: effective enough to prevent casual piracy, but generally not annoying, and easy to bypass for anyone who cares about controlling their own media.

<comment><USER4> Do you have more info on this? If true, the ability to export to ePub would induce me to buy books in kindle format.

[edit: looks like there are some python scripts to do this. <http://pastebin.com/f696ea728> This one claims to do the job. ]

<comment><USER5> > If true, the ability to export to ePub would induce me to buy books in > kindle format.

Keep in mind that by doing so you would still be supporting a consumer-hostile ecosystem.

<comment><USER6> Compared to what? I think it'd be easier/cheaper for anyone of moderate technical skill to learn how to remove DRM from a kindle book in order to duplicate it than to scan or photocopy a physical book in order duplicate it.

<comment><USER5> Many tech publishers sell unrestricted .mobi files if you buy directly from them. Some sci-fi publishers do as well, though most of what I read on my Kindle comes from feedbooks.com.

I didn't say don't do it; just to be aware that by buying books from Amazon, you're sending a message that you're OK with DRM.

</comment></comment></comment></comment></comment></comment><comment><USER7> I doubt that this was solely intended as a 'screw you' to jailbreakers. More likely, it's because Apple can't guarantee the integrity of DRM on a jailbroken system, and that's one of the terms in their contracts with publishers.

</comment><comment> wh-uws After years of this type of thing from Apple I just can't feel sorry for anyone with a problem with this.

You know Apple, they are going to do this every time.

If you have a problem with that don't buy their products.

<comment> wh-uws If you downvote please provide me with some feedback.

Apple has a very closed ecosystem and they like to exercise tight control over it. That is a fact.

</comment></comment><comment><USER8> _It appears that Apple is throwing caution to the wind and opening themselves up for a slew of lawsuits over… iBooks. Really? Even if a corporation doesn't like us messing with their perfect OS, they can't stop us from doing what's legal._

Sigh. Someone else who doesn't understand our rights _include_ the right to enter into a contract that places burdens on both parties.

There's no legal or moral reason that Apple can't say "I'll sell you this for $X plus your promise not to do $Y.". You don't have to like it -- in which case you shouldn't make the agreement -- but it's certainly not _wrong_.

<comment><USER9> Yes there are. There are plenty of rights which the law gives you which you can't surrender, because they occur in asymmetric situations where one party has more power than the other.

For example you can't sell yourself into slavery and you can't surrender your right to reverse engineer a technology (in most developed countries).

Anti-competitive practices is another area where the law has intervened in these sort of situations in the past. For example in the case of printer ink refills (although the law has chosen not to intervene in the console market).

<comment><USER8> We could have all kinds of debate here.

I assume that we can all agree on the slavery part, but I'm not so sure about the reverse engineering one. Your personal feelings may differ, of course, but I'm having trouble constructing an argument against the signing-away of reverse engineering rights, from basic natural law principles.

Here's another fun example: clearly the right to free speech is fundamental, at least to those in our society. So how is it that a court can uphold, e.g., an NDA?

</comment></comment></comment><comment><USER10> I'm glad that all the technical books I purchase come DRM-free. Articles like this remind me why DRM should be avoided.

</comment><comment><USER11> Surely this is just going to encourage people to pirate these books? Seems like another case of DRM punishing the good guys.

</comment><comment><USER12> Crippling functionality in response to jailbreaking is a bad move. Basically, you're pissing off exactly the people who have the ability to embarrass you. Just detecting jailbreaking is tremendously powerful in itself, and can be leveraged to great advantage. Crippling functionality isn't one of these ways, though.

</comment><comment><USER13> No, this does not open Apple up to lawsuits. Any corporation has the option of telling you what configurations are supported, and choosing to not support configurations that are the result of extensive tweaking.

</comment><comment><USER14> Don't buy DRM controlled books (or DRM controlled anything). By doing so you are at the mercy of the content provider/deliverer.

That should be the lesson learned.

</comment><comment><USER15> The lil blogger says "The Library of Congress declared that it is completely legal to jailbreak your devices."

Firstly, the Library of Congress hardle makes legal decisions, and additionally, if they did, that does not imply that a company can not lock them down.

</comment><comment><AUTHOR> this ongoing battle is annoying. I just need my iphone to be a hotspot and I need a better notification system. Then i'll be happy.

<comment><USER16> >and I need a better notification system

Not to sound trollish, but have you looked at Android's notification system? It's absolutely wonderful, and I really don't think I'd change a thing about it. If you aren't too tied to iOS and are willing to switch, I'd say it's worth a look.

<comment><AUTHOR> Yea, androids is much better than iOS. The notification system is by far the worst thing about iOS, but I'm sure that the iOS solution will be good when they do revamp it.</comment></comment></comment>


Could Kinect be Microsoft's iPod? - <AUTHOR> http://www.betanews.com/article/Could-Kinect-be-Microsofts-iPod/1294033521 <comment><USER2> My nephew got it for Christmas. I was bowled over by it. Surprised at how unfit I am, my arms hurt for two days after the Boxing game in the Sports bundle!

I heard that were issues with it but it worked fine for us, in a couple of different rooms with adults and kids of 6 and 7 :)

Very very cool to be able to manipulate an interface at a distance and considering that this is v1.0 then I think it is safe to assume that Microsoft will iron out any glitches and improve it as the iterate through the versions.

I'm a Linux and Mac guy but I gotta say that Kinect is superb and they deserve every credit for being innovative here.

<comment><USER3> Boxing _killed_ me, but I also destroyed my entire family, included my cousins for whom it was bought. I too was incredibly impressed, and found it to be one of the best gaming experiences I've had in a long time. Now they just have to do something with it that Nintendo _didn't_ do four years ago.

<comment><USER4> Historically Microsoft has also been quite successful mostly copying competitors' ideas.

If they just make a better Wii, that would be fine with me.

</comment></comment></comment><comment><USER5> I actually think there's quite a bit of potential for the Kinect, but it's really hampered by one giant bug:

It's an xbox.

The whole experience still screams "I'm a hardcore game device". Hell, it's called an "XBOX" for crying out loud. That doesn't sound warm and fuzzy. When you unbox it, you still need to use the xbox controller with it's intimidating array of input buttons, pads, triggers, and sticks. Most people are going to be scared and intimidated by that.

If you power it up, you're going to be confused by xbox live. You're going to be confused by how many accounts you need to create. You're going to be confused by the number of options.

You're going to be intimidated by ads for Call Of Duty.

You're going to be confused what is an arcade game and what is a demo.

In short, as much polish there is on the Kinect, it can't overcome the fact that it's a bolt-on product for an Xbox. If it was a brand-new, $199 device it would fly off the shelves. What it needs is a 60 second demo: when you have a friend over, you need to be able to turn on the device and be playing Kinect 60 seconds later without ever seeing the xbox controller.

<comment><USER6> You really think people are stupid and everything should be sold in heart shaped plush pillows, right?

<comment><USER7> People aren't stupid, they're lazy. They expect things to just work out of the box. They don't want to create online accounts,they don't look through the setup menus and they certainly don't read the manual.

</comment></comment></comment><comment><USER8> Yep. Very excited for the platform.

Microsoft is finally succeeding in its quest to dominate the living room. Remember the pre-launch buzz of Project Natal? With this controller, they made all consoles of this generation obsolete.

With future software updates, we will likely see the gaming functionality become less prominent. The box may default to Media Center experience based on user identity.

Microsoft knows what works for Apple and how intuitive UX is essential to its success.

</comment><comment><USER9> Seems really unlikely since the problems it solves are not nearly so universal as those of the iPod, iPhone, or Mac.

<comment><USER10> What problem does Mac exactly solve?

<comment><USER9> The lack of high quality, attractive, easy to use computers made by anyone else.

</comment></comment></comment><comment><USER11> I'm skeptical of any complicated human interface device that doesn't provide feedback / resistance. For me, the lack of feedback is what made the Wiimote feel like a gimmick and I think it'll limit how game developers are able to succeed with Kinect.

<comment><USER12> The wiimote did alright. You may be an anomaly.

</comment></comment><comment><USER13> Unless people are able to walk around the city to show friends (or anyone who would listen) how cool they are with their Kinect, it won't be Microsoft's iPod.

Or the XBox was already Microsoft's iPod.

</comment><comment><USER14> For MS to capitalise on the Kinetic's success they need to start releasing good official drivers for Windows soon so they can channel the wave of developer activity onto their main platform. At the moment it seems like you are better off using Linux or Mac with the hacked drivers. I don't think there is time to wait for some 'kinect integrated' version of windows but they could also start working on that. It will be interesting to see if they are if they are nimble enough to react to an unexpected level of success like this.

</comment><comment><USER15> FWIW, my girlfriend doesn't like playing Wii and absolutely dislikes hardcore games, but she was blown away by kinect's demo videos--especially the dancing ones and said she'd definitely get a kinect if within her budget at some point.

Anecdote aside, Microsoft really has to open up the platform as much as possible and embrace developer inovations. If they do this, they'll finally take over the living room. I have a feeling the media center division needs to get out of the way almost entirely for this to happen, also.

</comment><comment><USER16> Asus is coming out with their own version of the Kinect made by the same people who engineered part of the Kinect for Microsoft. So Kinect won't be the only game in town.

[http://www.engadget.com/2011/01/03/primesense-and-asus- team-...](http://www.engadget.com/2011/01/03/primesense-and-asus-team-bring- kinect-like-wavi-xtion-to-your-h/)

</comment><comment><USER17> I do INDEED think Kinect could be Microsoft's iPod. I tried the kinect at my friends house the other day, and it already kicks nintendo's Wii ass totally. And Microsoft's choice to leave it open for 3rd party hacking, I think, is going to get a bigger crowd by letting people make more use of it.

<comment><USER18> They didn't leave it open on purpose? Why do you think so? They even threatened legal action when the Kinect first came out and a company offered a bounty for OSS drivers. They'll likely never do anything about it, but they're not opening it up.

</comment></comment><comment><USER19> No. Kinect is Microsoft's :Cue:Cat.

A nifty-looking gadget that's perfectly useless in its manufacturer's intended use, but gained new life once the hackers tore it apart and started doing stuff with it.

</comment><comment><USER20> My parents like the Kinect. They bought an Xbox just to play the Kinect. They like Kinect to play racing games on the Xbox. I use a controller to play Halo. Different audiences, different appeal.

I don't see the UX-potential of the Kinect porting to the PC anytime soon. Call me stuck in my ways but I think the mouse and keyboard is pretty effective. Maybe focus-follows-eyeball would be cool, and Compiz's head tracking plugin gives windows some floating perspective, but I don't know if these things are major shifts in the Desktop paradigm or big enough to be iPod-cool.

</comment><comment><USER21> Kinect is part of an imaginary market along with its brethren the Wiimote and PlayStation Move.

Hardcore gamers soon realize that jumping up and down is nowhere near as fun as sitting on a couch and pushing buttons. Casual users, while initially sold on the health benefits, soon lose interest as well.

<comment><USER22> Hardcore gamers play games a lot more frequently than casual gamers.

Casual gamers still _spend money on games_ though. And there are a lot of them. Almost as many Wiis have been sold as _the population of Germany_. Nobody in the game console business would be sane to write off such a large market.

<comment><USER21> Once the devices are purchased, there is no market. While purely anecdotal, I have not seen any friends or family actually using a Wii in a long time.

If anybody has marketing data to the contrary, I would be interested in seeing it.

<comment><USER23> What you are looking for is called the attach-rate. Basically how much other stuff in the ecosystem are people buying once they have the console. I believe the XBOX is leading the pack for attach rate with both games and accessories, which is huge as that's where the big money is.</comment></comment></comment></comment>


3 years later, Google Apps free no longer on the sign-up page, again... - <AUTHOR> http://googleenterprise.blogspot.com/2009/07/google-apps-standard-edition-still-free.html

<comment><AUTHOR> Going to www.google.com/a/ it's just no longer there. Can be accessed via the Pricing page. Thanks Larry, Sergey. I wouldn't have cared at all had you guys not promised to not do this again.</comment>


Teslasuit – full body haptic VR suit - <AUTHOR> https://teslasuit.io/ <comment><USER2> Hey all,

Denis, Teslasuit Marketing Director here. Looking forward to your questions!

as for feedback for users - we have it on Youtube - just google it by keyword phrase "Teslasuit VR haptic suit at DevGAMM 2017 Minsk"

as for prefix Tesla - we using it due to the fact that we are using current (EMS and TENS) to provide haptic (sense of touch)

as for electricity: yes, we are using TENS and EMS to provide haptic sensations

as for security: yes. we have 2 security system built in the Teslasuit (software level and hardware level)

PS. I can't answer so fast to other questions due to limitation of the Hacker News, but promise - I will answer to all your questions a bit more later

<comment><USER3> Looks interesting. Some practical questions: :)

• Sizing wise, how're you thinking to handle different sized people. For example, I'm about 155cm (just over "5 foot" in imperial). That's fairly short compared to many North Americans.

• Power and signal transport. On the YouTube video there seems to be a back attachment with a WiFi logo. Does that mean the suit itself will be untethered (battery powered)?

• If it's untethered, do you have estimates for how long it'll generally go between charges (for the first generation)?

• Will the SDK and/or drivers be Open Source (of any license)?

<comment><USER2> Sizing: we are creating different sizes from XS to XXL Power and signal transport: Teslasuit fully untethered. Signal transmitting via Wi-FI. Battery is enough for 3-4 days of gaming (approx. 25-32 hours) SDK: not now, but we are thinking in this direction.

<comment><USER3> Thanks. Hopefully for the arms at least, the sensors can be some moved around.

Even with "standard" sizes like that, I always need to get clothes tailored as the arms and legs are still too long. :)

Open Sourcing drivers/SDK wise: If you need someone to bounce ideas off of or just discuss things, you're welcome to ping me (email@example.com). Happy to sign reasonable NDA (etc) if needed.

</comment></comment></comment></comment><comment><USER4> Hah! I built something similar (but very amateur) as my master thesis project: [https://procrastinative.ninja/2015/02/19/sensation- suit/](https://procrastinative.ninja/2015/02/19/sensation-suit/)

I always wanted to use TENS and EMS but my professors were a bit cautious. Anyway I've learned a lot and it was a really fun project. I still have the suit and have currently lent it to a fellow student who want's to survey if and how it increases VR immersion. Very happy to see another professional go at this! Good luck guys!

</comment><comment><USER5> I don't believe anything in the VR space until it starts to be demoed. Too much vaperware and marketing BS.

<comment><USER2> [http://www.bbc.com/news/technology-42574569](http://www.bbc.com/news/technology-42574569) \- newest video about Teslasuit from BBC :)

<comment><USER6> The suit literally shocks the person wearing it? Looks unpleasant - do you anticipate any safety issues?

<comment><USER7> It would be unpleasant if your VR text editor shocked you, sure. Might make for a fun game mechanic though.

<comment><USER8> 1\. Add a (python/js/whatever) linter plugin to the VR text editor, which will deliver a shock for violating linting rules;

2\. ???

3\. Profit!

</comment></comment></comment></comment></comment><comment> FLUX-YOU Now it just needs a helmet with oxygen control and we can fully simulate dying in Elite Dangerous.

But seriously, that's probably the first thing I'd go for with regards to temp control. Elite cockpits look like a sauna if you overheat your ship.

</comment><comment><USER9> That's quite some anterior pelvic tilt on the lady! Good thing she's going to be getting more standing in now.

</comment><comment><USER10> Wow this is so cool. Really makes me feel like I'm living in the future.

Not sure that naming it tesla was a good idea though.

<comment><USER11> right, riding the Tesla keyword is so 2010, they should have gone with MLsuit.io or blockchainSuit.io. Okay it felt good to write, go ahead and downvote me you mofos

<comment><USER12> Why not unlock your potential with the Cryptosuit?

</comment></comment></comment><comment><USER13> Will this be as successful as all of the preceding gaming TENS products?

2005: [http://www.mindwire-v5.com/home.html](http://www.mindwire-v5.com/home.html)

2007: [https://www.geek.com/games/new-gaming-vest-allows-players- to...](https://www.geek.com/games/new-gaming-vest-allows-players-to-feel- impact-of-bullets-569959/)

2010: [https://www.wired.com/2010/03/gaming-vest-makes-virtual- figh...](https://www.wired.com/2010/03/gaming-vest-makes-virtual-fights-real- and-painful/)

[http://www.korfx.com/](http://www.korfx.com/)

and on and on and on

</comment><comment><USER14> 6 motion sensors for the torso but none for the fingers? Going to simulate chest bouncing?

<comment><USER2> gloves planned to be built within 4 months

<comment><USER14> This is a solved problem you can buy right now and get an actual product.

[https://neuronmocap.com/](https://neuronmocap.com/)

No chest bouncing sensors though, unfortunately...

<comment><USER3> That did look interesting. eg:

[https://neuronmocap.com/content/product/perception-neuron- li...](https://neuronmocap.com/content/product/perception-neuron-lite)

But, pretty much Windows only. :(

They do have one demo + their data reading SDK also working on OSX. Not really sure if that should be considered real OSX support though:

[https://neuronmocap.com/downloads](https://neuronmocap.com/downloads)

Reading the license in the SDK, it's 100% proprietary. My interest completely died at that point.

</comment></comment></comment></comment><comment><USER15> "Teslasuit, n. A subpoena from Elon Musk's trademark attorneys"

<comment><USER16> That's not the way trademarks work.. Tesla has a trademark only in the fields they compete in: solar, cars, batteries. They can't stop you from starting Tesla Coffee Shop, or (in this case) Tesla VR suit.

<comment><USER17> Tesla VR suit name is creating a recipe for failure: if you think you can make a long-term viable VR suit company without ever using batteries (always tethered!) limits future growth potential greatly.

<comment><USER16> That's also not the way trademarks work. To violate Tesla's trademark they need compete in the battery market.

Trademarks don't get you rights to every market that utilizes the type of item you sell.

<comment><USER18> > they need compete in the battery market

There is no battery trademark category. Only electronics, which covers both batteries and this suit.

So yes, they do need to change their name.

</comment></comment></comment></comment></comment><comment><USER19> > Streaming service

> Imagine a fully integrated, computer-free version, streaming content > directly to the user's virtual/augmented reality system, that would work > together with Teslasuit and Teslaglove models remotely and wirelessly. > Revolutionary streaming service SDK will blow your mind with it unlimited > possibilities, provided on most high level ever.

Pffffft. All of this reads like imaginary, aspirational nonsense. Just someone tossing ideas onto a webpage.

> Platforms

> Native SDK for main platforms such as Linux, Windows and even Mac.

I appreciate that 2018's vaporware is prioritizing the Linux desktop.

<comment><USER10> Every thread about something cool has a bunch of posts filled with unfounded skepticism.

Do you have a good reason to claim it's vaporware, or is it just cool to be controversial on HN? What does your pointless pessimism and negativity add to the conversation?

HN is a community of hackers who like tech, creating stuff, and building the future. Let's get excited about the new things and support our colleagues, instead of just instinctively dismissing anything new.

<comment><USER20> I don't think that's a fair accusation. I've been reading hacker news for several years and this is maybe the second time I've seen a new product and my first thought was "vaporware". There is something about the renderings and the half-baked content that gives off a strong sense of not being close to production. We could be wrong, but it does at least indicate that they need to do something about their public facing site if so.

<comment><USER21> The name does it for me. Clearly a cheap grab for some attention that would be aimed at Tesla Motors.

</comment></comment></comment></comment><comment><USER22> I think if I was after experiences that immersive, and willing to go to that much trouble, then I would take up paintball, or join the society for creative anachronism or something.

<comment><USER23> You'll be able to do all of that virtually!

</comment></comment><comment><USER24> I'm interested in how the "weight simulation" works.

<comment><USER25> same here, i am very suspicious

<comment><USER2> we are using the same approach as that [https://hpi.de/fileadmin/user_upload/fachgebiete/baudisch/pr...](https://hpi.de/fileadmin/user_upload/fachgebiete/baudisch/projects/mobile_force_feedback/2017-CHI- VRwalls.pdf)

<comment><USER26> Ever used a stim machine? Hope your contacts are perfect, and excrete their own conductive gel, and my god will this have to be properly sized.

Orherwise... ouch... fire ants.

Edit: Note that despite the differences between TENS and NMES do not extend to the effects of bad contact.

</comment></comment></comment></comment><comment><USER27> The Three Body Problem game from Liu Cixin coming to life!

<comment><USER28> I feel like Ready Player One has a better presentation of haptic suits in VR environments.

<comment><USER29> This novel was amazing. I really enjoyed it.

</comment></comment></comment><comment><USER30> Its already a pain in the ass to put on and set up the Vive...who's going to want to jump into a wet suit just to play video games?

<comment><USER23> The type of people who don't want to have get out of their wetsuit just to interact with the real world.

</comment></comment><comment><USER31> > Motion capture and Positioning system I assume your suit uses IMU. How are > you correcting for the sensor drift over time ?

</comment><comment><USER32> as neat as this (likely vaporware) would be, i feel like just starting with something powerglove-esque and then extending up the arms would be easier and capture most of the value.

also, only two sensors per arm seems like it would leave it difficult to measure forearm twist. maybe they expect to recover that from touch controller orientation information?

</comment><comment><USER33> How heavy is the battery? or do you have to stay connected to the wall outlet?

The only climate control system I am aware of that can be used in this setting are Peltier effect based systems, and they are dogs in term of energy consumption if you can't put fan or other thermal pump.

</comment><comment><USER34> Another step towards teledildonics?

</comment><comment><USER35> i think a "haptic suit" is a good invention for the visually impaired. The suit could give you feedback when you body is near an object of when someone is approaching from behind, etc.

</comment><comment><USER36> Serious question, it looks like the image under 'washable' is a man's head on a woman's body.

</comment><comment><USER37> They officially announced Teslasuit at CES 2018 !

[https://twitter.com/real_teslasuit/status/950838538416873472](https://twitter.com/real_teslasuit/status/950838538416873472)

</comment><comment><USER38> How about a lawsuit?

<comment><USER39> The "Tesla v Teslasuit" suit

</comment></comment><comment><USER40> When is the ICO?

</comment><comment><USER41> He shall know your ways as though born to them

</comment><comment><USER17> Putting "Tesla" in the name seems like you're trying to use the carmaker's brand to bolster your own brand. Kind of shady.

<comment><USER42> But an electric carmaker using the name Tesla seems disingenuous in the first place.

What if I used "Turing" as the name of my cybersecurity/AI company?

<comment><USER17> What is your concern with the carmaker's name? Branded as an 'all electric' carmaker, so a name that evokes electricity seems fairly appropriate. Does feel a bit odd to be using a dead mans name for your company though.

Even still, two wrongs don't make a right.

<comment><USER42> I guess it is a matter of taste.

In any case, it should be impossible to trademark a name like "Tesla", because it is a common term in electrical engineering and transportation (Tesla wasn't the first company making electric cars).

</comment></comment></comment></comment><comment><USER43> "The Teslauit haptic library provides a range of sensations"

At least get your brand name right...

<comment> master-litty I think it's silly to get wrapped up in one minor typo like this, but we're talking about the name of the product here...

It doesn't leave the greatest first impression.

<comment><USER43> I expect my vaporware to at least get its marketing right! :-)

</comment></comment></comment><comment><USER44> So now we can have true sexual assault in VR. I wonder what safeguards will be created by developers to mitigate that. I wonder what legal ramifications there will be for touching someone without consent, if any, and what kind of exposure to liability developers will have.

<comment><USER45> It appears to avoid putting actuators in sensitive areas.

<comment><USER44> Ahh I see that now. But no doubt the porn industry is working on their own version.

<comment><USER46> There should be a phrase that evokes the ability of the porn industry to innovate, eg: "this haptic VR technology is really at the fapping edge"

</comment></comment></comment></comment><comment><USER47> VR is dead. I can't believe this company is going to burn through so much money with this. This will literally never launch.</comment>