Oct 11

Do you want your service to keep state for you? Comparing the Twitter and Facebook APIs

Tech with tags: , , 6 Comments »


I love the Twitter for iPad application and how Loren et al have built an experience that feels right in your hands. There is one bug though that can drive me crazy, and that is the fact that the unread state of direct messages is broken. It feels like 99% of the time I will open up the application and the last 20 messages will have unread:true, even though I know I have read those messages. The bug is particularly irksome because it is so in your face. The messages tab is highlighted as though there are no items even though I know there is nothing new for me (and I just need to go through again and mark them all as read? ugh).

It made me wonder how Twitter was handling the state of direct messages. In creating Facebook for webOS we built out FB messaging, and the state was handled for us. The Facebook design has the notion of threading baked in (as apposed to email for example) and is as follows:

So, where is the unread flag kept? You may think that it is at the message level… after all, it is a message that is either read or not. However, the thread actually controls the flag for Facebook. This means that in a conversation there is basically an int count that shows you how many messages are unread. If zero, then all messages in the thread are read. There are trade offs on having the unread flag be a count and not a flag on the message layer, but the high level point is the core platform is keeping track of what a user has done. Whether you go through the website, or any application that speaks the Facebook API, as long as your application doesn’t cache too aggressively, you will have a good result. The key becomes: as the platform developer you very much understand that the service is the master, and you need to be smart about caching data to give your users a responsive interface, but make sure to sync on the data to make sure it is accurate.


The Twitter API on the other hand doesn’t appear to keep any unread state for messages. Echofon is a cross platform client that showcases its support for syncing this kind of data. It is a nice feature for them to be able to differentiate on, but man….. it sucks that they have to write it!

I hope that Twitter starts to own the state so we aren’t in the current situation of no one really knowing my state, and it has been interesting to see the different state of affairs, and have you thinking about what the platform should be doing, and what should be left to the clients of said platform.

Mar 03

Facebook in your Palm; Fun building the new Facebook app

Mobile, Tech, webOS with tags: 27 Comments »


When Ben and I joined Palm to run Developer Relations, we knew that we wanted to eat dogfood pretty quickly. We have had some mobile related projects in the past, but they were either mobile Web sites, or Java based. Being able to take our web skillz to rich mobile devices was much more new and exciting.

Building sample code and apps is useful for developers, and the team will be doing plenty of that (e.g. this is how you use the awesome List widget in every which way, and why you would do X, Y, or Z) but building a production app is a whole different level.

We wanted to learn what it is like for our developers to design, build, and distribute webOS applications. We could have started with a smallish app, but no :) Instead we took the great work of Justin Newitter (who built the original app) and went running with an updated Facebook app. Along with other great developers in the dev relations world, we have gotten our first early release out there today.

Here is a walk through of the app by PreCentral:

We have definitely learned a lot in our short time on the app, and this is the first release of many. I really want us to have a regular cadence to our releases. If there is a feature you are excited about let us know.


We added a broad feature set to the application. The first Facebook application was very much about synergy. Why put something in an application silo when you can bake it into the platform? I still contend that webOS is the best platform for Facebook users as it integrates throughout. Other mobile platforms do some of this, but I think we continue to do the best job here.

There are a bunch of Facebook features that our users still wanted though, so we worked with Facebook themselves to prioritize this list. The top features were access to Facebook Mail, full profile access (info, wall, and photos), people search, events and birthdays. We also wanted to do interesting things to the UI as we bring in these features. Oh, and a couple of mini-easter eggs.

Designing the application was challenging and a lot of fun. At a high level, working out a design that is true to webOS *and* a strong brand such as Facebook was a balancing act. You will run into this same issue even without a brand like FB. How does it have your DNA and still fit in with the core platform. This has been a design consideration since the dawn of time. Do you make a clean Mac app that looks like Mail.app? Do you do your own UI that looks like a funky Flash UI? Most of the time you are in the middle.


One feature that we spent time on was the base navigation. We wanted to make it incredibly easy to get to features you use often, and also quick to get to all features.

We ended up with a solution that made the following decisions:

News as Root

The root of the application is the news feed. Some Facebook apps have an icon window as the root, but we decided to behave more like the Facebook website itself. The news stream is the blood line, so start there. No matter where you go in the app, if you back gesture away…. you will always end up at the news stream.

Also, just like the iPhone app, we share the shake gesture as a way to refresh the data here. Shake away.

Status Matters

webOS devices have hardware keyboards and are great for creating content. In the Facebook context this means updating your status and uploading photos are prime ways to get your content into the system.

For this reason the top left area is your way to always get to your current status and update on it. In fact, if you are on the new stream, just start typing and the update area will pop down and capture your new status (while showing your last one below).

Also, if you click on the camera icon, you are sent into the core photo experience on the device which natively supports uploading to Facebook.

The Navigation Grid

For all other features, we wanted to give you a quick way to access them. Click on the top right grid and a pop down will immediately appear, giving you one tap access to any feature. No need to switch to a navigation screen first.

We are also playing with the ability to use that hardware keyboard by giving you quick key access to any feature (e.g. SYM + E == sends you to events). Is that a good idea?

Facebook Logo Power

The Facebook logo itself has some hidden love. In an homage to to websites, a tap on the logo takes you home…. which means back to the news stream. If you are on the news stream already, and have flicked down…. that same logo will bring you to the top.

Where to go next?

We are excited to offer access to data that Facebook users haven’t been able to get in an app before, but where do we go from here?

We definitely want to do a lot of polish on various sections that we have out there. One idea that I have been playing with from the get go is doing something immersive when you rotate the screen when in a news feed. Instead of just having the news feed work in that format, what if the content took over. I mentioned this in my last post about touch UI. I flick through the stream and if on photos, the album takes on the entire screen for example.

There are some other really fun features that revolve around webOS notifications and giving you a great way to “never miss a thing” (life moves fast you know ;) and choosing what content matters to you.

And, finally, we have to work out what makes sense in an app, and what could be baked into the platform. Giving access to birthdays is great, but would you like to have them as a calendar on the device? Maybe, but you would definitely want to be able to turn that view off…. and in fact you may already have birthday info in your profiles, so we should have one unified birthday view. Life gets more complicated when you go to the generic doesn’t it.

Again, we have just started here, but would love to hear from you on our feedback area in the app page.

Thanks to the team that played a part in this release! We haven’t reached Joe Hewitt foo yet, but we are having fun!

Oct 01

Small things; How Facebook and Twitter share new features

Tech with tags: , , 5 Comments »

This is incredibly anal, but I appreciated it. When Facebook launched their new look and feel, it started out on a beta site, and then migrated to become the default. For what feels like a looooong time, I have seen this header:

Facebook New

The problem is that I get it. I know now. Let me get rid of the header please!

Twitter on the other hand did a really good job with this. When they launched the election subsite I started to see this:

Twitter Election Header

Once I internalized that I could click on the ” X ” close icon and it would minimize to this:

Twitter Election Minimized

Minimized allows me to get back to it if I want, but without taking much real estate. There have been some issues where it doesn’t seem to remember that setting, but in general I like this kind of implementation. On the right hand side they have a little box for their new look and feel that says “Notice something different? Read about the changes.” I wish that had an ” X ” too, without minimize, as again… I know it is new, and I don’t need to read about it anymore :)

Mar 26

How FriendFeed could dwarf Facebook and Twitter

Tech with tags: , , 14 Comments »

The River

When FriendFeed first came out it looked like a nice little aggregator done by some smart EIRs who just left Google. A few months later they have grown into being the company that is mentioned on TechCrunch, RWW, TechMeme, and Mashable on a daily basis. Quite a change in a short period, so with the launching of their API, I thought I would posit how I think that they could keep on going to much bigger things, and above the hype cloud (everyone wants the next Twitter).

As I look at how I use these services, I have noticed some recent changes:

Stage 1: Really?

I did the Twitter thing when it first came out, and I admit to not getting it. I remember opening up the public view and seeing the odd swearing from Bulgaria and thinking “this is 99% noise, why does anyone waste their time?”. After a Twitter week I kinda moved on. The most I had to do with it was using MoodBlast to send my status updates to Twitter too.

Stage 2: Facebook

I moved from Twitter to Facebook and got much more attached to it. “My crowd” was on their from the tech side, and a bunch of old mates from England too. I got to get up to speed with their lives, and over time keep in touch in that tiny way by the status update, and the odd photo.

I saw huge value in being able to learn from my friends, and dreamed of being able to have my own personal Digg, centering the bell curve on me instead of 12 year olds.

As applications were getting built I was excited to see what “killer apps” will be thrown up on the Facebook platform. Scrabulous was the one I used the most, but I saw far too many Vampires around and kept seeing my notifications list on the top right go up to huge numbers as I couldn’t be bothered to say “No” to them all. I could ignore that though, and still saw value.

Then something strange happened about a month or two ago. The feed started to get less interesting. Note, all I use Facebook for is the feed. I am not someone who jumps around on profiles to find out if Jinny has has a relationship where “it’s complicated”. My feed was getting noisy, and there was less in it. The magic had gone. It seems like the core group that I care about isn’t doing as much on Facebook, so the viral nature in which it erupted has reversed just as quickly. My Facebook tab disappeared and now I can’t remember the last time I logged in.

Stage 3: Twitter part deux

“Twitter is chat where I don’t care about a response”

As Facebook usage was going down, I was also back to Twitter and finally got it. I hit the right sweet spot of following and followers and saw a lot more signal coming through. I stopped using MoodBlast and turned on the Twitter Facebook application, even though I was annoying people with the “is twittering” part of the messages that drive me nuts (Twitter: please let me turn that off!). I guess I should switch to TwitterSync, but I just don’t care.

I have started to get a lot of leads for Ajaxian and cool tech in general on Twitter, and it is a place to call out into the void and you often get a crazy number of responses.

I am starting to wish for more though. Firstly, stability of course. But then, I want features like #hashtags to be grokked by the platform, so they don’t take up valuable characters out of the 140, and that the UI deals with them accordingly. I would love a metadata layer that would allow for the payloads that dave whines so much about, but also more. Let me put in [lat: ..., long: ...] to add Geo. Let me add anything I want and then the apps on top of Twitter are sure to shine. If Twitter doesn’t do this, I think that over time other services will fill that void. Pownce is ready in the shadows, but it needs to be more than Twitter+1. This is where FriendFeed comes in.

Stage 4: FriendFeed = Twitter * 2

FriendFeed is adding cool features on a weekly basis. I have personally worked with Bret Taylor and he is top notch, so I have no doubt that this will continue. A team that has launched Gmail and Google Maps also groks scalability, so I do not expect them to have the same troubles as Twitter.

But then we have the features. I think they can be a great mix of Facebook and Twitter. I want the stream to be more about just chatting. I want the photos to be part of it. I want my personal Digg. I want….

Stage 5: The River

It keeps coming back to my desire for The River, a new email system for all activity.

The key to this is having enough dials to make it tunable. With every feature that FriendFeed adds, they seem to get closer to this. Search is key as it gives you the nob tuning on the fly, and the API is key as it could let someone like me actually implement something that I need.

Here is to a FriendFeed that keeps accelerating. Congrats so far guys.

Jan 03

Netflix fellow endorsing Blockbuster?

Tech with tags: , , No Comments »

Adding an application doesn’t equal endorsement.

This showed up once again to me today as I had to do a double take on a sponsored piece of content in my mini feed:

Movie Clique

Hmm. Why is this strange? Well, Bill Scott is the UX dood at Netflix. This ad makes it looks like he is endorsing public enemy #1, Blockbuster. I haven’t emailed Bill, but the case is probably more that he wanted to give it a looksy. Who doesn’t?

What is Movie Clique?

A Facebook app from Blockbuster that:

  • Share: List which movies you’ve seen and which you want to see.
  • Suggest: Let your crew know about a must-see flick.
  • Rate: Stick it to the critics by rating movies yourself.
  • Review: Good? Bad? Ugly? Tell everyone exactly what you think.
  • Play Favorites: Make a list of your favorite movies of all-time.
  • Queue it Up: Link Movie Clique to your blockbuster.com account and add movies to your Queue right from Facebook.

Movie Clique Ad

Next we will see “Steve Jobs added the application Windows Vista” and the like.

Dec 29

Facebook finally giving me my messages where I want them

Tech with tags: , 1 Comment »

People are keen to jump on Facebook whenever they do something “wrong” (e.g. the Facebook Beacon debacle). Companies are going to make mistakes, especially when they are finding their way in a slightly new world, and are trying to work out the boundaries, and how to make money.

It is good that the community keeps a watchful eye, just as people are ready to pounce on Microsoft over IE and monopoly-type things, and even my company, Google. These companies have a lot of power, and a watchful eye can be a very good thing.

There are certain features that users have been glamouring for, and it appears that Facebook is slowly adding them in.

One of my pain points has been a simple feature. It drives me nuts to get emails like this from services:

“Dion, someone left you a message. click here to get it”

Just show me the freaking message. Some claim that it is smart to do this for page view purposes, but that smells bogus to me. Do what the users want, and it will be better for you. In this case, it has already been better for Facebook that they changed this, and I now see my Wall and Fmail messages:

Facebook Messages

Why has it been good for them? As I now respond! I participate more! Next, they need to let me reply to the darn email to write back instead of going through FB again. Forget about forcing me onto facebook.com and let me use you as a real platform. With the Bebo announcement, it seems like they are getting it, and doing good things. I hope that 2008 will have a very different look to social networks, and we will move to the hard part of getting data portability in a way that makes sense for users.

I never want to have to enter contact/friend information again.

Dec 03

Problems with Scrabulous, and general Facebookness

Tech with tags: , 1 Comment »

I have been playing Scrabulous with many people, including my family.

My Mum and Dad would sometimes complain that they couldn’t easily get to the games that we were playing, and I chalked it up to “Computing Whilst Boomer”. Surely they just can’t see the darn Scrabulous link for some bizarre reason.

Well, when I delved into it more today on the phone, I found out that somehow, they had managed to be playing the games even though they hadn’t actually added the application to the FB profile!

The loop hole happened when they were invited to play a game. They said yes, and were able to get going without adding. They were able to get to the game itself by contorting in a bizarre way too. They could go to my profile, see my stats, and then get to the game.

Finally I got them to add the application:


“Wow this is like Fort Knox”. Not a good sign. It is good to see a new world through old eyes from time to time.

I won’t get started on how Scrabulous hangs when I try to delete one game that I never actually played, but have it marked as a loss!

Nov 01

OpenSocial: It’s a programming model, not a federation, for now

Google, Tech with tags: , , , , , , 2 Comments »

To say it has been amazing to watch OpenSocial come together in recent months is an understatement. OpenSocial isn’t a product that Google came up with, it is a standard. At first you have to get a large number of groups at Google to agree to the core ideas, and then came the partners. Working with the partners has been a real trip too, and the speed of development as well as decision making is truly astounding to me.

I knew that the press will jump on this as “a Facebook killer” or “Facebook vs. Google”, but that is b.s. Applications that are social can be better and we have only seen the beginning. F8 has opened up a lot of eyes, and many companies are going to innovate in this space.

Take a look at what OpenSocial really is. Check out the APIs. Understand that this is the beginning of something. The first set of APIs mesh closely with Gears, as I talk about on the podcast with Patrick Chanazon. There are a few core services (people, storage, activity stream) that have GData endpoints that you can access, including the core JavaScript library which is how development is generally done at the moment. The libraries will look especially familiar to Google Gadget developers, as they are similar in philosophy. To me, this isn’t about some huge new platform, but rather a set of components that people can use. Gears is the same way. You have three key components (as of now): WorkerPool, Database, and LocalServer.

As a Java guy Patrick and I even joked about how it felt a little like some of the Java standards in that this isn’t about “write once run everywhere” but is rather “learn once use everywhere”. OpenSocial has the concept of “containers” where these APIs run. This is where container partners such as Bebo, Ning, Hi5, a ton of others, and, oh MySpace come in. opensocial.newDataRequest() everywhere.

The API is at a point where there is value to using it, and having one API that containers implement allows a developer to develop against it, knowing that they can move their app around. On the other hand, containers can add to the API to give specific information that you may want. For example, if your container has a lot of music information you can share that, and if you are building a music app, that could be a good thing. There is a core set of APIs, and containers will add their value on top, just as WebLogic did through deployment descriptors :)

Back to Facebook. I actually don’t think this is a bad thing for Facebook. It validates the market, and will grow the entire pie. Now even more developers will think about developing social applications. Facebook has a lot of users hanging out on that network, and they are the kind of users that are used to installing applications at this point, so I think that a lot of developers will write applications than run across FB and OpenSocial and beyond. Having MySpace along for the ride is big, and maybe Facebook could join in too and we could create a true standard that the community pushes forward.

It has probably stirred up the FB folk too. They have known that this is coming. Competition is obvious, and I hope that OpenSocial can help push Facebook into getting increasingly open too. They sometimes get a bad rap there, and we keep forgetting that they opened up F8 only *months* ago, and are still working out what it means to open up a platform like this. It will take time and there are a lot of hard problems. As great as collaboration is, there is also a PC vs. Mac debate here. Facebook can run like the wind in their own direction. This could end up being a fantastic product. On the other hand the group could also run quickly as they have been doing, and instead of being stuck in standards hell, they could produce something just a great, across many containers.

Should Facebook implement OpenSocial? I personally think so. Why?

  • It will be a lot easier to grow the developer pool on OpenSocial as you can just get new partners and hitwise grows
  • If people developer cool apps on top of OpenSocial, why wouldn’t you want them to run as applications in Facebook? It could also allow developers who aren’t fans of FBML to use different methods of building their applications.
  • Facebook can still innovate as a top notch container that has a huge amount of users
  • It would negate “us” versus “them” talk.

It is going to be an interesting ride, and I hope that people don’t get sucked into the press too much and really check things out. With everyone jumping on board, I wonder what is next. Can we get to the world that Brad talked about? Will we get a federated world? There are some hard problems to solve.


Oct 10

Pam has changed her status to “It’s complicated”

TV / Movie with tags: , , , 1 Comment »

In Wired they have the section on items that go from Wired » Tired » Expired. As I got a chance to catch up with The Office last night I realised that I had one of these in front of me:

  • Wired: TV characters on Facebook (or Twitter)
  • Tired: TV character video podcasts (e.g. Mel on Flight of the Conchords)
  • Expired: TV character blog (e.g. Ah Dwight)

As the TV networks realise that they need to have shows break out of just primetime boobtube action they create rich worlds for them to live in.

We have had blogs and podcasts, but how about having the characters join Facebook? I would love to “friend” Pam and Jim from The Office. It would be so funny to watch them update their statuses: “Jim is screwing with Dwight yet again”. It would have been cute to have seen them start dating on the show and updating the fact that they are “in a relationship”. Chances are the show will have to have them break up at some point, so then it could get “complicated”.

The line is going to blur between the real and the fake. These characters will feel more real than the muppets on the reality TV shows.

Maybe it is time to start a company that offers services to TV shows to “be the characters 24/7/365 online”.

ps. Could you imagine the Facebook craziness of Ross and Rachel back in the day? “Ross is on a break”