They don't solve any of the deep inter-app and cross-app integrations Dan talks about, except discoverability. They arguably solve sharing, but that's very questionable when your only form of "sharing" is copy/paste, which is not as easy as tapping on buttons on mobile. They don't solve the problem of keeping track of apps (at best - if a user adds web pages to their home screen, they are no worse than normal mobile apps). They revert everything back to a pull-based model, when what Dan is suggesting is an organized push-based model (as opposed to the push notification chaos today). And so on...
And then web apps introduce massive (in relative terms) latency / load times, which is a whole other can of worms, which is even worse than downloading multiple mobile apps. Yeah, you can talk about <foo> initiative to speed up web apps, but the fact is, nobody can really enforce those things.
The Chinese web browsers are beginning to bolt on features in the same way the chat apps have. News, offline file storage, ebook stores with offline support, etc.
Chrome almost had the right idea, but their app store makes no distinction between web-based apps that actually make use of Chrome's app-specific APIs and those that are just normal websites. There is no standard for a good experience from a Chrome app.
No reason Chrome/UC Browser/Brave/Opera in the west couldn't throw caution to the wind and rachet it up all the way, then wait a few years for WC3 to come along and pick up the pieces.
Result wouldn't be as good as if the OS and web standards properly evolved, but it's one way to make it happen.
There is something really compelling about the totally-seamless experience, but do I as a user actually want that? I suppose it depends on my trust in the platform holder.
For one: Facebook doesn't need to know everything. While some are more peculiar about privacy than others, when information is used across boundaries that exist in our physical world, users start to care. I don't want to login for work-related sites or apps with my Facebook account and I'm sure most wouldn't login to a porn site with their Facebook account either.
Second problem is that the whole idea of federated login is that there are many providers who implement the same protocol, meaning whatever account I have, I can authenticate myself. Only implementing Facebook defeats the purpose of federated.
Something like Persona might have been a better solution, but in the meantime this is by far the best login solution on Android.
I have not been able to test Facebook in perfect conditions (I don't want the app on my phone) but having to go through a webview is pretty annoying, and brings a ton of security issues.
The future that the parent to your comment described is already here.
We do quite literally talk to computers for a living. Well, shit.
The author specifically points out how it is not about text only or commands or anything.
1. Open Facebook Messenger
2. me: I want a veggie pizza with Jalapeno topping
3. @megabot --> @pizza_bot: "Ordering an Jalapeno pizza: Choose the brands from below a) Papa Johns b) Dominos c) Pizzahut"
4. me: Papa Johns
5. @megabot --> @pizza_bot: Do you want anything else to go with that?
6. me: 1 garlic dip + Pepsi 500 ml
7. @megabot --> @pizza_bot: "Your order will be ready and will be delivered to the address. Please confirm"
8. me: confirm. end pizza_bot.
9. me: I want to go to downtown.
10. @megabot --> @taxi_bot: Shows map. Enter starting Location.
11. me: current location.
12. @megabot --> @taxi_bot: Your driver will be arriving in 4 mins. via a) Uber b) Lyft
13. me: Uber
14. me: confirm. end taxi_bot
15. me: I want to watch Spiderman 4 today evening.
16. @megabot --> @movie_bot: Spiderman 4 is playing in 4 theatres close to you. Please select from the following theatres. a) Sundance b) Rainbow c) AMC
Also, the imdb rating is 9.4/10 and Rotten Tomato Rating is 7/10.
17. me: Rainbow
18. @megabot --> @movie_bot: Please select the show times: a)7:30 pm b) 10:30 pm
19. me: 7:30 pm. confirm. end movie_bot
20. me: I want groceries delivered via instacart
21. @megabot --> @instacart_bot: blah blah
22. me: I want my lawn mowed next Sunday via task rabbit.
23. @megabot --> @taskrabbit_bot: blah blah
Basically one interface which provides a seamless experience. Without the bots, I have to either download a bunch of apps or if they are already downloaded, I have to context switch between them. Likewise, I would have to search the web a lot and multiple click my way to what I want.
>> Choose the brands from below a) Papa Johns b) Dominos c) Pizzahut
I don't know! Which one's cheapest? By how much? Is it appreciably worse, should I go for the other one?
It's like a description of post-scarcity bot. I'd just cat /dev/pizza, or something.
But in the real world if I ever found myself in a position to make decisions like that without regard to cost I'm either paraletic or I have a human assistant. :)
(Semi-serious bit: Here in the UK, I'd go for local pizza chain. Dominos without a money off voucher costs more than a three course meal. I have no idea how they stay in business).
This bot receives input from you, based on its knowlwedge of available bots, routes your requests to them and pipes the response back to you.
The problem with the current bot arms race is that we end up shifting the app fragmentation issue from the device home screen to the messaging app screen.
We bot enthusiasts love to claim that one of the advantages of using bots is that the user is already within the messaging app. But when you have lots of bots for different 'small' tasks then there is still a huge fragmentation as you switch context from the taxi bot to the pizza bot.
I shared some thoughts on the 'meta-bot' here: https://medium.com/@pelumi/chatbots-igniting-division-of-lab... it will be great to know your thoughts
This. And this is what I want from Siri, too. I find it funny that the Siri examples are always so stupid. "What's the weather in $MYCITY?" You know, clicking on the weather app is actually faster than this.
What I cannot do fast and what Siri is apparently incapable of doing yet, is something like chaining information:
"Where can I buy snow chains on the way to Lake Tahoe with the least detour from my current route?"
"Where is the next Starbucks along my route to Amsterdam?"
I hope this comes soon. This would be incredibly helpful.
As we grow our product, we will include commands to chat with the AI when you want to express a complex task, or a semi-specified task ("I want to watch a movie tonight" / "What kind of movie?")
At any one-o-one chat or group chat type:
@gif happy minions -> shows gifs
@youtube js talk -> find relevant videos and select one to send to chat
and so on
Gosh are your standards low. Can you really not think of something better?
> 1. Open Facebook Messenger
That's one too many step. Also why Facebook?
> 2. me: I want a veggie pizza with Jalapeno topping
How did you decide that you wanted that? What if there was something else you could eat, like left-over or a new dish from some other restaurant? Are you sure you should be eating pizza, considering you should fast before tomorrow's blood tests? The friend that's coming over to eat with you is lactose intolerant, didn't you know?
> 3. @megabot --> @pizza_bot: "Ordering an Jalapeno pizza: Choose the brands from below a) Papa Johns b) Dominos c) Pizzahut"
I'm confused. Why only these 3 brands? What about "Tony's Pizzeria"? Why is Domino's in the suggestion, considering you didn't like their pizza last time you ordered?
> 4. me: Papa Johns
But you have a 50% off coupon for Pizza Hut that expires in 2 days!
> 6. me: 1 garlic dip + Pepsi 500 ml
How did you know they have that? You already have Pepsi in your fridge.
> 7. @megabot --> @pizza_bot: "Your order will be ready and will be delivered to the address. Please confirm"
How does he know where or when you want this pizza delivered?
> 9. me: I want to go to downtown.
What do you mean downtown? Surely, you're looking to go to some specific place. It is not usual to do downtown without a more specific motivation.
> 10. @megabot --> @taxi_bot: Shows map. Enter starting Location.
How come does the bot not know where you are?
> 12. @megabot --> @taxi_bot: Your driver will be arriving in 4 mins. via a) Uber b) Lyft
4 mins for either Uber or Lyft? That's odd. How do you choose which one is better? What about your roommate who's going downtown with his car in 10 minutes? There's heavy traffic, don't you think you should take public transportation instead?
> 15. me: I want to watch Spiderman 4 today evening.
How did you choose Spiderman 4? What about the other movies you might prefer? Do you know you didn't match Spiderman 3 yet? What about your brother who told you he'd be interested in going to watch Spiderman 4 with you at some point? How did you know you were free this evening? Shouldn't this interaction have started while you were looking at your agenda/calendar/timeline and thought of a way to fill that available time with entertainment?
> 16. @megabot --> @movie_bot: Spiderman 4 is playing in 4 theatres close to you. Please select from the following theatres. a) Sundance b) Rainbow c) AMC Also, the imdb rating is 9.4/10 and Rotten Tomato Rating is 7/10.
How do you know which of the 4 theatres is the best? What if you have a membership card to either of them with points and coupons? What if it's raining and some of theme is for from the nearest bus/subway station? What if you're meeting with a friend there, but he lives far from all 3 out of 4 theatres? Also, these ratings mean nothing as they don't consider your taste in movies.
> 18. @megabot --> @movie_bot: Please select the show times: a)7:30 pm b) 10:30 pm
Well, 7:30 is too early and 10:30 is too late. Why choose the theatre before the showtime?
> 20. me: I want groceries delivered via instacart
How did you decide to go with Instacart? What about alternative services which might be better for you?
> 22. me: I want my lawn mowed next Sunday via task rabbit.
Well, the weather is not very good Sunday and you might pay an extra to have it mowed. Why not Saturday? Your neighbor just bought some Roomba lawn mower robot thing, why don't you ask him instead? Surely, there are a lot of other people who could mow your lawn that aren't on Task Rabbit.
We can do much better than that. We won't get there through incremental progress. We need to rethink the whole communication thing.
Could we create standards for things such as bank APIs, travel APIs, store APIs etc? I dont like forcing things on people, but if we could get some type of collaboration and create a UI where the user gets to create buttons / menu options to access those services directly? Let the user add only the needed options to a button on the home screen called "bank" for example.
I dont need OAuth or similar (Dont want that stuff close to my bank account) but some standard way to authenticate? Then just request my PIN whenever it needs to access a stored password. Or just request the password with saved username when accessing the request for the first time and then save it in a session etc.
I guess what i want for my phone is a easily programmable interface where I can setup whatever functions to access my information directly and not needing to access any other app. Apps are great, but it does not solve the issues that exists on desktops. How do we organize all these icons? Using menus or using desktops with icons? using lists of some sort? Very few systems have come close to solving this issue and most are probably more experimental then production. I believe the cloud should be APIs instead of HTML and Apps. Mobile interfaces should just be scriptable interfaces with some per-defined tasks and an easy way to download new tasks that others have done. Now, this does sound like apps, but its more specific: Its more like downloading a script from your bank that accesses your account balance. Then another script for your card balance. Then another script for a transfer etc. Then you just say where in the interface you want these buttons / links and done.
Anyway, time to end my long rant about mobile interfaces.
Your rant was actually a great read.
Why not? Technical difficulty - my local pizza shop doesnt care about running a payment processing endpoint, structured data, etc. Its counter to their goals.
What we need is an open source point of sale system that is web first - oscommerce with a desktop UI kind of thing. Then it becomes easy to add in 'publish standard compliant data'
Sadly no. The current version of mobile and the web relies on claiming consumer spaces and trying to herd users into them so they can be farmed.
It's a top-down control model.
Thinking in terms of bottom-up user value without imposing top-down control is alien to corporate psychology - even though if businesses agreed open low-friction global standards for payment processing and other kinds of interaction, possibly with some kind of profit sharing, they'd likely do better in the medium to long term.
It was here I succumbed to hypoxia.
Some of these issues can be solved by the OS: offering a unified notifications center with a better customizable UX, a per channel notification history, and more freedom to define follow-up actions. But unless the OS offers an alternative to apps, the barriers to install an app will remain bigger than installing a message bot, especially for one off communications.
I see an interesting future in a consolidated, block-chained B2C communications app, with a unified API for payments, notifications, and common UI elements. I can easily add contacts, and if I want marketing, I'll install the app or visit their website.
ps. I can recommend the recent discussion around bots on the a16z podcast.
It was so freeing to have my texts, Facebook messages, emails, etc in one place. People noticed I responded to messages faster, and I was much more organized than when everything was fragmented into different apps. I just need something like this on the OS-level on iOS.
As businesses seek to provide their services wherever users are (any platform that can take user input) we'll see businesses start to standardize interfaces between any bot/app/web app and their own fulfillment operations. Then businesses can take an incoming order from interface and send their product or service out to a user.
It's funny that Amazon started doing this with their own services many years ago.
Chat bots promises the power of the command line without the learning curve.
That is something to be exited about!
I'm not impressed by the Pizza example either. In my experience ordering via Justeats app or website is ~30min longer than just calling the shop. In fact, I will sometimes use JustEat to look at the menu and then call the shop to save time.
Chat is obviously slower at typing than talking, but the tap-speed when typing simply cannot be compared with tapping through menus.
And there is no wait for a chat bot.
Here's how the world works. We have:
- the actual world (one in total)
- the perceived world (one per agent)
- the ideal world (one per agent)
The goal of each agent is to get the actual world to match their ideal world. To do that, they need to:
1. make their perceived world match the actual world (learn)
2. identify issues with the actual/perceived world in order to define their ideal world (choose)
3. share their ideal world with others (ask)
4. find agents with complementing resources and desires (commit)
5. act on commitments taken to further their ideals (do)
What we need is a communication platform with the above processes baked in. Imagine a big semantic knowledge base holding the perceived world of all agents, as an approximation to the actual world (which exists outside of it). Think of it as an encyclopedia, a mirror of the world. All measurements of the actual world made by humans, machines, or bots, will be pushed there. Whenever you browse this knowledge graph, you get to contribute by confirming or opposing facts. Eventually, you will notice a pattern and side with those who agree with you the most. At this point, you can reliably expect those agent's future perceptions to align with yours, and will notice the same for your ideals/wishes. This is when you don't only get to learn about the present/past, but get to decide about the future, shaping your ideals. This is done just like you would describe perceived events, except this takes place in the future. Wishes and predictions, are effectively communicated by describing the future (the only difference being that you accept to lose money/resources/reputation/score in exchange for a wish to happen, and you accept to lose money/resources/reputation/score if a prediction doesn't happen). Once the knowledge graph knows enough about you, it will be able to identify complementing ideals/reality-deltas with other agents (i.e., "I need a couch" and "I no longer need my couch"). This leads to a contract in which all members agree in a shared future reality. This contract/commitment becomes a prediction, and predictions that involve yourself often become todo/tasks for to user to get done (expressed as the state of reality expected to be met). Then, all people need to do is make the actual world match predictions communicated by describing the future of the world.
Basically, all we need is a language and interface that let's people describe the world in static terms (i.e., "I was in New York yesterday", "I am in California today", "I will be in China tomorrow"). You don't want a Uber, you want to be home before supper. You don't want to buy a drill on Amazon, you want a hole in your wall. You don't want to unlock your door, you want to be inside the house. You don't want to share a tweet, you want its content to be seen.
By getting rid of all verbs except state verbs, we significantly simplify the language. You quickly realize that "read a book", "watch a movie", "learn a recipe", "listen to a song", "see a painting", "meet a person" can all be replaced by "know x". When you share/retweet/submit/send/bookmark x, what you actually want is for someone to "know x". The same thing applies when you "send money", "ship a package", "fly to Hawaii", "walk to the drugstore", "invite someone to an event", "order a pizza". They're all just ways to describe "x is at y".
Natural languages are extremely inefficient. We keep repeating the same things, over and over again. We say things that other people have already said before, we say things we have already said before. This is insane. It would be like everyone posting distinct comments on an article instead of upvoting a comment that reflects their thought. Actually, it should not be possible to communicate something that has already been communicated before. There should be no difference between the act of searching for an existing comment/question and coming up with a novel one (i.e., like on Stack Overflow). FAQs are extremely useful, and prevent people from trying to formulate and ask questions that have already been asked and answered. Why not apply that concept to communication as a whole? That's what the knowledge base I mentioned above is for. You no longer have to ask 99% of the questions you would ask otherwise, and you can communicate about yourself by simply agreeing or disagreeing with what has already been said by others.
I could go on, but I see this is going off the track. Natural language is fundamentally limited and we must build a new communication platform (and language) that will elevate humanity. The fact that nobody is talking about this is impossible.
I've never really considered the idea of declarative AI personal assistant interactions. The concept is pretty mind-blowing actually.
It's pretty damn obvious that's the way to go. i.e. You tell the AI the state of the world you desire and it handles it given an information set much much larger then you as an individual could possibly ingest.
Rather than the typical action of "AI bot send flowers to my wife" you'd say "AI bot make my wife know that I love and care for her." Of what the "system" knows about your wife's preferences, it can then indicate the action it believe will maximize the likelihood of adjusting the world into the asked-for state. That could be flowers, it could be a table for two at a restaurant she'd mentioned in an Email 6 months ago that you've forgotten about.
Not "AI bot, order me an Uber to location x", rather "AI bot, get me to location x ASAP."
To be less flippant, declarative AI already exists where it is easy. An airline booking website already gives you the ways to getting to location x ASAP. But looking at the performance of current recommendation systems, and natural language processing systems, I doubt if in the near future we would have a bot that would be better than me in guessing whether my wife would prefer flowers or a dinner on a particular anniversary, unless it cheats by using my wife's private information, in which case she's going to hate me either way.
The should be no such thing as private information. The fact that you're saying that access to it is "cheating" seems to indicate that access to it is the best outcome on a productivity point of view. Why makes things more difficult in the name of privacy when transparency makes everything easier?
- Do you really need to use your car to get there? Can't you use your bicycle? Can you wait 15 minutes, your neighbor is also going to Home Depot? Can you wait for tomorrow, you'll drive right next to one in your way to work?
- Do you really need to go to Home Depot? You could find a hammer at Walmart, which is closer. You could ask your neighbor for one, he has many and he won't use them today. Maybe there's a Uber fo tools that you could use to rent it?
- Do you really need a hammer? Wouldn't some other heavy object do the job? What about this nailgun you received as a gift last year?
- Do you really need to nail that painting? Wouldn't it be a better idea to use some of those 3M wall tapes that support up to 30 pounds and can be removed without leaving a mark/hole?
- Do you really want to hang that painting in your bedroom? Wouldn't it be better in the living room? Should we ask "Stack Overflow for home decoration"?
By locking ourselves into final solutions, we miss all alternatives which in most cases are much superior. By having tools that do exactly as we ask, we can't get what we really need. We need tools that challenge us, ask "why" until they find the actual end and not just the means.
Fortunately, the why/how tree axis is first class in my communication platform. You need flour and water to bake bread. Why do you need flour? To bake bread. How will you bake bread? With flour and water. In the ideal world, you simply describe what you want in terms of the highest "why" you can think of, and the system then let you discover the different branches of "how" you can do it. The only reason we do things in a certain order is because of state dependencies. Each task (make dough) needs a valid starting state (access to water and flour) to be completed as the ending state (have dough). You can combine these tasks like you would dominos or functions (and apply all the usual concepts like map, lift, reduce, curry, monoids, monads).
Basically, people don't know what they want and tend to copy others and/or their last selves. In order to avoid that and lead to the most efficient solutions, we need a communication system that challenges people until they really understand what and why they want. I can easily imagine a person's complex set of preferences and interests to be reduced to a handful of high-level values/goals from which an infinity of possible plans/solutions/paths can be derived.