Your phone connects to WhatsApp's servers. So does your laptop. The bridging is likely done server-side. I assume this is done because WhatsApp is (probably) using end-to-end encryption, so everything must be ran by your phone (which is the only place where your private key is stored) in order to encrypt the messages.
> Chat apps are the posterchild of what happens when open standards (irc, jabber, xmpp,...) get replaced with walled gardens.
To me it feels like the open standards never really kept up with the times, which in a way paved the way to walled gardens by the giants (and, in case of Slack, not so giants) to fill the gap which the open standards refused to fill.
I mean, sure IRC is awesome, text-only, channels, but emojis are limited to ASCII, inline GIFs are non-existent, and file-sharing (and/or storage) is rather clunky from what I remember from the old times.
And then we have XMPP which doesn't support things like video or voice calling (or at least it didn't last time I checked) and it's not very surprising that companies just capitalize on that and make their own platforms.
Don't take me wrong though... it creeps me out how the company where I work trusts Slack with reams and reams of confidential documents, but I guess it's convenient to an extent which no other platform is.
> And then we have XMPP which doesn't support things like video or voice calling
The Jingle extension is about a decade old and it's what Google based its support on. They even played ball for a while and released a good quality open libjingle, then decided that fighting spam from the other open XMPP networks is not worth their time and killed the whole openness concept - despite being an orders of magnitude simpler problem than email spam.
I think now the only escape from the walled gardens is regulatory pressure forcing interconnect of the larger players (Facebook, Google, Yahoo etc.) at least at text chat level.
XMPP is a bit complex, and suffers from some problems derived from too much flexibility. The mandatory part of the protocol is too small. This could be fixed by creating a meta XEP that lists all XEPs needed by modern clients.
However, it's a very capable protocol. Just see how nice conversations.im is. It doesn't even use GCM, and both latency and energy usage are fantastic.
If you use a client that conforms to the Advanced Client requirements of the IM and Mobile Compliance Suites (with a similarly up-to-par server), you will have a very good experience.
Recommendations for good clients for desktop systems? Maybe my google-fu is particularly weak today, but I couldn't find a clear statements which clients outside conversations.im fullfill those (obviously only the IM suite, since mobile wouldn't apply)
> I think now the only escape from the walled gardens is regulatory pressure forcing interconnect of the larger players
Sounds good on paper, sure, but ultimately it will end up being a predictable bureaucratic mess, causing more harm than good:
a) The mandatory 'open' standard that gets produced will end up being designed by committees of management teams from 6-7 major companies, each with their own list of feature requests and no central 'vision'.
b) A lack of a cohesive strategy and (critically) a lack of real incentives by the members to partake will result in endless delays, slow moving technological progress, layers of old cruft that never gets removed, and toxic political infighting causing confusion among vendors.
c) The standard ends up being so complex and involved that it isolates other small/medium sized players (or large foreign players) from joining in, eliminating the 'openness' the original regulation envisioned and crippling competition.
d) Ultimately reduces the ability for developers to get paid via monetization and grow via capital investments in the US, as non-regulated open-source projects (or foreign private apps) gain a major advantage of not having to be forced to use the standard. Cannibalizing the market the big players spent so much time/money building.
It's not just about good intentions and spotting a tough problem, it's about whether they can realistically and effectively achieve the end goals...
TLDR: open-source and the global nature of technology, lack of incentives, design by committee, regulatory agencies staffed by the very same companies it's regulating, etc, etc will result in the crippling of innovation and harm the quality of chat apps in the US.
I don't expect US to move a finger on the issue - all major players are american. However, something like USB charging was imposed by the EU with great success, ending a massive source of e-waste and proprietary cruft manufacturers imposed onto consumers. For EU, the economic motivations to force american companies open to European competition would be very tempting and the consumer benefits significant.
The takeaway from the USB success is not to design a new protocol by committee, rather pick a mature open standard - for textual chats there are several mature ones.
You mean like what happened to the web ?
I'm a bit tired that every time someone suggests a new regulation/standard on HN, someone feel smandated to explain why regulations are bad and why neo liberalism is awesome.
Could we assume that we all understand the downside of regulations ? but that we still suggest some when the market fall into a bad optimum (bad for the consumer).
If you don't agree that the market is stuck in a bad place, fine you can argue that.
cornholio brings up a really good point. The fact that Whatsapp and other messaging apps have significant more European marketshare and growth rates than in other parts of the world could make an EU regulation's effect felt around the world, much like the USB one.
And this is what happened back in the day. AOL was forced to add interoperability with competitors. But our government today is unwilling to step in front of corporations on behalf of the people.
HN readers don't all have the same government. I assume you mean the US one. The EU has in some cases proved to be willing to confront corporations and/or to defend some consumers right. Not always or in the most efficient way, but here's hoping that it will continue and improve on that path.
I'm well aware, and really happy about the work the EU's competition commission is doing. Unfortunately, for US-based corporations, global change is unlikely to happen until the US steps in.
What would be the advantage of adding tighter voice/video support to XMPP, vs just using links to sip: URIs? A major point of open standards is that you can use use them together with other open standards.
Is it bad that I lose my patience when the argument derails like this and becomes a sort of pissing contest? Brings me to the verge of replying, only to stop myself with the argument that I know better than to enter pissing contests...
Normally the argument is the this should be part of your backlog and not spread all over the code where no one (and especially the PO) can keep track of all the TODOs in all the files.
Depends on trust. I've had an experience where old tickets documenting important architectural problems (e.g. SQL injection) were mass-closed as "probably obsolete" by managerial types.
I was very happy I left a TODO in the actual code calling out the problem, because I could find and reopen the wrongly-closed ticket.
Heh. Visual Studio actually does keep track of all the TODOs in all the files in your project. It's the Task List window (View -> Other Windows -> Task List, or ctrl-alt-K).
Yep! It's a decent web browsing experience with Chromium once you configure some of the settings, and use at least uMatrix to block some of the heftier Javascript. And you can use SMTube to play Youtube videos.
I'm currently running Chromium with a few open tabs, SMTube, VS Code, and Hexchat without any problems.
Interesting idea, but to be honest I think it will never take off in a large scale.
If you want to write a vague and generic piece of code that can figure out by itself what it is that its outputs ought to be with regards to its inputs, you are, with effect, creating artificial intelligence.
This, in turn, requires teaching.
What if suddenly you have new pages on your website? Your AI program thingy wouldn't be able to serve them until you taught it what these pages are and in what situations the end user might be interested in viewing them. Imagine having a 5 year old kid handling your shop's cashier. And now a new product arrived and you have to explain to him/her that there's this new product, what it's called, the price and which types of people are allowed to buy it (e.g., alcohol couldn't be sold to people younger than X years old). If you're really teaching your application with natural language, like you would with a five year old, then the effort it'd take to get that info into your system would defeat the purpose of actually using a computer to do it (computers are good at storing and looking up stuff in large data sets, better than humans for really large data sets).
This whole hype of machine learning is suitable for situations where you have large amounts of data and you want them crunched according to some basic pre-established and non-changing logic without relying on actual human labor. If the logic evolves, you'll always require humans to sit at the helm and steer the right and wrong.
3 years ago many systems that exist today would be regarded as "scifi" or "maybe 10 years into the future". One of the most striking examples is Visual Question Answering with dynamic memory networks [1]. The model is given raw pixels and encoded question in natural language, it should output a natural language answer. See how it works on data it hasn't seen: http://i.imgur.com/074G9pg.jpg
Do not underestimate what good ML model can learn given enough data. And in case of online shopping there usually is more than enough data, and big companies like Amazon have been using ML (context bandits) for quite some time.
Then would know that visual question answering performs quite poorly. It makes for a nice demo, but it's trivial/quick/easy to find entire areas of questions where the models completely. The questions have to be worded very carefully. The models are quite finnicky and dumb. For example, dynamic memory nets aren't the state of the art - the state of the art for these datasets doesn't use anything nearly as complicated as memory, etc.
In my app, 7 Second Meditation, I am constantly authoring new content. It uses improve.ai to show that new content to some small number of users and learn how they react to that content.
The learning happens from the users themselves. In my particular case, within about 300-500 views the system can tell if a new piece of content is total crap and will basically stop showing it. If the content is amazing, within 100-200 views it has a strong idea and will immediately prioritize this content.
The results speak for themselves, before I started using machine learning I was getting 4 star ratings and usage was flat. Now I'm getting 5 star ratings and the app is growing.
Will it ever take off at large scale? I have no clue, but I've seen such strong benefits from the machine learning that I'm now working on developing improve.ai full time.
I would contend that bayesian reinforcement learning is statistical machine learning.
The difference between A/B testing and reinforcement learning is that reinforcement learning does not use a control and does not wait for high confidence to continue to improve. This allows much more data-efficient learning than A/B testing because at every step it is making its best guess as to whether to continue to explore or exploit what its already learned.
As to it having nothing to do with orchestrating code:
Most code is logic reacting to data. Reinforcement learning replaces hand-coded logic with goal-driven logic. If you can use a declarative approach to specify your goals, much of the logic can be moved to reinforcement learning.
My thoughts exactly. AI isn't something that can replace "hard computing". That would be the equivalent of saying that we could replace computer with human doing stuff manually - all we need to do is train that human to not make mistakes most of the time.
I'd be more interested in other way of using AI to automate coding - make it to actually write code. Train it on existing code and let him figure out how to write a piece of code like a programmer would. I think it has much more potential than AI doing the calculations itself.