Skip navigation

Monthly Archives: November 2010

I took a look at Facebook Graph API because I wanted to incorporate the ability to search nearby places into my mobile application. Currently, I’m using SimpleGeo to accomplish this which has been nice.

But, what can I say? When I heard the word “free” and considering I’m already working on other Facebook integration I thought it was worth looking into.

It reminds me of a conversation I had with a Facebook product person. A few months ago he asked me how companies like SimpleGeo could survive given FB could just create their own Places API (this was before any announcement of an open API but after they introduced Check-Ins). I should’ve taken this as foreshadowing.

I replied that SimpleGeo offered some interesting and different channels for making money like their layers service which is a marketplace for people to buy and sell data. I think the obvious question about their query API was that they couldn’t really compete if Facebook wanted to go in this direction.

Lo and behold Facebook announces their Places API. Shocked, I was.. but maybe I shouldn’t have been. It was like a page out of Internet Explorers book (~1996). Have a competitor (Netscape)? Just make your product free!

However, in these situations, the devil is always in the (developers) details. After looking deeper into the API, it appears that any requests to the Graph API requires a user authorized access token. In other words, an authorized FB user is needed before one can query nearby places.

When one considers why it was done this way, it brings about some possible intentions by Facebook. By designing it this way, they are saying ONLY Facebook authenticated users can query it. So, while my application supports optional Facebook integration, only those users would have access to it. It’s written more as a feature for a Facebook user than it is as an infrastructure service like SimpleGeo.

I’m hoping I’m wrong and someone will point out a capability to query the Places API just using my API key. I have a feeling this isn’t the case. I’m not an expert, but by design the Graph API seems to be architected around authenticated users. In some ways this scares me. I’ve never been one to promote any FUD around Facebook domination but this is a step in that direction.

Coming full circle, this is how paid products like SimpleGeo will not just survive but likely thrive against free products. Developers aren’t tied to any one service to get their reverse geo-location capabilities. In general, this tends to be true of the APIs that are trying to protect their dominance in their respective: There will be restrictions on the use of their service that can handicap your application. Whereas when you come across an independent service that has no interests to protect, you may have to pay some money but you’ll get a more flexible service that can serve your needs. Case in point: Google App Engine vs Amazon AWS.

Great article on what happened to Yahoo and a general statement on their decline:
http://www.paulgraham.com/yahoo.html

The worst consequence of trying to be a media company was that they didn’t take programming seriously enough. Microsoft (back in the day), Google, and Facebook have all had hacker-centric cultures. But Yahoo treated programming as a commodity. At Yahoo, user-facing software was controlled by product managers and designers. The job of programmers was just to take the work of the product managers and designers the final step, by translating it into code.

I have to say that this has very much been on my mind lately as an entrepreneur. Most non-programmers treat programmers as a commodity. The term “coder” is often treated like miner or grunt. In some ways I think this is a result of globalization and how jobs have moved abroad. Given that programmer can be found in poorer parts of the world doesn’t do much in giving a reputation that the job requires first-world skill.

But the difference today in a tech startup X vs tech startup Y that are building the same product in the same vertical for the same customers is the technology. That’s the fundamental thing that many non-programmers fail to understand.

I believe that the shortage of programmers in Silicon Valley isn’t a true shortage. It’s not a shortage in the strict supply-demand sense. It’s a shortage of GOOD engineers. That’s why people are willing to pay top dollar for specific people even though the valley is flooded with engineers.

The conclusion one can draw is that tech startups today are better off creating a hacker culture and sustaining that environment around innovation. Many companies rush to “grow up” from hacker start-up to thriving business. The problem is that this often stifles innovation (which is dangerous considering how fast the Valley moves).

Many companies can take a lesson from the Facebook strategy. Walking into their offices reminded me of the energy and vibe of the computer science building at Berkeley.

 

 

Here’s how you get a resource from a Java project and convert it into a File object.

InputStream inputStream = S3Sample.class.getResourceAsStream("some_picture.jpg");
File file = new File("same_picture_new_name.jpg");
OutputStream out=new FileOutputStream(file);
byte buf[]=new byte[1024];
int len;
while((len=inputStream.read(buf))>0)
out.write(buf,0,len);
out.close();
inputStream.close();

Amazon’s S3 sample doesn’t show how to upload a file and make it public at the same time. Set the ACL as shown.


PutObjectRequest por = new PutObjectRequest(bucketName, key, file);
por.setCannedAcl(CannedAccessControlList.PublicRead);
s3.putObject(por);

Follow

Get every new post delivered to your Inbox.