Facebook as a search engine? How about a "Paid Like" marketplace?

There was this big splash yesterday from the allfacebook.com folks about facebook declaring war against google. In that post they said:

“While we suggested that the like had just replaced the link, it has now become abundantly clear what Facebook’s intentions are. Facebook wants to launch the social semantic search engine as we alluded to during f8. Now that the search results are officially showing up as Facebook search results, the war has begun.”

Using “Like” as an input into relevance is a fine idea – but Facebook (or Twitter for that matter) are long ways away from building a full-blown search engine purely based on that data. Why do I say that? Fundamentally “Likes” are ambiguous, random and spam-prone (and impossible to detect). These are real big issues for any search engine to solve before they label themselves a search engine.
Google’s “Link” approach has many merits over the Facebook’s “Like” approach; Link based approach fares better primarily in determining the context, and detecting spam. To that end, technically it is some-what easier to detect a spam link or a link that was “paid” for SEO purposes. However, it is nearly impossible to determine if a Like was a paid Like or a spurious Like. It’s just not easy.
On top of this, in Google’s eco-system a link is only as important as the link source – or the domain where its coming from. Google has come up with an authority system, Page Rank(PR), for domains based on a very complex but trusted model – this system helps us eliminate spam every time we perform a search on Google. If there were to be an equivalent to this from Facebook, it has to be around the people that are performing the Likes. So even for the sake of argument if you assume a Social Rank (SR) for a given individual based on their interests and friends and the related metadata, it is nearly impossible to determine context around that person’s likes and dislikes. Reason? Its extremely complicated and highly error prone to model a human’s interaction context.
Now, if Facebook were to combine this Like data with traditional Link based relevance, it could get interesting – but still its an incremental advancement but not a game changer that replaces Google.
I’m sure guys at Facebook are thinking of the potential pitfalls of Like based relevance and the shady “Paid Like” market that it could create. I’m also sure that if Facebook were to launch a “search engine” without proper technology/tools to combat “Like Spam”, we all will just grow to Dislike the Like.
As I said before this is not an easy problem to solve, so is Facebook ready to be a Google rival? not a chance, not yet, at least.

Render your own Heatmaps with HeatMapRenderer

Heatmaps (aka Density Maps) are a neat way to visualize geo data – and these days there are everyhwere – from Starbucks WiFi heatmaps to The Dealmap Local Deals maps! While they are so popular, I was surprised to learn that there are not many (FREE) tools available to generate your own Google Maps ready Heatmap. So I have developed a simple utility,  called HeatMapRenderer, that can be used to generate Google Maps Ready heatmap tiles from any geo dataset that has latitude and longitude values.
This utility is built for Windows based machines (with .NET 3.5) and is written in C#. If there is a need and if there is a community that is willing to build on top of what I have I don’t mind posting it as an open source, but for now its closed source with extensibility model built into it. Think of HeatmapRenderer as a simple rendering engine you can plug-and-play different data sources to render from. Each data source will have its own adaptor – an adaptor is responsible for reading the latitude/longitude data by implementing a simple interface. HeatMapRender natively supports CSV adaptor, so if you can dump your geodata into a CSV file you can use the Heatmaprender instantly. I will write a follow-up on how to extend and write your own adaptors in my next post.
So for now, let’s assume you have your latitude/longitude data in a CSV file. And that the column index for latitude and logitude are 0 and 1. Now you need to add a config section like below in the HeatmapRenderer.exe.config file (from the download):

<add name="us-starbucks"
   sourcetype =”HeatMapRenderer.Sources.SimpleCSVSource, HeatMapRenderer.Sources”

Once you add a config section as shown above, all you need to do to generate the heatmap tiles, is to type in a command like below:

HeatmapRenderer.exe us-starbucks

As you can see its very straight forward, here is a bit more about the config values:

name = unique name so that you can identify and run the tile generation job.
sourcetype = This is the source adaptor. If you have a CSV file, then you can use the built in CSV source adaptor, and of course you can build your own adaptor too (more on that later)
sourceconnectionstring = points to the CSV file (or if you have a MySql data source this should be the connection string etc);
sourcearguments = if you have a CSV you identify lat/long column index values – you can use this field to send any data that is required for your own adaptor.
palettefilepath = default heatmap palette – you can generate your own palette if needed (the download has a palette file included)
pointradius = default 5pixels. you can reduce or increase the point radius based on your scenarios.
minmaplevel = usually 1. levels map to google maps zoom levels. so 1 is very very high-level map (at world map level)
maxmaplevel = usually determined by your app. but in this case 10. around 15 if you want some-what street level heatmaps
outpath = where to store the heatmap tiles generated – local disk path

Once the tiles are generated, you can easily integrate the tiles into a Google maps mashup using the following steps:
1. First upload your tiles to a web server where they can be accessed w/o any authentication.
2. Then use the code below to integrate

var map = new GMap2(document.getElementById(“map_canvas”));
map.setCenter(new GLatLng(38.86252601314520,-76.96975322980910), 2);
var myCopyright = new GCopyrightCollection(“© Chandu Thota”);
myCopyright.addCopyright(new GCopyright(‘Chandu Thota’, new GLatLngBounds(new GLatLng(-90,-180), new GLatLng(90,180)), 0,’2010 chanduthota.com’));
var gtl = new GTileLayer(myCopyright);
gtl.getTileUrl = function(tile,zoom) {
var t = “http:///&#8221; + zoom + tile.x + tile.y + “.png”;
return t;
gtl.isPng = function() { return true;};
gtl.getOpacity = function() { return 0.5; }
var tilelayer = new GTileLayerOverlay(gtl);

That’s it!
You can download the full package with exe, sample adaptor code, palette and sample data files (Starbucks locations and DC crime locations).
Let me know if you find this tool useful.

function _trackdownload(){ try { var _pt = _gat._getTracker(“UA-168784-1”); _pt._trackPageview(‘/downloads/heatmaprenderer’); } catch(err) {} }

Get the local deals in a fancy Carousel!

Just wanted to point out our new Carousel Deal Widget. 🙂 It’s part of our Dealmap Widget family but just fancier to display top deals on your site with better experience. Of course we do have the standard ABI sizes if you want them too.


Again, it only takes one line of code to integrate it into your site:


You can check out full widgets here: http://www.thedealmap.com/widgets

What is more important for a product? Fun or Utility?

Last week when Scoble made the argument that the Goby and The Dealmap are more important than Foursquare, Gowalla and others, the reaction was mixed. In his post, Scoble said:

“why did I say these are more important than Foursquare or Gowalla or the other companies in this space? Well, normal people are still resisting using these location services. But these [The Dealmap & Goby] offer REAL utility and REAL value…”

Nearly everyone missed the point; some bloggers even posted rebuttal like the one here, in which they said:

“The lack of gaming function in Goby or TheDealMap does not render them useless nor uncool nor nonfunctional, just not very fun. We all like useful tools but we love to play games and have fun! And that’s why Goby and TheDealMap are not nearly as important as Foursqaure and Gowalla”

See, its not really about which product is “more important” – the way I read it (and of course also based on my full 3 hr discussion with Scoble) is that Fun and Utility are the most important facets of any product. The role that’s played by a product in ones daily life is decided by how Fun AND Useful that product is.

In other words, Game mechanics promote frequency of actions and Utility aspects add value to those actions – they are simply the Yin and Yang of a successful product. The products that mix these two aspects in just right proportions cross the chasm to have a lasting effect.

And doing that is not that easy, its the perfect combination of art & science that’s hard to achieve!

Photo Credit: Exhibit-M

The Dealmap gets Scobleized!

Robert Scoble on his blog this morning:

“why did I say these are more important than Foursquare or Gowalla or the other companies in this space? Well, normal people are still resisting using these location services. But these [The Dealmap & Goby] offer REAL utility and REAL value…”
You can also see my full interview in the video below:
Thanks Robert! I love the fact that you and Maryam love The Dealmap!

Starbucks Free WIFI Heatmap

It was all over the news yesterday about how Starbucks Free WIFI is going to change the way we connect to Internet, so I got curious and generated a “Starbucks Free WIFI Heatmap” based on all Starbucks stores in the United States. The resulting map is seriously stunning, take a look at the image below:

There is a live version running on my machine (will try to upload to my site later for you to play) and I can see how this is gonna make some cities go “WiMax” without actually having “WiMax” 🙂

Get deals near you via RSS Feeds & Widgets

We have been busy at The Dealmap HQ working on more ways to get you the local deals in ways that’s convenient for you. As part of this push we are launching local deal feeds for top cities and The Dealmap widgets .

Local Deal RSS Feeds

To get a feed for your city, simply go to our local deals directory and pick your city. Then select the type of feed you need (Restaurants vs. Daily Deals) – then simply add “/rss” at the end and add that url in your favorite feed reader!

For example to get all daily deals in San Jose, you would subscribe to: http://www.thedealmap.com/cities/san-jose-ca/daily-deals/rss

Similarly, to get all restaurant deals in Seattle, you would subscribe to: http://www.thedealmap.com/cities/seattle-wa/restaurant-deals/rss


Local Deal Widgets

You can also get local deals in widgets for your site with a single line of simple HTML code. Simply visit The Dealmap Widget maker page and pick a theme/design/size that suites your blog! We have pre-selected some standard IAB sizes so that its easier for you to integrate into your blog/site. Below is a sample widget and the code required to install it:

http://widgets.thedealmap.com/?l=Seattle%2c+WA&h=250&w=300&t=black&lcid=1033 http://widgets.thedealmap.com/?l=Seattle%2c+WA&h=250&w=300&t=black&lcid=1033

It’s that simple!

We are working on more ways to get your favorite deals – so stay tuned. And of course, these widgets are built on top of our own Dealmap APIs – so you can build a custom widget yourself if you are a tinkerer!