Towards the end of last year, I realized I was about to bump up against the ”use it or lose it” vacation policy at work which basically means I either had to take about two weeks of paid vacation or forfeit the vacation. Since I hadn’t planned the time off I immediately became worried about what to do with all that idle time especially since if left to my own devices I’d play 80 straight hours of Modern Warfare 3 without pause.

To make sure the time was productively used I decided to write a mobile app as a learning exercise about the world of mobile development since I’ve read so much about it and part of my day job is building APIs for developers of mobile apps.  I ended up enjoying the experience so much I added an extra week of vacation and wrote two apps for Windows Phone. I’d originally planned to write one app for Windows Phone then port it to iOS or Android but gave up on that due to time constraints after some investigation of both.

I learned a bunch about mobile development from this exercise and a few friends have asked me to share of my thoughts on mobile development in general and building for Windows Phone using Microsoft platforms in particular. If you are already a mobile developer then some of this is old hat to you but I did find a bunch of what I learned to be counterintuitive and fairly eye opening so you might too.

Thoughts on Building Mobile Apps on Any Platform

This section is filled with items I believe are generally applicable if building iOS, Android or Windows Phone apps. These are mostly things I discovered as part of my original plan to write one app for all three platforms.

  1. A consistent hardware ecosystem is a force multiplier

    After realizing the only options for doing iPhone development on Windows was the Dragon Fire SDK which only supports games, I focused on learning as much as I could about Android development options. The Xamarin guys have MonoTouch which sounded very appealing to me as a way to leverage C# skills across Android and Windows Phone until I saw the $400 price tag. :)

    One of the things I noticed upon downloading the Android SDK as compared to installing the Windows Phone SDK is that the Android one came with a bunch of emulators and SDKs for various specific devices. As I started development on my apps, there were many times I was thankful for the consistent set of hardware specifications for Windows Phone. Knowing that the resolution was always going to be WVGA and so if something looked good in the emulator then it would look good on my device and those of my beta testers not only gave piece of mind but made UX development a breeze.

    Comparing this to an ecosystem like Android where the diversity of hardware devices with varying screen resolutions have made developers effectively throw up their hands as in this article quoted by Jeffrey Zeldman

    If … you have built your mobile site using fixed widths (believing that you’ve designed to suit the most ‘popular’ screen size), or are planning to serve specific sites to specific devices based on detection of screen size, Android’s settings should serve to reconfirm how counterproductive a practice this can be. Designing to fixed screen sizes is in fact never a good idea…there is just too much variation, even amongst ‘popular’ devices. Alternatively, attempting to track, calculate, and adjust layout dimensions dynamically to suit user-configured settings or serendipitous conditions is just asking for trouble.

    Basically, you’re just screwed if you think you can build a UI that will work on all Android devices. This is clearly not the case if you target Windows Phone or iOS development. This information combined with my experiences building for Windows Phone convinced me that it is more likely I’ll buy a Mac and start iOS development than it is that I’d ever do Android development.

  2. No-name Web Hosting vs. name brands like Amazon Web Services and Windows Azure

    One of my apps had a web service requirement and I initially spent some time investigating both Windows Azure and Amazon Web Services. Since this was a vacation side project I didn’t want expenses to get out of hand so I was fairly price sensitive. Once I discovered AWS charged less for Linux servers I spent a day or two getting my Linux chops up to speed given I hadn’t used it much since my the early 2000s. This is where I found out about yum and discovered the interesting paradox that discovering and installing software on modern Linux distros is simultaneously much easier and much harder than doing so on Windows 7. Anyway, that’s a discussion for another day.

    I soon realized I had been penny wise and pound foolish when focusing on the cost of Linux hosting when it turns out what breaks the bank is database hosting. Amazon charges about $0.11 an hour ($80 a month) for RDS hosting at the low end. Windows Azure seemed to charge around the same ballpark when I looked two months ago but it seems they’ve revamped their pricing site since I did my investigation.

    Once I realized database hosting would be the big deciding factor in cost. It made it easier for me to stick with the familiar and go with instead of as a LAMP  server stack. If I had stuck with LAMP , I could have gone with a provider like Blue Host to get the entire web platform + database stack for less than $10 with perks like free credits for Google ads thrown in. With the WISC stack, hosters like Discount ASP and Webhost 4 Life charge in the ballpark of $15 which is about $10 if you swap out SQL Server for MySQL.

    These prices were more my speed. I was quite surprised that even though all the blogs talk about AWS and Azure, it made the most sense for my bootstrapped apps to start with a vanilla web host and pay up to ten times less for service than using one of the name brand cloud computing services. Paying almost ~$100 a month for services with elastic scaling properties may make sense if my apps stick around and become super successful but not at the start.

    Another nice side effect of going with a web hosting provider is the reduced complexity from going with a cloud services provider. Anyone who's gone through the AWS getting started guides after coming from vanilla web hosting knows what I mean.

  3. Facebook advertising beats search ads for multiple app categories

    As mentioned above, one of the perks of some of the vanilla hosting providers is that they throw in free credits for ads on Google AdSense/Adwords and Facebook ads as part of the bundle. I got to experiment with buying ads on both platforms and I came away very impressed with what Facebook has built as an advertising platform.

    I remember reading a few years ago that MySpace had taught us social networks are bad for advertisers. Things are very different in today’s world. With search ads, I can choose to show ads alongside results when people search for a term that is relevant to my app. With Facebook ads, I get to narrowly target demographics based on detailed profile attributes such as Georgia Tech alumni living in New York who have expressed an interest in DC or Marvel comics. The latter seems absurd at first until you think about an app like Instagram.

    No one is searching for "best photo sharing app for the iphone" on Google and even if you are one of the few people who has, there aren’t a lot of you. On the other hand, at launch the creators of Instagram could go to Facebook and say we'd like to show ads to people who have liked or use an and who also have shown an affiliation for photo sharing apps or sites like Flickr, Camera+, etc then craft specific pitches for those demographics. I don’t know about you but I know which sounds like it would be more effective and relevant.

    This also reminded me that I'd actually clicked on more ads on Facebook than I've ever clicked on search ads.

  4. Lot's of unfilled niches still exist

    I remember being in college back in the day, flipping through my copy of Yahoo! Internet Life and thinking that we were oversaturated with websites and all the good ideas were already taken. This was before YouTube, Flickr, SkyDrive, Facebook or Twitter. Silly me. 

    The same can be said about mobile apps today. I hear a lot about there being 500,000 apps in the Apple app store and the same number being in Android Market. To some this may seem overwhelming but there are clearly still niches that are massively underserved on those platforms and especially on Windows Phone which just hit 50,000 apps.

    There are a lot of big and small problems in people's lives that can be addressed by bringing the power of the web to the devices in their pockets in a tailored way. The one thing I was most surprised by is how many apps haven't been written that you'd expect to exist just from extrapolating what we have on the Web and the offline world today. I don't just mean geeky things like a non-propeller head way to share bookmarks from my desktop to my phone and vice versa without emailing myself but instead applications that would enrich the lives of millions of regular people out there that they'd be gladly willing to pay $1 for (less than the price of most brands of bubble gum these days).

    If you are a developer, don't be intimidated by the size of the market nor be attracted to the stories of the folks who've won the lottery by gambling on being in the right place at the right time with the right gimmick (fart apps, sex position guides and yet another photo sharing app). There are a lot of problems that can be solved or pleasant ways to pass the time on a mobile device that haven’t yet been built. Look around at your own life and talk to your non-technical friends about their days. There is lots of inspiration out there if you just look for it.

  5. Look for Platforms that Favor User Experience over Developer Experience

    One of the topics I’ve wanted to write about in this blog is how my generation of software developers who came of age with the writings of Richard Stallman and Eric Raymond’s The Cathedral and the Bazaar with its focus on building software with a focus on making the developers who use the software happy collides with the philosophy of software developers who have come of age in the era of Steve Jobs and what Dave Winer has called The Un-Internet where focusing on providing a controlled experience which is smoother for end users leads to developers being treated as second fiddle. 

    As a developer, having to submit my app to some app store to get it certified when I could publish on the web as soon as I was done checking in the code to my local github repository is something I chafe against. When working on my Windows Phone apps, I submitted one to be certified and found prominent typos a few hours later. However there was nothing I could do but wait for five business days for my app to be approved after which I could submit the updated version to be certified which would take another week in calendar days. Or so I thought. 

    My initial app submission was rejected for failing a test case around proper handling of lack of network connectivity. I had cut some corners in my testing when it came to testing network availability support once I discovered NetworkInterface.GetIsNetworkAvailable() always returns true in the emulator which meant I had to actually test that process on my phone. I never got around to it by telling myself no one actually expects a network connected app to work if they don’t have connectivity.

    The Windows Phone marketplace rejected my app because it turns out it crashes if you lose network connectivity. I was actually pretty impressed that someone at Microsoft is tasked with making sure any app a user installs from the store doesn't crash for common edge cases. Then I thought about the fact that my wife, my 3 year old son, and my non-technical friends all use mobile apps and it is great that this level of base set of quality expectations are being built into the platform. Now when I think back to Joe Hewitt famously quitting the Apple App store and compare it to the scam of the week culture that plagues the Android marketplace, I know which model I prefer as a user and a developer. It’s the respect for the end user experience I see coming out of Cupertino and Redmond.

    This respect for end users ends up working for developers which is why there really is no surprise that iOS devs make 6 time smore than their Android counterparts because users are more likely to spend money on apps on iOS.

Thoughts on Microsoft-Specific Development

In addition to the general thoughts there were some things specific to either Windows Phone or WISC development I thought were worth sharing as well. Most of these were things I found on the extremely excellent Stack Overflow, a site which cannot be praised enough.

  1. Free developer tools ecosystem around Microsoft technology is mature and surprisingly awesome

    As a .NET developer I’ve been socialized into thinking that Microsoft tools are the realm of paying an arm and a leg for tools while people building on Open Source tools get great tools for free. When I was thinking about building my apps on Linux I actually got started using Python for a web crawler that was intended to be part of my app as well as for my web services. When I was looking at Python I played around with web.py and wrote the first version of my crawler using Beautiful Soup.

    As I moved on the .NET I worried I’d be stuck for such excellent free tooling but that was not the case. I found similar and in some cases better functionality for what I was looking for in Json.NET and the HTML Agility Pack. Besides a surprising amount of high quality, free libraries for .NET development, it was the free tools for working with SQL Server that sent me over the top. Once I grabbed SQL Complete, an autocomplete/Intellisense tool for SQL Server, I felt my development life was complete. Then I found ELMAH. Fatality…I’m dead and in developer heaven.

  2. Building RESTful web services that emit JSON wasn't an expected scenario from Microsoft dev tools teams?

    As part of my day job, I'm responsible for Live Connect which among other things provides a set of RESTful JSON-based APIs for accessing data in SkyDrive, Hotmail and Windows Live Messenger. So it isn't surprising that when I wanted to build a web service for one of my side projects I'd want to do the same. This is where things broke down.

    The last time I looked at web services development on the WISC the way to build web services was to use Windows Communication Foundation (WCF). So I decided to take a look at that and found out that the product doesn’t really support JSON-based web services out of the box but I could grab something called the WCF Web API off of CodePlex. Given the project seemed less mature than the others I’d gotten off of CodePlex I decided to look at ASP.NET and see what I could get there since it needs to enable JSON-based REST APIs as part of its much touted JQuery support. When I got to the ASP.NET getting started page, I was greeted with the statement that ASP.NET enables building 3 patterns of websites and I should choose my install based on what I wanted. Given that I didn't want to build an actual website not a web service I didn't pick any of them

    Since I was short on time (after all, this was my vacation) I went back to what I was familiar with and used ASP.NET web services with HTTP GET & POST enabled. I’m not sure what the takeaway is here since I clearly built my solution using a hacky mechanism and not a recommended approach yet it is surprising to me that what seems like such a mainline scenario isn’t supported in a clear out-of-the-box manner by Microsoft’s dev tools.

  3. Embrace the Back Button on Windows Phone

    One of the things I struggled with the most as part of Windows Phone development was dealing with the application lifecycle. The problem is that at any point the user can jump out of your app and the operating system will put your app in either a dormant state where data is still stored in memory or tombstone your app in which case it is killed and state your app cares about is preserved.

    One of the ways I eventually learned to thing about this the right way was to aggressively use the back button while testing my app. This led to finding all sorts of interesting problems and solutions such as how to deal with a login screen when the user clicks back and that a lot of logic I thought should be in the constructor of a page really should be in the OnNavigatedTo method (and don’t forget to de-register some of those event handlers in your OnNavigatedFrom event handler).

I could probably write more on this but this post has gotten longer than I planned and I need to take my son to daycare & get ready for work. I’ll try to be a more diligent blogger this year depending on whether the above doesn’t make too many people unhappy.

Happy New Year.

Note Now Playing: Kanye West - Devil In A New Dress (featuring Rick Ross)Note


 

Categories: Programming | Web Development

Spent the morning reading a well argued rant by Maciej Ceglowski titled The Social Graph is Neither where he argues that the current way human relationships are modeled on sites like Facebook is fundamentally flawed. He makes two basic arguments. The first

It’s Not a Graph

There's another fundamental problem in that a graph is a static thing, with no concept of time. Real life relationships are a shared history, but in the social graph they're just a single connection. My friend from ten years ago has the same relationship to me as the friend I dined with yesterday. You're left with forcing people (or their software) to maintain lists like 'Recent Contacts' because there is no place in the model to fit this information.

"No problem," says Poindexter. "We'll add a time series of state transitions and exponentially decaying edge weights, model group dynamics as directional flows, and pass a context object in with each query..." and around we go.

This obsession with modeling has led us into a social version of the Uncanny Valley, that weird phenomenon from computer graphics where the more faithfully you try to represent something human, the creepier it becomes. As the model becomes more expressive, we really start to notice the places where it fails.

Personally, I think finding an adequate data model for the totality of interpersonal connections is an AI-hard problem. But even if you disagree, it's clear that a plain old graph is not going to cut it.

Here I think Maciej is looking at the problem from the wrong end. The question isn’t whether we can perfectly model the real world in software but instead whether we can use software to improve the quality of our lives by solving real problems. I think of this as the Xanadu vs. World Wide Web problem. You can point to a dozen problems that exist on the web as designed today from broken links and the frailty DNS to the problems caused by anonymity such as spam and phishing. This hasn’t stopped the web from becoming the center of an $8 trillion economy because it solves a lot of human problems even though it is imperfect.

Thus the question isn’t whether a product solves a problem of how to differentiate between my high school friend I haven’t seen in 10 years who I still think of as a brother from the coworkers I communicate with regularly but have no real interest in their lives outside of work. The questions are actually (i) can a product add value to people’s lives without needing to add the complexity of modeling that abstraction and (ii) does the benefit of the “improvement” of solving that problem outweigh the costs it introduces to the system?. I think the answer to the first question when it comes to the social graph is clearly “Yes”.  As for the second, we really don’t know the answer to that one but from seeing the various imperfect attempts like Circles in Google+ I would bet the answer will be “No” for a long time. Which brings me to Maciej’s second point.

It’s Not Social

The problem FOAF ran headlong into was that declaring relationships explicitly is a social act. Documenting my huge crush on Matt in an XML snippet might faithfully reflect the state of the world, but it also broadcasts a strong signal about me to others, and above all to Matt. The essence of a crush is that it's furtive, so by declaring it in this open (but weirdly passive) way I've turned it into something different and now, dammit, I have to go back and edit my FOAF file again.

This is a ridiculous example (though it comes up with strange regularity in the docs), but we run into its milder manifestations all the time. Your best friend from high school surfaces and sends a friend request. Do you just click accept, or do you send a little message? Or do you ignore him because you don't want to deal with the awkward situation? Declaring connections is about as much fun as trying to whittle people from a guest list, with the added stress that social networking is too new for us to have shared social conventions around it.

Social graph proponents seem uninterested in the signaling problem. Leaving aside the technical issues of how to implemented, how does cutting ties actually work socially? Is there any way to be discreet, for example, or have connections naturally degrade over time? In real life, all relationships fade naturally if you don't maintain them, but right now social networks preserve ties in amber until we explicitly break them. Is my sister going to resent me if I finally defriend her annoying husband? Can I unfollow my ex now, or is that going to make her think I'm still hung up on her?

There's no way to take a time-out from our social life and describe it to a computer without social consequences. At the very least, the fact that I have an exquisitely maintained and categorized contact list telegraphs the fact that I'm the kind of schlub who would spend hours gardening a contact list, instead of going out and being an awesome guy. The social graph wants to turn us back into third graders, laboriously spelling out just who is our fifth-best-friend. But there's a reason we stopped doing that kind of thing in third grade!

I agree with the core premise that relying on people to explicitly declare and maintain their relationships in minute detail is a flawed enterprise. Maciej is 100% right that there are explicit social signals with real consequences when we decide to declare even in the most mundane of public ways that we are connected to others. My favorite example is the amount of scrutiny applied to Rep. Anthony Weiner's Twitter following list and how many point to the his explicit declaration of interest in a set of female followers as a catalyst which helped further his fall from grace. The thing I like about that example is that the nuance of simply declaring what kind of relationship you have with people on Twitter or categorizing them would have not helped in that situation.

The reality is that the publicness and interconnectedness of the World Wide Web is causing us to create new social norms which we are still figuring out. The same way people who leave rural areas for cities realize that some social norms they’d grown up with all their lives would now have to change so is humanity figuring out as we go along how we need to adjust our behavior and in some cases broaden the list of behaviors we accept as we become more interconnected online. In the past few years, we’ve seen Zuckerburg's law of information sharing applied in the real world and it’s amazing to think of the sorts of things people regularly share and expect to be shared with each compared to just a few years. It’s hard to believe that it was just five years ago when Time magazine was writing about how Facebook’s 8 million users would abandon the site because of the “intrusive” news feed, now Facebook has 800 million users thanks to that intrusive feature. 

Note Now Playing: Lil Wayne - It's Good (featuring Drake & Jadakiss) Note


 

Categories: Social Software

September 18, 2011
@ 07:39 PM

Yesterday I was reading an article titled Why Facebook is the New Yahoo by Mike Elgan which argues that Facebook adding features driven by its competition with Google+ “smacks of desperation”. The article’s core argument is excerpted below

The only way for Facebook (or any online service for that matter) to succeed is to re-invent itself. Facebook is scrambling to do so, trying this, trying that, desperately looking to thrill users with expanded engagement with existing social graphs. And Facebook has failed again and again.

Facebook tried to become the default e-mail client for members when it rolled out Facebook Messages, which enabled people to use a facebook.com e-mail address. Remember that?

Neither do I. Nobody uses it.

Then Facebook saw that FourSquare and Groupon were gaining some traction with social location check-in and coupons, and so it launched Places and Deals.

Nobody cared, and Facebook killed both of them.

Facebook would get a huge boost from usage on tablets -- tablets and social networks were made for each other, because they’re both used in the same way at the same time (most heavily while at home during leisure time). Yet Facebook has failed to come out with a tablet app, even though the iPad shipped a year and a half ago!

Now Facebook’s desperate new strategy appears to be: Just copy Google+.

I always find it interesting that different people can look at the same data and come to very different conclusions. The reason Facebook has 750 million active monthly users today and is widely presumed to one day get to a billion active users is because it constantly reinvents itself. The problem for authors like Mike Elgan is that Facebook has bucked the traditional narrative for big technology companies.

The tech press loves the innovators dilemma or disruptive technology narrative. Tech press loves to tell the story of a scrappy young company that comes from the blind spot of some big entrenched company to become dominant itself. They also love tearing down that same company a few years later when another scrappy young upstart shows up. This narrative is with us constantly; from Google’s social blind spot leaving an opening for Facebook to RIM being disrupted by touch-based smartphones with thriving app platforms. Even better for the story is when the upstart is a “web” company versus a bricks and mortar player such as Netflix versus Blockbuster.

The challenge for the tech press when it comes to Facebook is that the company deeply understands this narrative. After all Facebook was the usurper to MySpace in the classic tale of entrenched major player being disrupted by scrappy upstart. Facebook has their ear to the ground when it comes to potential usurpers and quickly moves to blunt their momentum often by what many have described as copying features. There are numerous examples of this including

The problem for tech watchers is that Facebook doesn’t let the innovator’s dilemma narrative get off the ground. Before too many could get hooked on social Q&A, check-ins or more interaction in the  news feed, Facebook made sure its users associated those features with their site. One could argue that the lack of mainstream penetration of Quora, FourSquare and FriendFeed is partially because the bulk of their offering is already available on Facebook so it’s hard to imagine how to argue to a mainstream user that you should use those sites when they already get that functionality on Facebook.

Therein lies the problem with Facebook. By definition, Facebook can’t go as deep on any of these scenarios as dedicated sites which means users are introduced to slightly watered down versions of a number of these new ideas as they have to still fit into Facebook’s site structure and core goals. However there’s just enough functionality provided by Facebook for people to either be satisfied with the experience (i.e. no reason to join FriendFeed when all of that functionality is on Facebook) or to decide they dislike it even if the feature doesn’t go as deep as it could (i.e. Facebook Places versus FourSquare). The latter is particularly pernicious because it means interesting new startup ideas don’t really get a chance to blossom before the mainstream is introduced to them.

I’m reminded a little of the world of RSS readers. A few years ago there was a lot of innovation in client RSS readers from commercial offerings like FeedDemon and NewsGator Inbox to home grown projects like RSS Bandit. However, RSS was eventually added to the big gorilla in client communication tools; Outlook. When this happened a lot of the innovation in this space dried up and it didn’t take long for Outlook to become the dominant RSS reader. This is despite the fact that Outlook didn’t go nearly as deep in the RSS reading technology it provided compared to dedicated RSS readers.

I see the same thing happening with Facebook when it comes to a number of social software ideas and it makes me a little sad to think about what we’re losing even though we are gaining the convenience of a one-stop shop for social.

Note Now Playing: Jay-Z and Kanye West - Illest Motherf**ker Alive (Includes intentional 3-minute silence) Note


 

Categories: Social Software

Yesterday I gave a talk about how Metro style apps and websites can take advantage of the fact Single Sign On (SSO) with Windows Live ID in Windows 8, announced the availability of the Live SDK for Windows Developer Preview and Windows Phone and demoed some of the upcoming Windows Metro style apps that are built on the same platform. You can watch the talk embedded below and you can go here to download the video in various formats or download the slides.

Note Now Playing: V.I.C. - Get Silly Note


 

I’m currently at the Microsoft BUILD conference where I’m slated to talk about some of the work my team and others at Microsoft have done in making it easy for Metro-style apps to leverage Live services like Windows Live ID, SkyDrive, Hotmail, and Windows Live Messenger. I’ve been pretty busy at work as regular readers of my blog can tell given my last post was in July. The past few months have been exhilaratingly fun and crazy hectic as well. It’s great to finally be able to share some of the work we’ve been doing with the world.

If you’re interested in learning more, I recommend visiting http://dev.live.com which contains links to the Live SDK and talks about a number of key developer concepts that were introduced in the Windows Developer Preview.

If you’re at the conference, I’d recommend attending my talk and some of the other talks listed below

Power your app with Live services
Windows 8 enables users to log into any device with a single Microsoft account and continuously interact with your app on all of their devices. Your customers will expect the ability to bring their documents, photos, videos, and contacts with them as they move between their devices. Come see how you can enable great on-the-go experiences by integrating Live services into your app. You’ll learn how to take advantage of single sign on using a Microsoft account instead of creating your own authentication infrastructure. You’ll also see how to use the SkyDrive service for free cloud-based storage of your customers’ photos, videos, and documents. We’ll dive into the details of the Live SDK and show how to use Visual Studio to easily enable these experiences

The complete developer's guide to the SkyDrive API
More and more users are becoming familiar with the concept of "the Cloud." More than ever, users are storing their data in the Cloud. SkyDrive is one of the world's leading cloud storage and document collaboration services. Learn how you can easily allow your users to read and write documents, photos, and other files from/to their SkyDrive via simple REST APIs

Create experiences that span devices
Your customers will expect your app to deliver a continuous experience even as they switch between apps and move between their devices. Come learn how to ensure your customers never lose their place in your app even when it is moved to the background or accessed on a new device. You will also discover how to enable customers to personalize your app with settings and ensure those settings flow automatically to all of their devices. We will show you how you can enable this continuous, cloud-powered experience with only a few lines of code.

If you missed the BUILD keynote yesterday and want a quick overview of what was released, the 5 minute video below captures the highlights of the keynote

Note Now Playing: Jay-Z and Kanye West - Who Gon Stop Me? Note


 

July 10, 2011
@ 01:02 PM

I’ve been joking with Omar that Google+ is the new FriendFeed. I recently posted this on Google+ and was asked to explain what I meant since Google+ doesn’t support importing of content from other services which was the key feature FriendFeed. The reason I say this is that Google+ fulfills the same need that FriendFeed when it first came out.

Here’s an excerpt from a post by Robert Scoble in 2008 about FriendFeed titled Loving my FriendFeed

I love my FriendFeed. Here’s a list of top bloggers who are using the service. Why do I love it? It’s one place you can find all my stuff and, even, comment on it. It’s amazing the discussions that a 140-character “Tweet” on Twitter can generate. I subscribe to a ton of people on FriendFeed and notice that often the conversations after a Twitter message will be 1000x longer (and generally more interesting) than the Twitter itself.

In my previous post I asked what problem Google+ solves and the answer is above. Google+, like FriendFeed before it, gives people a place to subscribe to and participate in conversations around content produced by people they are interested in.

Why Twitter Doesn’t Solve This Problem

Twitter relationships have been described as a public interest graph. Specifically, Twitter is a way to keep on top of people and content you find interesting whether it is tech news sites, bloggers, celebrities, government officials and even people you know. However there are a number of key gaps in the Twitter user experience which FriendFeed fixed and Twitter still hasn’t even though people have been complaining about them for years.

The first problem is that is really difficult to have conversations on Twitter. Here’s an excerpt from a TechCrunch post made in 2008 titled Actual Conversations On Twitter Not Possible Until Twitter Lets Us which explains the problem

One of the big complaints about Twitter is that conversations are hard to follow. Users can write a response to a Twitter message (or anything else), but the easy way to do this is to add an @[username] tag to the Twitter, which refers back to the original Twitter user. But by then that original user has often moved on to other subjects, and it becomes impossible to follow the conversation.

The fact is that Twitter purposefully doesn’t want users to be able to track conversations. The content begins and ends with a discreet Twitter message, up to 140 characters long. Competitor Friendfeed does a nice job of tracking conversations by letting users reply to actual messages, not just users. Twitter, for whatever reason (possibly to keep things simple), just doesn’t want that. And until they do, nothing is going to change.

The ability to have actual comment threads about a status update as opposed to disconnected @replies is a more satisfying experience for many users. As Mike Arrington stated above, the challenge for Twitter is that this would change the dynamics of the service in ways that take away some of the character of the service.

The second problem is that Twitter doesn’t give a public way to indicate that a piece of content is interesting without also sharing it. Specifically, there is no analog to Facebook’s “I like this” within the stream (not to be confused with the like button social plugin). Twitter has favorites but it’s actually meant to be a way to bookmark posts not to tell people you like the status update. There are now sites like Favstar.fm which have garnered a sizable user base by giving people a way to get “I like this” style functionality from Twitter and see how many people have favorited a tweet.

Both of these problems are fixed by Google+ and it is unsurprising that the same sorts of people who loved FriendFeed are not only on Google+ but are its most popular users. The question is whether Twitter will fix these problems with their experience given that this has made people pine for alternate services. Given that they didn’t try to address these when FriendFeed was at the height of its hype curve, it seems unlikely they will unless they see declines in their more mainstream user base.

Why Facebook Doesn’t Solve This Problem

Facebook relationships are an attempt to mirror our offline relationships online. The problem with this is captured in Paul Adams’ excellent slideshow The Real Life Social Network v2

The problem with Facebook is that people you may find interesting (i.e. your interest graph) or that find you interesting are not necessarily people you want to sharing the same space as your family, friends and even coworkers. A good example of this problem are the following suggestions I saw when I logged into Facebook this morning.

Alexia Tsotsis and Steven Levy are both journalists who work for TechCrunch and Wired respectively. Although I find the articles they write interesting, I don’t want to have them be on the receiving end my mobile phone videos of my son playing in the park or my check-ins from places around Seattle nor do I want to be subjected to their similar personal updates.

The combination of asymmetric following (people can subscribe to my updates without my accepting a friend request) and the ability to place people into groups (i.e. Circles) which can then be used to provide limited visibility to various updates is how Google+ solves this problem for various interest graphs. Neither of these features exists in Facebook today and while I suspect they will add the latter especially since Paul Adams now works there, it is harder to imagine seeing asymmetric follow ever showing up on Facebook outside of Pages.

Where That Leaves Us

I expect that both Twitter and Facebook will lose some chunk of people’s time to Google+. However Twitter is more vulnerable than Facebook, because Facebook has been fairly resistant the rise of the “interest graph” by building features like Facebook Pages which allows people to follow their interests in the same stream as updates from people they care about offline. For example, it is interesting to note that the most popular user on Twitter is Lady Gaga with 11.5 million followers but on the other hand her Facebook fan page has 40 million fans. Secondly, there really isn’t a gap Google+ fills with regards to communicating and staying in touch with the people one cares about offline via a social network.

On the other hand, Google+ is more in the same product space as Twitter being interest graph related which can be seen by the usage patterns of its early adopters. It’s also telling to read comments from Google+ readers on how much less time they now spend on Facebook and Twitter.

Note Now Playing: Frank Ocean - NovacaneNote


 

Time spent is a zero sum game. The time I’m going to spend writing this blog post is time I’m not going to spend mowing the lawn, playing with my son or getting familiar with the Annihilation map pack for Call of Duty:Black Ops I purchased a few days ago. We were reminded of this reality last week when MySpace was sold for $35 million after being purchased for $580 million six years ago. This is déjà vu for people who remember Bebo being sold for $10 million by AOL after being purchased for $850 million just two years earlier. In both situations, the culprit for this significant loss of value was the decline in traffic caused by the fact that people were spending more time on more popular social networking sites like Facebook and Twitter.

Facebook and Twitter have virtually sucked all of the air out of the room for social media sites. Facebook is where people go to communicate and share with the people they know in real life. Facebook hasn’t just stolen attention from other social networking sites but from the entire web as people are spending more time on Facebook and less time on the rest of the world wide web. However Facebook missed out on a particular niche which was then capitalized on by Twitter.

Twitter is where people go to be informed by and share information from news makers they care about. For many, Twitter has replaced blogging [and MySpace] as the way to stay connected with people who are interested in what you have to say as a major or minor celebrity. For me, I spend less time writing blog posts or using Google Reader because I’m on Twitter. This has led to many proclaiming that Twitter has killed RSS.

So what does all of this have to do with Google+?

For Google+ to be successful it means people will need to find enough utility in the site that it takes away from their usage of Facebook and Twitter, and perhaps even replaces one of these sites in their daily routine. So far it isn’t clear why any regular person would do this. Having to re-invite all your friends to another social network and have yet another stream to follow & check for responses to your posts is a pain in the ass not a benefit. Twitter got away with it because it actually had value that you couldn’t get from Facebook and by the time Facebook caught up with certain features Twitter was already established in its particular usage niche.

So far the Google+ sales pitch is that it makes it easy for people to share things with private circles of people. This isn’t a terribly differentiating feature. Facebook has multiple features for doing this such as friend lists and groups. Google+ has a snazzier UI for managing lists but snazzy UIs can be copied as CircleHack, built by a Facebook engineer, shows. Even Twitter has protected accounts which provides a drop dead simple way for people to control who they share with without having to manage multiple overlapping lists of people. Google+ will need a better pitch than that to have lasting value.

I’ve been in the industry long enough now to consider people working on Facebook, Google+ and even Twitter as friends or at least acquaintances. It is a little sad to me that for some of my friends to win, others will have to lose. That is life.

Note Now Playing: DJ Khaled - Welcome to My Hood (remix) (featuring Ludacris, T-Pain, Busta Rhymes, Twista, Mavado, Birdman, Ace Hood, Fat Joe, Game, Jadakiss, Bun B, and Waka Flocka)Note


 

Categories: Social Software

Earlier this week, Microsoft took the initial wraps off of the next version of Windows (aka "Windows 8"). As someone who loves personal computing and loves the Web, there’s a lot I find exciting about what we just announced. The official announcement Previewing ‘Windows 8 states the following

The demo showed some of the ways we’ve reimagined the interface for a new generation of touch-centric hardware. Fast, fluid and dynamic, the experience has been transformed while keeping the power, flexibility and connectivity of Windows intact.

Here are a few aspects of the new interface we showed today:

• Fast launching of apps from a tile-based Start screen, which replaces the Windows Start menu with a customizable, scalable full-screen view of apps.

• Live tiles with notifications, showing always up-to-date information from your apps.

• Fluid, natural switching between running apps.

• Convenient ability to snap and resize an app to the side of the screen, so you can really multitask using the capabilities of Windows.

Web-connected and Web-powered apps built using HTML5 and JavaScript that have access to the full power of the PC.

• Fully touch-optimized browsing, with all the power of hardware-accelerated Internet Explorer 10.

Today, we also talked a bit about how developers will build apps for the new system. Windows 8 apps use the power of HTML5, tapping into the native capabilities of Windows using standard JavaScript and HTML to deliver new kinds of experiences. These new Windows 8 apps are full-screen and touch-optimized, and they easily integrate with the capabilities of the new Windows user interface. There’s much more to the platform, capabilities and tools than we showed today.

The video below introduces a few of the basic elements of the new user interface. Although we have much more to reveal at our developer event, BUILD (Sept. 13 - 16 in Anaheim, Calif.), we’re excited to share our progress with you.

If you’re a web developer this represents an amazing opportunity and one that should fill you with excitement. Of course, you shouldn’t take the words of a Microsoft employee but should also listen to what even people with cynical opinions of Microsoft are saying such as Mike Mace in his article Windows 8: The Beginning of the End of Windows where he writes

So it's far too early to make any judgments on Windows 8, which Microsoft just previewed (link).  There are an incredible number of ways it could go wrong.

But.  I've got to say, this is the first time in years that I've been deeply intrigued by something Microsoft announced.  Not just because it looks cool (it does), but because I think it shows clever business strategy on Microsoft's part.  And I can't even remember the last time I used the phrase "clever business strategy" and Microsoft in the same sentence.

What it means to the rest of us
The history of platform transitions is that they are huge opportunities for developers.  They reset the playing field for apps and devices.  Look at the history:  The leaders in DOS applications (Lotus, Word Perfect, etc) were second rate in GUI software.  The leaders in GUI apps (Adobe, Microsoft, etc) were not dominant in the web.  It's actually very rare for a software company that was successful in the old paradigm to transfer that success to the new one.  Similar turnover has happened in hardware transitions (for example, Compaq rode the Intel 386 chip to prominence over IBM in PCs).  And yes, there is a hardware transition as part of Windows 8, since it will now support ARM chips, and you'll want a touchscreen to really take advantage of it.

So if you're running an existing PC hardware or software company, ask yourself how a new competitor could use the platform transition to challenge your current products.  Here's a sobering thought to keep you awake tonight: the odds are that the challengers will win.  The company most at risk from this change is the largest vendor of Windows apps, Microsoft itself.  Microsoft Office must be completely rethought for the new paradigm.  You have about 18 months, guys.  Good luck.

By the way, web companies are also at risk.  Your web apps are designed for a browser-centric, mouse-driven user experience.  What happens to your app when the browser melts into the OS, and the UI is driven by touch?  If you think this change doesn't affect you, I have an old copy of WordStar that you can play with.  Google and Facebook, I am talking to you.

You should read the rest of Mike’s post because it has an interesting perspective. I strongly believe in the core premise of the article that Windows 8 is disruptive. Not only is it disruptive to the software industry as a whole but it will be disruptive even for the way Microsoft does business today. When Steve Ballmer said Windows 8 will be Microsoft's riskiest product bet he wasn’t kidding.

Out of disruption comes opportunity and if you’re a web developer you have a front row seat in taking advantage of this opportunity. Don’t waste it. You should register for the BUILD conference. I’ll be there and with any luck I may even get to give a talk or two. See you there. 

Note Now Playing: Jay-Z - On To The Next One (featuring Swizz Beats)Note


 

I spent a bunch of time last night and this morning noodling on Evan Williams’ post Five Easy Pieces of Online Identity where he talks about what people often mean when they talk about “online identity”. His list has the following five entries

1) Authentication

Question Answered: Do you have permission?*
Offline Equivalent: Picture ID or keys, depending on method.

2) Representation

Question Answered: Who are you?
Offline equivalent: Business card. (Also: Clothes, bumper stickers, and everything else one chooses to show people who they are.

3) Communication
Question Answered: How do I reach you?
Offline Equivalent: Phone number.
4) Personalization

Question Answered: What do you prefer?
Offline Equivalent: Your coffee shop starting your drink when you walk in the door.

5) Reputation

Question Answered: How do others regard you?
Offline Equivalent: Word of mouth/references, credit agencies.

I think Ev’s post is a really good start to answering the question why would one would want to identify a user in an application or website. Specifically, what does a user get from being asked to log-in or register to your application or website? Secondarily, it also provides the framework for deciding if or when you should use your own identity system or should leverage someone else’s such as Facebook Connect.

Ev misuses the term authentication in his post which is a little confusing since he seems to do it knowingly. All five entries on his list are all facets of what you get when you identify or in some cases authenticate a user. For identification, you may simply need an identifier such as an email address or URL. For example, if I give you the URL to my Facebook profile, you get to see how I’ve chosen to represent myself to the world (e.g. my profile picture is a family shot which tells you something about me), you can contact me if you’re in the right network on Facebook and you can even make some personalization decisions by looking at the music and TV I’ve liked. Authentication is a more nuanced version of identification because it means you’ve proved that I’m actually the person who “owns” http://www.facebook.com/Carnage4Life not just someone who knows that URL (or email address or other identifier).

The first thing to do is update Ev’s list

  1. Authentication – who are you?
  2. Authorization – do you have permission?
  3. Representation – how do I want others to view me? 
  4. Communication – how do I reach you?
  5. Personalization – what do you prefer?
  6. Reputation – how do others regard you?
  7. Commerce – how are you going to pay for this? (e.g. credit cards, putting a meal on your hotel room bill when eating at the hotel restaurant, etc)
  8. Social – who are your friends?

The first change on the list is already explained. Asking who I am is an intrinsic aspect of all of the other items on the list.

The second change is obvious in retrospect. There are a broad class of websites and applications that need to identify a user so that the user can pay for a virtual or physical good or service. The biggest player in the identity and payment space on the open web is obviously Paypal with minor competition from Google Checkout and Amazon Payments. There are also specific ecosystems where payment is a fundamental aspect of identity such as Facebook Credits which is part of the Facebook platform ecosystem, the 200 million iTunes accounts with credit cards that are a part of the iOS ecosystem or Microsoft Points which are the coin of the realm in the XBox Live ecosystem.

The third addition is also a surprising omission from Ev’s list given that this has been the primary way distributed identity has actually become popular on the Web. Unsurprisingly, the key player in this space is Facebook which provides widgets such as the recommendations plugin which allows sites like Engadget show me what articles on their site my friends liked

This list is pertinent to web developers from multiple perspectives. First of all it’s a checklist that determines whether your application or website needs a user identity system. When you do determine that you do meet some of the requirements in the checklist, it also sharpens your focus on when you let identity get out of the way for your users. Sites like Yelp and Reddit are good examples of sites that need user identity for personalization, reputation and communication but users can get value without using features that rely on those capabilities. However neither site does a good job of explaining to users that they can get this functionality if they create an identity on the site. On the other hand, I think Quora does a particularly awful of running this check list when you hit the front page of the site since you don’t even get to see any content without creating an account.

The list is also useful as a way to decide which aspects of your site or application’s identity requirements you want to maintain in-house versus outsource. Do you want to rely on Facebook’s social graph or have a friend list that is native to your site? Will you accept credit cards or just utilize Paypal or Amazon Payments? And so on. Finally the list is useful for entrepreneurs as a way to segment the various use cases in the industry and see opportunities where things can be improved. Some people like to call game over for innovation in identity on the web given the Facebook juggernaut but it is clear when you look at that list that there are parts of the identity space where they haven’t made much traction such as reputation and payments.      

Note Now Playing: Rihanna - Love the Way You Lie, Part II (featuring Eminem)Note


 

Categories: Social Software

The EFF has a persuasive anti-Facebook rant titled An Introduction to the Federated Social Network which bemoans the perils of centralization of social networking under the aegis of one company (You can replace "Facebook" with "Orkut," "LinkedIn," "Twitter," and essentially tell the same story). The core arguments from the article are excerpted below

But federated social network developers are doing two things differently in order to build a new ecosystem. First, the leading federated social networking software is open-source: that means that anybody can download the source code, and use it to create and maintain social networking profiles for themselves and others. Second, the developers are simultaneously collaborating on a new common language, presumably seeking an environment where most or even all federated social networking profiles can talk to one another. 

What will that likely mean in practice? To join a federated social network, you'll be able to choose from an array of "profile providers," just like you can choose an email provider. You will even be able to set up your own server and provide your social networking profile yourself. And in a federated social network, any profile can talk to another profile — even if it's on a different server.

Distributed social networks represent a model that can plausibly return control and choice to the hands of the Internet user. If this seems mundane, consider that informed citizens worldwide are using online social networking tools to share vital information about how to improve their communities and their governments — and that in some places, the consequences if you're discovered to be doing so are arrest, torture, or imprisonment. With more user control, diversity, and innovation, individuals speaking out under oppressive governments could conduct activism on social networking sites while also having a choice of services and providers that may be better equipped to protect their security and anonymity.

As someone who’s been noodling on social network interoperability for the past four years this is a topic that’s near and dear to my heart. However there needs to be some reality injected into the unbridled bashing of existing social networks that we have today. There’s a reason why you read about Iran's Twitter Revolution and Japanese school children using Facebook to communicate with their parents during the earthquake yet hear virtually nothing about Diaspora or Status.Net being used in similar ways to impact the lives of millions of people.

The first key argument made by the EFF article is that popular social networks aren’t Open Source so you can’t download the source code and run them on your own server. The interesting thing here is that this is actually attempting to buck a trend. Most people don’t want to host software because it is a pain in the ass to deal with. Even businesses don’t want to do this which is why “cloud” is such a hot buzzword and enterprise microblogging tools such as Yammer and Salesforce Chatter are hosted services not on-premises software. More importantly, the entire point of broadcast oriented social networks is being able to communicate with a lot of people which encourages network effects and the sort of winner take all dynamics that we’ve seen people lament over Facebook about. Why would a user create an account on identi.ca or any other hosted instance of Status.Net when they can create one on Twitter and reach a lot more people? Social networking isn’t like blogging. A blog is a solitary item which only needs the publisher to exist so one person being able to download it and throw it on a server and getting value out of it is true. On the other hand, a social network by definition needs lots of people using the service to be useful which makes the ability to download it and throw it on a server for your own use much not terribly useful.

The second argument is that there should be protocols that enable interoperability between social networks and this is one I firmly believe in. In fact, this is the real problem. If I can’t use my self-hosted social networking tool to talk to my friends on Facebook and Twitter then it isn’t a useful social networking tool. This is similar to the early days of email when you could only send messages to people on your network or who used the same software as you.  Being unable to subscribe to @shitmydadsays from my Facebook account or dm my wife from Twitter may sound trivial but it is a fundamental impediment to social networking reaching its full potential as a way for people to share and communicate with the people they care about no matter where they are. Without interoperability we will continue to see the power law caused by network effects continue to play out and the sorts of innovation talked about by the EFF article won’t come to fruition since given the choice of being able to communicate with others and some innovative functionality on a particular service, most people will choose friends over features.

The interesting question is whether we’ll see this logjam broken by smaller social networking services banding together in an interoperable way thus creating a whole that is greater than the sum of its parts.

Note Now Playing: Ol' Dirty Bastard - Proteck Ya Neck II The Zoo (feat. Brooklyn Zu, Prodigal Sunn, Killah Priest, & 60 Second Assassin) Note


 

Categories: Social Software