Monthly Archives: July 2010

Gmail is down for me and Twitter (and not Google) confirms it

My gmail account of one of the Google Apps domain is down for the last few hours. The funny thing is, it gives “Show Detailed Technical Info” and when I expand it, it just says

” Hide Detailed Technical Info
Numeric Code: 21″

How the heck should I know what Numeric Code 21 is supposed to mean?

So, just to be sure the problem is not just for me, but a general outage, I searched, well, on Google for “gmail down”. The first link is a sponsored link from Google itself and it read

“Gmail Down?
http://www.Google.com/AppsStatus Visit the Google Apps Dashboard to View the Latest Service Status Info”

As I am used to not clicking the link but directly copy paste the URL, when I tried to access “www.Google.com/AppsStatus”, it gave a 404 error. Then I clicked the link which actually took me to http://www.google.com/appsstatus . So the actual url and the display url of this ad are not the same.

Anyway, on the dashboard, it said there was an issue with GMail on 7/28 but today it’s fine. But that’s not true. I am as of this writing not able to access my account.

So I went to the king of the real time search engine, twitter, and typed the same phrase “gmail down” and there you go lots of users already saying the same thing.

Hasn’t Google already integrated Twitter searches into its main search page? Not sure what triggers this twitter search results region, but certainly not the one I wanted :).

Advertisements

Leave a comment

Filed under Gmail, Google Apps, Tweets Search Engine, Twitter

Using Twitter For Case Studies

The MBA types are obsessed with case studies, at least in some schools. So, let’s see if they like this idea.

Say, some significant event unravels slowly and there is a stream of tweets related to it. People react to the tweets, and the followers react to these reactions and so on, soon it becomes big. While no one can really predict the future, the twitter buzz creates a lot of discussion and the final outcome in reality is what it is. Now, if a Professor re-plays 2/3rd of these tweets in a class room and asks people about their opinions of what would happen next (it would be even more interesting if they are replayed as if they were happening as of that moment), that would become a good discussion point for the class. And the best part is, whatever the students decide, they would have a real-life what-happened scenario.

2 Comments

Filed under Education, Twitter

Providing Context to a JSON Callback

My twitter search engine prototype is going smoothly. But as I wanted to add more complex features, I ran into an issue. Twitter Search API provides JSON support with a callback. I like this option very much, as it allows doing all the work on the browser. There is no need for browser to my web server to twitter web server communication. Instead, the user’s browser directly interacts with twitter’s server and can process the results in the browser itself.

So, the way to specify a callback api is to pass the name of the function to the Twitter API, something like

http://search.twitter.com/search.json?callback=foo&q=some-query

Then, the response would be

foo(results-represented-as-JSON-object)

So far so good. Now I wanted to keep track of some context within which the search request is being made. So, I first created an object to represent the context, defined the callback routine within that object. Now, since I am going to have several requests made, I need to have different context objects. So, I created a context object array and then I created a request URI like

http://search.twitter.com/search.json?callback=cArray%5B0%5D.foo&q=some-query

the next time a request needs to be made, it would be cArray[1].foo and so on.

However, the response that was sent is invalid. It’s like

cArray([0].foo(JSON))

I have no idea how it ended up like this.

So, I immediately looked at Google’s own API to see what it does. Interestingly, in their search API they take two separate parameters, one for callback and one for context. Their example is

http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=Paris%20Hilton&callback=foo&context=bar

I wanted to see if my way of using a callback function which is actually member function of an array object worked or not. I tried

http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=Paris%20Hilton&callback=myarray%5B0%5D.foo

and the response is

{“responseData”: null, “responseDetails”: “bad or missing callback or context”, “responseStatus”: 400}

To me this feels completely wrong. The workaround I am using for now in my twitter prototype is to create one variable for each context at the document level scope (by using eval) and then passing that in the callback. Something like

http://search.twitter.com/search.json?callback=c0.foo&q=some-query

where c0 is a new variable created for the first request. Next request would introduce c1 and so on.

Now the 20 lines question is, shouldn’t the callback name be allowed to be something like contextObjArray[someindex].callback as per JSON spec? Or, are these all wrong implementations?

Leave a comment

Filed under javascript, JSON

Search Engine Using Tweets

I recently got an idea where I would provide a search engine based on tweets. If you search the web there are already a handful of them doing this. But what I have in mind seems to be unique enough that I would most likely go ahead and do it.

As I started prototyping my idea, I noticed a few things. It looks like when multiple words are used, Twitter’s search looks for all the words (may be excluding stop words). It would be good to have the most relevant tweets presented first and then move on to less relevant. That is, the initial tweets should contain those that have all the, say, 4 words in the search and then 3 words and then 2 and finally just 1. May be going all the way to 1 may result in a lot of noise. But certainly, the exact number of words in the search and one less than that would be good. But doing this also has the problem in refreshing. Today the refresh happens based on all the tweets since the most recent tweet and the tweets are presented in chronological order. Of course, there is a popularity option as well in the APIs, but for this example, ordered by time is what is important. So, it would be difficult to digest a sort order that contains both time component and the relevancy component in it.

Another thing that completely perplexed me was when I searched for Zi8, I ended up with a tweet in my prototype that didn’t make sense at all to me. But upon further investigation, I noticed that the zi8 is part of the bit.ly shortened url. I personally think it’s not necessary to index the shortened urls as they don’t really contribute to the search except to create a noise like this. I mean, who would be searching for tweets where the shortened url contains Zi8? Now if you are wondering why I did that search, it’s the model number of Kodak’s Full HD camcorder.

When I searched for search engines based on twitter, there are a few articles that presented 9 or 10 such search engines. I looked at them, looked at their alexa ranking and their user interfaces. I think, some of them are doing good but some will probably fold in a few more months. In fact, as Twitter itself enhances it’s search engine, many of these other 3rd party search engines are likely to go into oblivion.

Leave a comment

Filed under Tweets Search Engine, Twitter