TL;DR Haskell made more sense for us to scale with the number of requests (existing FB infra) as well as the number of engineers working on the project (type checking, etc).
What (s)he means though is in Java if firstName is there then it will be a string.
In Clojure firstName might be anything, a string, a number or even an entire other hashmap or type, literally anything. This might or might not cause a runtime crash if you are doing something that assumes it's a string. So you check.
And "saves" is a bit of a misnomer, since it implies the "cost" (of all the static type machinery) is less. Well, dynamic fans (or those with dynamic preferences if "fan" is too strong) will disagree. ;) In practice many systems get streams of bits from somewhere (like the network) that commonly get interpreted into strings and from there other types. The validation and conversion is necessary in any language, after that though it's just FUD to bring up that a function expecting a person with a :name key and string value potentially could be given something else. In the cases where through changes we make it something else, static types are a nice extra assurance on consistency, but that isn't the only way or the most impactful way to gain assurances.
Also this quote was about the cited reason for FB preferring Haskell to Clojure generally, not about this project specifically. IME it's common in big organisations to prefer stuff that has controls at the cost of productivity. It's probably harder to ship buggy Haskell code even if it's harder to write.
Passive-aggressiveness implies avoiding direct conflict. The author of this post refers to Acton not speaking up or making a good argument one way or the other, letting things evolve while resisting passively.
Also, the author is being very direct about what he thinks of Acton's behavior, he's not being passive-aggressive.
The team loves it. We're shipping features quickly and it integrates nicely with all the FB infrastructure (via Java). And of course, once you taste REPL-driven development.. you cannot go back :-)
No, it was rushed because F8 was getting close, we're a small team and we had ambitious goals in terms of features!
We had planned to release the Bot Engine at F8 long before MSFT's announcement. If you ask me, F8 might have affected their timing more than the other way around ;-)
Bot Engine is not tied to the Facebook platform.
It exposes an HTTPS API that you can use from anywhere. Slack, the command-line, Messenger, a VR app, etc.
We don't make assumptions on your platform.
(cofounder of Wit.ai here) Thanks for your kind words :)
I understand your concerns, here is my take.
X as a service allows you to get X with a lot less efforts.
It allows you to understand the problem and your needs by getting started quickly. Over time, if X as a service saved you enough time and you become successful, you can choose to develop an expertise in X and cut the dependency.
Wit is also about building a community of developers and advancing the state of the art of NLP in apps. Once the bot engine matures a bit, we'll be focusing again on the community aspect of Wit and hopefully advance the field enough so that efforts like the standardization you mentioned are started.
> X as a service allows you to get X with a lot less efforts.
I think it's more accurate to say that it allows you to borrow X. It's very true that it helps to bootstrap your own product and eventually if things work out you can bring X in-house.
My worry about everything-as-a-service is that until that point, each different service that you use is an another vulnerability to your product. This goes double for specialized services like AI, where unless you already have experts in that field, you're unlikely to have the expertise to replicate the service in-house. (Although by that same token, in this case without the service you couldn't provide your product anyway.)
There's little risk of depending on external services if you use multiple that provide the same type of service hidden behind an abstraction layer and can remove one of the vendors from the mix with the press of a key.
That mitigates the risk of depending on services, but it introduces a huge new risk by committing development time to a feature that provides no value to the user and potentially, if the providers last, no value to the business either.
Any startup founder who follows this strategy is concentrating on the wrong thing. Pick the provider who's most likely to last and build against their service. That way you are more likely to fail than they are.
You're conflating "using an external product" with "using an external service". The third option is self-hosting a third-party product, which gives you the best of both worlds (reduced development cost and time, reduced risk due to continued reliance on third party).
Could you explain why it is in your best interest to do so? Unless your community-based efforts are focused on "built on Wit", you would be actively lowering the bar to entry.
From a company standpoint, the commoditization of the GP's comment is directly counter to your incentives as a business.
Not sure I correctly understand your question, but I'll give it a shot.
Today, Wit offers many advantages out-of-the-box so you don't have to setup your own solution.
As NLP gets more commoditized (e.g. through open-source, open datasets), Wit will have to provide even more value than today to stay relevant. Value can be ease of use, accuracy, etc. That's how the field makes progress.
Regarding best interest, if you mean FB's best interest, FB wants more intelligent bots in Messenger, VR, etc. It makes sense to provide the tools to do so. Opening these tools also helps make them better (why is FB open-sourcing React for example?)
If you mean the Wit team's best interest, we're always happy to provide better tools to developers and innovate in AI / UX. That's why we started Wit after all :-)
TL;DR Haskell made more sense for us to scale with the number of requests (existing FB infra) as well as the number of engineers working on the project (type checking, etc).