Emergent Ethics for Artificial Intelligence

AI systems today present not only a new set of technical challenges but ethical ones as well. The one that I have seen mentioned the most often involves the decision a self driving car that is about to crash and has to choose between hitting children on the street, a pedestrian on the footpath or a wall and killing the occupant. As the MIT Technology Review’s article titled “Why Self-Driving Cars Must Be Programmed to Kill” phrases it:

How should the car be programmed to act in the event of an unavoidable accident? Should it minimize the loss of life, even if it means sacrificing the occupants, or should it protect the occupants at all costs? Should it choose between these extremes at random?

Its hard to imagine anyone trying to solve this problem since it doesn’t have any good solutions. But not taking a decision here would be a decision itself.

At SXSW today I did see an interesting presentation that did spark an idea. I attended a session titled “Humans and Robots in a Free-for-All Discussion” had two robots have a discussion on different ideas with each other and a human. A video of the session is embedded below:


The idea of robots talking to each other had a previous brief internet popularity moment with two bots on hacked Google Home devices chatting with each other that was live streamed on Twitch.

What is interesting is that the bots were programmed with just facts and allowed to come to their own conclusions. The photo from the presentation below shows how the system took in bare facts and then, by using supporting or negating statements, could come to a conclusion by itself.

The idea is intriguing. Could this be how cars will learn ethics? No human would ever verbally put a price on human life, yet by action a lot of us do all the time.

Could ethics in AI not be something we code but allow to emerge based on facts that we train the model on?



Rethinking Sign-In in the mobile first world

I have never been a fan of OAuth for signing in. Sure, it was better than sites asking for third party username and passwords, but It solved the problems for web-apps just around the time mobile was beginning to dominate how users interacted with the web. OAuth just does not work for mobile because the it was built on the premise that the sign in flow happened on a browser which could validate and enforce security.

As Twitter and Facebook started to get popular, sites started using their sign in buttons which were slightly better because on mobile, social login was handled by the OS. If you added your Twitter and Facebook credentials in the Settings on iOS, or had the appropriate Account Authenticator on Android, not only were you guaranteed security, the process was also a lot easier for the end user. That said, not everyone was okay with sharing their social data with these services, so the traditional sign in process on mobile remains the traditional links to use popular social platforms and an option for the more traditional email and password for those willing to endure some pain in exchange for some privacy.


As smart phones go global however, social login is just not as feasible. There are people out there without Facebook/Twitter accounts, or are getting more protective of their data. This trend has brought some interesting changes in the auth landscape.

Sign in with an email and no password

I recently read an article on how Medium is walking away from the whole passwords model altogether. Here is how they explain their system:

That’s right, no passwords. When you want to sign in to Medium, we’ll send you an email that contains a special sign in link. Clicking on that link will sign you in. That’s all there is to it. If you’ve ever used a “forgot password” feature, it works a lot like that, except you don’t have to forget a password to use it.

This is an interesting approach. On mobile this may be specially convenient where as soon as you get the email, you get a notification making the process fairly obvious without a lot of context switching between the site and the email app.

I recently saw this model implemented on Slack as well.


Slack is making this one of the ways to sign in, not the only way, which I think is smart. On a desktop I don’t mind typing a password, and might actually prefer that to switching to my email app/tab.

Sign in with your phone number

As the next phase of smart phone growth comes from developing countries, a lot of these people have never used emails. SMS is the communication medium of choice here, and it makes sense: SMS is the native mobile medium of communication.


The SMS model for auth asks the user to enter his phone number in the auth screen and then sends that number an SMS with an access code (or on Android with the right permissions, just detect when an SMS from them arrives on the device).

I first saw this model on WhatsApp, but has since been getting more popular. Recently Twitter has even released a service called Digits to enable signing in via SMS.

Sign in with another signed in device

One of the drawbacks of SMS based auth is that it cannot be used on devices that don’t have SMS capability (like Tablets or PCs). To handle this situation a lot of services are now implementing a way to log in on such a device by scanning a QR code on that device. The code refreshes periodically and when the app running on the mobile phone scans the QR code, the PC session and the mobile phone session are paired on the server and the user is signed in on the non-phone device.


Services like WhatsApp and Flipboard have started using this method, and I am sure more will follow.

A slight variant of this is the Apple Watch setup flow, which does the exact same thing but uses a different animated graphic that does the same thing as a QR code, i.e. pass data to another device using an image (click on the image below to go to the video)

Apple watch setup

Sign in with your signed in browser session

iOS 9 and Android M both include a more direct way to use the system browser rather than just using embedded WebKit / WebView. iOS’s new Safari View Controller and Android’s Chrome Custom Tab will allow app developers to use the browsers as part of their native apps. This will also let the native app get access to the browser’s Cookie store which means that users signed into the web version of the app can then be logged in immediately upon new app install. This detailed post by LaunchKit goes into details of that user experience.

Bonus: Sign in on app install (Google only):

While the previous paragraphs list a lot of alternatives to using social login if all you want is an identifying id, social login still represents the least friction way of getting more information and connections for a user. One thing I recently saw was Google’s “Android app install after sign in” feature. The system lets you add an “install app” step after a Google sign in on your site. The neat thing though is that the installed app is immediately signed in as soon as it gets installed. I recently installed an app that used this feature and it was great to not be prompted to log in on mobile.

This post summarizes a lot of new ideas I have been seeing lately around sign in lately. If there are any I may have missed, please leave a comment below 🙂

Bonus 2: Sign in with Google’s Smartlock (Google only):

Another system that was brought up is Google’s Smartlock that basically manages credentials across app and web sessions. I have very little knowledge about this but its worth being aware of. I think Netflix uses this.

The best standard is a killer application

Courtesy: XKCD.com

I was reading a post recently by a friend, Mark, about the challenges of getting Wifi Direct working with multiple Android devices. As with most Android development, you are reasonably assured that your app will work on a wide variety of platforms as long as you work within the Android framework, but the moment you start working with hardware sensors, you get into wtf territory pretty quick (talk to anyone who has created a camera related app on Android).

The problem probably is that Google’s direction to OEMs probably mandates a few APIs that they must implement but leaves most of the details to them. And even this is just restricted to devices that Google actually can control. There are a lot of Android OEMs that don’t have any relationship with Google (Xiaomi, Amazon, etc).

To get these guys rowing in the same direction, you don’t need better documentation or rules, you need killer apps to be built on top of them. In the case of Cameras for example, I imagine it would be hard for an OEM to ship a product without making sure Facebook and Instagram work on the device.

Wifi-Direct’s problem is that there isn’t yet a killer app built on top of it. I think Android Beam uses it, but no-one really uses that feature (Beam itself was probably the wannabe killer app that would force NFC and Wifi-Direct adoption among Android OEMs).

It would be hard to imagine a startup or an independent developer building a killer app for it, basically betting their bank on a fractured technology ecosystem. If Google was serious about it, it would have to come from them. But Google’s direction now is to look increasingly at the cloud to solve these problems and so I imagine Wifi-Direct would be left to the side in favor of something powered by something like WebRTC.

This thinking also needs to be applied in the IoT market where there is are so many new standards for device to device communication (AllJoyn, Thread, Brillo, etc). However, without any real killer app in that world, it seems most of these are on the same road as Wifi-Direct.

The best standards emerge from successful products.

Open for Value

My friend Orian has been posting a bunch of interesting entries on his blog on the need for an open alternative to the social services we use today. Personally I am a big fan of open source having released a bunch of projects and UI frameworks under the MIT license. I have a lot of strong thoughts on that so I figured its worth a post.

The conversation is not very new of course, there have been a bunch of attempts at open alternatives to the services we use today. The ones that immediately come to mind include:

In fact, if you google “Open source version of <insert-service-here>” you’ll find a bunch of projects and sometimes even companies that have tried to deliver on the promise of the open web. There have even been academics who have tried to come up with the next evolution of the internet as a whole where our data and connections isn’t held captive by companies who see that as a source of corporate value. These specs unfortunately often become so complex that any company looking to build a new product just chooses to ignore them (think RDF/OWL and the mess that is the semantic web specs). But as I see it, there are still a bunch of problems:

Closed is profitable
At least the way companies are evaluated today, closed services tend to be considered very valuable.  So “product companies” will never support a spec that may truly open data if they can help it. Even Google, which has a strong profit motive for an open internet, is building a walled Google+ experience. At this point the people who seem to really be trying to build open systems and “change the world” are those with personal convictions to build open applications where there desire to profit is outweighed by a desire for improving the world we live in.


Will regular people pay for “open”?
People like Dalton Caldwell seem to think so, but I’d disagree. At least the vast majority (non technical) of people probably won’t unless they feel its hugely valuable, and these services can only succeed if a majority of a user’s social network are on the network. Unfortunately, openness isnt so much a product feature a lot of folks care about, its a nice to have. Its like computer backups. Noone cares till the day you lose it all and then its too late. If you are truly going to get people to move to a new product from a product that they have invested a lot of time and effort in, whats the reward? Where is the excitement?


Better > Open
I wish folks would look beyond trying to build open services towards building better services that are open. Differentiate by doing well what the existing service does poorly. A lot of people consider open just a philosophical medal of honor, but its actually a very strong business strategy to disrupt established businesses. Think of Android, Apache, Webkit, Red Hat (the first billion dollar company based on open source). If you do open the right way, you can accelerate beyond your competitors even (especially?) if you arrive late to the party.


A different business model
Over the last few years we have been conditioned for free services and products. What I’d really like to see is true innovation in business models. Something beyond a simple pay or ad-supported service. For example:

  1. Pay for a group: Instead of a service fee of $5 per person maybe its $10 but for 5 invites (don’t have the single user option at all so people actually invite friends who won’t get on otherwise)
  2. Pay for the pipe: Think of a social network based on top of a connectivity service like Dropbox. Pay for the sync service and get a lot of apps on top of it. Apps get a share of the revenue from the service based on usage of the app.
  3. Bid for app extensions: Pay the developers for additions to the app so we don’t have another “I paid startup x but they sold themselves to company y” (ex: Sparrow)

My point is that there may be something really new that we really need to think about instead of just the “ad support” and “pay” model that we currently discuss.



The wrong metrics

The world lost a creative genius yesterday with the passing of Steve Jobs. While there have already been a number of posts on the web on his vision and creative leadership which is how most of us will remember him, it reminded me of how we often measure things in life. This post basically came out of some of those thoughts as well as a fantastic post today by Frank Eliason formerly of @comcastcares fame. One part that really resonated with me is quoted below:

People are focusing on the completely wrong metrics and not properly educating executives on the real story of social media. Today, companies are focusing on metrics such as ‘likes,’ fans, followers, etc. These metrics tell you nothing of substance … Most companies proclaim to be ‘listening’ in the space but very few have changed or implement processes or products based on this listening.

While the post is very specific about social media, I often feel surrounded by metrics that have very little meaning. Often these become goals rather than indicators of value. Developer conversations often revolve around lines of code and code coverage by unit tests and yet these metrics can often be meaningless (like having a 80% code coverage means little if the most fragile parts of the code are ignored). Product conversations revolve around “likes on a Facebook fan page” or “number of tweets” which drive decisions. Career successes are measured not by what we have grown to be able to do but by the title and position we have at the company.

A very common quote in the management is “you can’t manage what you don’t measure” and yet often in the zeal to measure things, we often forget the Observer Effect which, stated simply, says that the act of observing something changes the properties of what’s being observed.

The thing I admired most about Steve Jobs and Apple was their ability to build truly innovative products, of taking risks and going with the heart even when metrics didn’t really exist to predict if they would be successful.

Sometimes all it takes is working on things you feel passionate about.

“Being the richest man in the cemetery doesn’t matter to me … Going to bed at night, saying we’ve done something wonderful… that’s what matters to me.” -Steve Jobs

Some ideas for Google Circles

After playing with Google Circles for a couple of days, I really admire the feature. However there are still a couple of things I need in it:

Read items in overlapping Circles
Most of my Circles overlap. For example I have circles like “Philadelphians” and “friends”. I often add the same person to more than one circle, which is great. However this becomes a problem when the same updates resurface as I navigate between circles. Google Circles really needs a concept of “read” updates that need to go across circles.

Public Circles:
Another feature I would really like is the idea of creating a public circle around a topic and have people join in. In my case, I would love to create a circle around Android developers around Philadelphia since I help run the Philly Android Alliance User Group.

Smart Circles:
I’d also like circles to automatically filter all the content across Google Plus and return content based on my interests. This would an evolution of the sparks feature (which I don’t really use right now, since Twitter and RSS seem to do that job for me already). So as (public) links are shared on Google Plus, I’d like to see the people sharing it and the conversations around it.

Cross posting from Circles:
This is already a popular enough request I imagine, but I’d like to push an update I make to a specific Google Circle to my Twitter/Facebook/Linked In etc networks. So I’d like to create a circle named “to-twitter” who’s only job is to post the content to my Twitter account. This makes G-Circles my one destination to post content.

Thats some ideas I had, what do you guys think?

What other ideas do you have?

On APIs, Platforms and Predatory Evolution

There are few technical events that send as many people into frenzy than WWDC. The keynote at Apple’s big developer event is always fascinating to watch on the many sites liveblogging it (my favorite remains Engadget).

Today’s keynote though was unlike the previous ones. While updates to iOS5 were definitely not trivial, they felt more evolutionary than revolutionary, lacking any real “whoa” moments (iike the one I had when Google announced Android’s Accessory Device Kit and Android@home at GoogleIO this year). Worse still, most of the updates seemed more co-opted than invented. Ideas of Notification Systems and “Cloud AppStore” seemed to have been taken directly from Android and a bunch of other features were taken directly from apps already on the iOS platform like mentioned in this NYTimes article

This once again prompted conversations on the whole idea of building a business on someone else’s platform, a conversation that keeps coming up all the time (recently with Twitter and other such players). I have had a bunch of thoughts on this so I thought I’d share

Revisiting a platform’s need for APIs

Creating and running a developer API is a fair amount of strain on any company’s resources and also calls for a realization that at some level they will be giving up some control on the user experience (and may be potential revenue) from their product. Companies that do realize the need for an API do it for one core reason: increase the diversity of the interfaces to the end users. Its a very biological-evolutionary tactic to stave off potential extinction and find the “fittest” application for the core audience. At the minimum it may allow a part of the long tail of your audience to interact more with your service, but at best may make you discover a better way to serve your core audience. Ideas on the latter end of the spectrum tend to get absorbed into the core product either through buyouts or blatant rip offs.

Platform evolution and the death of the idea germinator:

The gut reaction when the platform absorbs the idea that was germinated by some app on their platform is to start counting down to the app’s inescapable demise. Historically though, these apps live or die based on the following factors:

  • The platform’s seriousness in owning that feature
  • The percent overlap of the feature set
  • The market size and diversity

If the platform is really serious about being the only solution for that problem, the  app developer is shit out of luck. This is what happened with Microsoft and IE vs Netscape. IE won out because MS was determined to let it be the only way to get to the internet. Same story (kinda) why OpenFient decided to accelerate its plans for Android when Apple announced Game Center.  For some apps, Apple may not be as determined to own that behavior, but rather have that enabled for its entire audience (when they are determined to own that behavior, the competitive apps get rejected from the AppStore). The seriousness also comes into question on the updates on version 1.1 or 2 of the product. Will Apple have a team dedicated to improving Reading Lists or the Todo App? Probably not, its been checked off as a feature and will be on a lot of marketing materials but may not evolve as fast as the third party apps (think of the updates on the Notes/Weather/Stocks apps for example)

Percent overlap of the feature set is also an good metric to look at. Thats what pushed Konfabulator off OSX when dashboard widgets were announced. With an app like Instapaper for example, does more than reading lists, it also lets me get to them from any other platform and other browsers. Readability on the other hand overlaps a lot more significantly.

Market size is of course relevant, but more than size, diversity and size of the long tail is a big deal. Todo apps for example are an infinite market because almost no-one agrees with the other on which app works for them. The platform can only target the big head there and cannot add any complexity (specially if you are known for that). This allows app makers to compete for the long tail

The Good News:

There is some benefit to a platform making a play in your space as Instapaper developer Marco Arment notes on his blog. First of all it justifies that space as mainstream and not a fringe/power-user behavior. Marco feels that Apple’s move will only make more people move to Instapaper as they get used to the idea of deferred reading but may find Apple’s implementation lacking.

Just as a reference, check out this graph of Facebook’s entry into the geo-location space with their Places product and its impact on Foursquare:


All the publicity doesn’t hurt either.


It will be interesting to see how Apple’s new apps will impact the existing players there. What I did find a little disappointing today was the lack of anything really “new”. All the features mentioned seemed to come to par with features I already use on my iPhone and Android (My personal phone is an Android I love and I carry and iPhone 4 for work). Whats interesting to me is that iPhone and Android are almost coming to a point where they are so totally similar to each other in every way, that the only significant difference between them may be philosophy and programming language. It will be interesting to see if a closed curated system is better or worse than an open one in the long run.


Thoughts on an open Twitter replacement: Concentrate on what’s done poorly

Twitter’s recent about face regarding their API gave me a lot to think about. It was definitely upsetting since I never saw this coming. I have always pooh-poohed the Facebook crowd and their constant worry about privacy and worn my Twitter username proud ( The geeky circles I move in, your Twitter id is fast becoming your real world identity), but suddenly Facebook felt less an oppressive regime. For a platform that clearly benefited from a huge developer community around it, a “you are not welcome here” message left a bad taste in my mouth.

My immediate reaction was the “I can do it over a weekend” developer instinct. But in this case it has been tried before and failed (see Status.net and the Twitter clones like Pownce that came out when Fail Whales were a regular feature of the platform). So this time instead of starting a new project that I would probably leave half done as I found the next shiny object I tried to analyze why Twitter succeeded and if it had indeed reached a tipping point where it just was important enough that it just could not be replaced.

I have had quite a few conversations around it as well. Tom Boutell and I shared some ideas (over Twitter, hah!) and he wrote an excellent proposal to replace Twitter. I agree with a lot of points there but have some rather different thoughts of my own,

1) How is Twitter different from WordPress
Theoretically it isn’t, and yet psychologically it is. My blog goes weeks (months?) without an update and yet I am extremely vocal on Twitter every day. I have often been tempted to just post my thought on my blog and forward it to Twitter (enough blogs and Tumblrs do that). But I feel Twitter is to WordPress like Instagram is to Flickr. They both capture transient thoughts that may have no value over a longer period. Occasionally interesting links are shared but thats it. I almost never go through my Twitter history. They are less formal and so immediate. I have a friend who composes blog posts for a couple of weeks since they seem so permanent that she doesn’t want to get it wrong, but Tweets are casual. I don’t think a simple install of WordPress would cut it.

2) We should do it because its Open / Federated
Unfortunately no-one cares about that, something that I am sure Status.net found out. Open is not enough reason for me to get off something that works, and is theoretically free. The only way an open system can succeed is if it brings new capabilities to the system. And open systems do that often. But a direct clone of Twitter is pretty useless.

3) Give me what Twitter gives
A Twitter federated and open replacement will have to:

  • Require no installation for the casual user and an easy installation for anyone wishing to be a node
  • Give me a permanent URL that I can share with my friends.
  • Allow me to discover new users and be discovered
  • Route messages to my “inbox”

4) Concentrate on what Twitter does poorly
Actually there is a lot here, and the only way a new system can succeed by fixing some of this:

  • Aggregate conversation around a shared item/link. Replies right now are a pain in the ass to track.
  • Be extendible. One of the things I see a lot of is the “vertical twitters” or “The Twitter for …(design / entrepreneurs / programmers, etc). So allow the data model that is a “tweet” to be extendible. For example, I should be able to add a poll as a Tweet or something like that.
  • Allow groups: Right now there is no way to create a quick group and send a message to 4-5 people without having to direct message them individually
  • Implement annotations: Twitter introduced this concept but has never executed on it. There is a lot of value here. For example, if I want to see what people are talking about the movie “Milk” I dont really want to see the dairy results. Similarly if I dont care for my friends’ FourSquare updates, I can only do a filter on a client like Tweetdeck using some String pattern (“checked in to”). But what if I am only interested in a friend’s tweets on programming but not his interest in photography. While hashtags could be used, most people don’t add them since it takes away from their 140 character limit.

Case study: BelugaPods
As an case study I’d like to talk about BelugaPods, a mobile app that I fell in love with and wish more apps were done so well. Beluga is a group messaging app that allows you to message multiple users and keep the conversations within a “pod”. Very handy when you are trying to organize group events. But the cool thing is that Beluga starts with the premise that your friends are not on the app. Messages to non Beluga users are sent as SMS but a clear value is shown by using the Beluga app (the conversation grouping). Thereby the application is usable when your friends aren’t in the system but excellent when they are.

I have a few ideas on implementation but they aren’t baked in enough yet to add to the post. Maybe I’ll follow up this one with those ideas…if I am not distracted by the next new thing ;).