Categories
World Wide Web

The Afterthoughts – If Google came up with an RSS Reader

So here is another post in The Afterthoughts series.

Post: If Google came up with an RSS Reader
Originally posted on: 2005-01-30

This post was made long before Google came up with Google Reader. I was experimenting with RSS readers and started wondering what it would be like if Google came up with an RSS reader.

Now that we have one from Google, it is time to look back and see how my expectations matched with the actual product.

> * It would first buy the domain “greader” or something similar.
This didn't happen. However, Google Reader is popularly called GReader. I guess I made this comment because of Gmail.
On a side note, Google does own greader.net.

> * It would have an index of more than 8 million different feeds.
This is not how an RSS reader has evolved. Google Reader does have recommendations based on the feeds you already have. It would be good to see an integration of Google Blogsearch or even Google News with Google Reader. The only integration I see is the subscription of search results from both of these in Google Reader (a 'new' feature).

> * It would offer 1 GB space for storing posts.
The storage in most online readers is unlimited.

> * It would have an excellent search feature for searching posts.
This was a surprise! The feature came in so late. Totally unexpected.

> * The interface would be simple, but at the same time powerful.
You bet this has been true. The keyboard shortcuts are just superb. The speed with which you can navigate and read feeds is extremely good. (You will need my script to make it even faster. :))

> * We would be able to mail any post just at the click of a button.
I guess this feature has been around since quite some time now.

> * It would allow us to filter posts and also label them for future reference.
With tagging and folders, this has been better than expected.

> * It would also allow us to make blog entries (of course the service would be integrated with Blogger.)
Again, this is a surprise. Google has not provided any integration with Blogger. However, recently Google added a feature to share an item with notes. With the microblogging revolution, and Google having acquired Jaiku, I guess that integration will happen first.

> * It would integrate greader with other offerings like mail, groups etc.
The integration is not that great as of now. It would be cool to see posts related to a mail, or a message in a group etc.

> It would be Beta forever. 🙂
Surprise! This isn't true!

Final thoughts:
So after more than 3 years since I made the original post, (which is a lot of time in technological evolution) I should say, Google did match most of the expectations that I had back then, some features were developed much better than what I had expected. However the integration with other services is one thing where it could have done better.

Categories
Technology

Getting Rosegarden to work in Ubuntu (Gnome)

I am one of those many people out there who had trouble in getting Rosegarden to “sing” in Ubuntu under Gnome Window Manager. Finally after trying a lot of permutations and combinations, I got Rosegarden to work. I made this post to share what I did so that others don't have to go through the same trouble I did!

So let's proceed.

Required software

Rosegarden requires some other applications to be installed in your system. So before you fire up Rosegarden ensure that you have the following:

  1. qjackctl
  2. qsynth
  3. rosegarden

If you don't have any of these you could execute this:

$ sudo apt-get install qjackctl qsynth rosegarden fluid-soundfont-gm

Ok, now we have everything we need. Let's proceed to the configuration steps:

Start the Jack server

(Somehow not using sudo gave me problems)

$ sudo qjackctl &

Jack Audio Connection Kit setup

Click on Setup
Here are the settings I used:



Start the Jack server



Start the synthesizer

$ sudo qsynth &

QSynth setup

MIDI Setup



Audio Setup



Soundfonts Setup


Start rosegarden

Ok, it's time to fire up Rosegarden.

$ sudo rosegarden &

Configuring Rosegarden

Go to Settings – Configure Rosegarden.




Ensure that the connections are right in Jack Audio Connection Kit (Connect):




Play one of the sample files and you should hear music!



Troubleshooting

In case your Jack server is not running, you might want to execute this command and then start the Jack server:

$ sudo /sbin/alsa force-reload

Update

One of the readers of this post, Jason Friedman, sent me this information via mail:

I read the information you posted about rosegarden at http://gauthampai.livejournal.com/62383.html and it was _very_ helpful. Thank you for posting it.

I am running Linux love 2.6.31-20-generic #57-Ubuntu SMP and I had to do two additional things to hear the audio:




Categories
Technology

Adventure with Ubuntu, Wubi, yum, libc and the like

Note: This is not for the casual reader. If you are facing any issues with any of the keywords mentioned above, you might want to continue…

So here I was trying to install some packages from a YUM repository on my Ubuntu 8.0.4 system. Why YUM when you have apt-get? Well, let's just say, the situation demanded it.

The installation seemed to be going fine. What I did not realize is that, the installation had innocently relinked my libc files to a new location (actually to an older version of libc). The yum installation failed. Without checking the error, I executed sudo yum install again.

And I got this:

sudo: /lib/tls/libc.so.6: version `GLIBC_2.4' not found (required by sudo)
sudo: /lib/tls/libc.so.6: version `GLIBC_2.4' not found (required by /lib/libpam.so.0)

Next I executed ls. Same error! And soon I realized, I was not able to execute most of the commands. The only things running were, things that were already open. I had closed my terminal by then, and was not able to bring it back neither was I able to login in an alternative terminal.

It is extremely difficult to figure out what has gone wrong without a terminal. I tried out various things, but I soon realized that since I don't have sudo access anymore, I won't be able to fix anything in the /lib directory, so no point trying.

The only solution was to reboot in recovery mode and then see if I could relink the libc files. So I popped in the Ubuntu live CD.

Now here is an added twist to the tale. I run Ubuntu on Wubi. So how do I mount my NTFS 'file' which is actually a Linux partition?

With some pointers from my colleague, I realized that it is possible to mount a file as if it were a filesystem. I executed this:

mount /dev/windows/filesystem/containing/wubi/installation /media/disk
mount /media/disk/path/to/wubi/disks/root.disk /media/root -o loop

Guess what! The Wubi file got mounted and I was able to access the files.

After some inspection I realized that the problem was that, while Ubuntu has all the libc files in /lib/tls/i686/cmov, the message indicated that these files should be in /lib/tls.

I did a 'ls' in the /lib/tls directory and found that there are some files of an older version of glibc at this location but the live cd version didn't have any files there. So it was apparent this is what is causing the problem.

I unlinked all the files, and relinked them to the new location and rebooted.

This time although it was able to boot Linux, it did not bring up the UI. I booted once again in recovery mode and ran xfix and continued with the boot.

Things seem to be fine now.

Update: Not everything was fine. Some applications, like Totem threw a SEGFAULT. So I did this:

sudo apt-get install --reinstall libc6

Things seem to be fine now.

Categories
World Wide Web

How to ensure that your extensions work on Firefox 3.0

Here are the steps that I found useful to port my extensions from Firefox 2.0 to 3.0:

  • Step 1: Just start Firefox and allow it to update the extensions. You could go to: Tools -> Add-ons -> Extensions -> Find updates.
    This should update many of the extensions. Restart Firefox.
  • Step 2: For those extensions where the auto-update has not functioned properly, you might want to manually see if an update is available. This is because for some extensions, the auto-update may not recognize that a new version is available.
    • Uninstall the older version and restart Firefox.
    • Search for the addons here and add them.
  • Step 3: Install the MR Tech Toolkit extension.
  • Step 4: For those extensions that have still not been updated and you need desperately, just see if the option 'Make compatible' from MR Tech. This option is available when you right click an extension in the Extension tab. If the compatibility range is upto some older version of 3.0 (for example 3.0b5) then this might work.
  • Step 5: Look for updates at a higher frequency over the next few days. Developers will be forced to ensure that their extension works in new version of Firefox so you can expect an update soon.
Categories
World Wide Web

The Afterthoughts – Gmail forwarding and service interoperability – an interesting observation

“The Afterthoughts” is a series where I revisit some of my older blog entries and see how things have changed since the time I made the blog post and now.

The posts that I will choose initially will be from 2004 to 2006.

So here is the first one in the series:

Post: Gmail forwarding and service interoperability – an interesting observation
Originally posted on: 2005-11-21

The entry goes about explaining how when you connect various services together, you could end up with the same information multiple times.

This is increasingly becoming a problem these days. Services like Twitter and Friendfeed are not solving the problem elegantly, so you see more and more duplicates and links to the original post.

Here is a typical scenario today:
I make a blog entry. In order to ensure that my readers see my post immediately, I have a service that automatically posts a message in Twitter. This is like instantly messaging my friends (actually Twitter followers) telling them, “Look, I made a blog entry”.

Now, I use a lot of Web 2.0 services. So, in order to ensure that all my friends have a single feed to follow my activities, I use some aggregator like FriendFeed or Tumblr.

Some friend of yours (let's call him Bob) likes your blog entry and bookmarks it on del.icio.us. Another friend, Andrews bookmarks it in Magnolia.

Let us now say, there is another person Dave, who is a friend of you, Bob and Andrews. He is following all 3 of us in Friendfeed.

How many entries is Dave going to see of the original entry?
6 in total! 3 from you – 1 from your blog post directly, 1 from Twitter, 2 from Tumblr (1 via the blog post and 1 via Twitter), 1 from Bob via del.icio.us and 1 from Andrews via Magnolia.

The screenshot shows duplicate entries from mashable's blog feed and from Twitter:

Now this is real noise. And this is more true if Dave is not even interested in the blog post to begin with.

So the solution?
Friendfeed allows you to hide specific feeds from specific people. For example, Dave can hide all bookmarks from Bob or all Tumblr entries from me.

Now that is not a good solution because not all bookmarks from Bob are duplicates.

Tools like Feedblendr and Blogbridge have solved this problem for simple RSS aggregation. However things are different when it comes to social network and aggregation.

So right now there is no simple way of detecting duplicates and more and more people are complaining about this in the blogosphere explaining how Friendfeed is more noise than information and why the good old Google Reader is still relevant.

Here is one such discussion. As the discussion suggests, it is not just about eliminating duplicates; it also requires you to merge discussions/comments in each of these posts keeping in mind that not everyone is a friend of everyone else.

So what has changed over the last 2 years?
If anything, the problem has become a tougher one. I am sure the startup that does duplicate elimination and gives you a filtered feed taking your social networks into consideration is going to be the next hyped startup in the Web 2.0 world.

Categories
World Wide Web

Privacy disasters with aggregation services

Imagine you have a host of aggregation services like Friendfeed, Tumblr, Suprglu, Lifestreams connected to each other, such that each one is reading from your various feeds and republishing the content.

Now imagine a disaster where one of these services, say Twitter, suddenly, because of some flaw, exposes your private messages.

It's like a Tsunami that cannot be controlled! Your private data would flow into various input streams in a matter of seconds and there is no turning back.

Things will only get worse with activity feeds and Beacon.

The bottom line is: Be careful about where your data is going and what data you put online.

Categories
My Updates

Big fish, small fish – my personal experience of working in a startup

It’s been about 3 months since I joined Ugenie.

Having spent about two and a half years in IBM, which is a mammoth on any scale, and working in Ugenie now, which has a really small employee strength, what changes do I see?

I guess most large organizations have similar characteristics, so instead of naming IBM in the rest of my post, I will just mention it as ‘Big Fish’ to represent all large organizations. Again, I guess nothing is unique about my feelings of Ugenie and most startups have similar characteristics, so I will call it ‘Small Fish’.

If I look back into the days I spent at Big Fish, I have mixed feelings. There are quite a few things that I have gained, but some that I had to lose.

The immediate change that I saw in Small Fish is the rate at which things move. Ideas emerge by the minute, and are implemented within a couple of days or for ideas taking more time, a week. More time is spent in getting things done than on planning and processes. Long term goals are perhaps goals for the month and I guess there is no point thinking about a year down the line or anything on a similar scale! The ‘tomorrows’ or ‘over the next week’ are replaced by ‘now’ and ‘today sometime’. There are lesser ‘meetings’ and they are short. You definitely don’t need a calender for your meetings.

The second change I see is how large organizations spend lots of money on infrastructure and how startups tend to save on every penny. I remember the ultra modern conference rooms, the posh pantries/wash-rooms, the money that was spent on things like events, all hands, yearly gifts, interior decoration, posters talking about “X” day (replace X with Innovation, Mothers or something like that) etc, I could go on. Don’t get me wrong. I am not saying Small Fish does not spend on its employees, but every penny spent is done so cautiously.

And now let me delve into the differences in terms of:

Breadth/Depth: I guess one of the reasons that made me stick to Big Fish is the breadth of technologies on offer. Every day, you would come across someone working on a project that you never knew existed or you come across a page on the Intranet that excites you. Every day, you keep widening your breadth of knowledge.

Things are different in Small Fish. Small Fish offers the much required depth.

I remember someone telling me of how there needs to be a balance between the breadth of our knowledge and the depth in some specific field. This is like the letter ‘T’, with the top horizontal line representing the breadth and the vertical line representing the depth.

Ownership: I don’t see too much of a difference here. While in Big Fish, I used to own the components I developed and I was responsible for timely delivery of that component and ensuring that the consumers of my work are kept happy. Things are similar in Small Fish, may be with minor differences. The ownership here tends towards the whole of the product/application than just the component you own. (This is closely related to the Roles/Responsibilities observation below).

Priorities: Back in 2005, when I was working on product development, there was a phase where I found it difficult to prioritize my tasks. There were a bunch of bugs to fix, there were some mails to respond to and there were some bug databases that I had to update and it seemed like all of them had the same priority.

If I compare that period with the present, I would say it’s quite similar. There is more work than anyone can handle, there are some things that only you can do and the deadlines are sometimes impossible to meet because of various technical/non-technical issues.

However I seem to be a bit more comfortable in my present position than I was back in 2005. This could be attributed to the fact that I have two and a half years of experience behind me now or to the fact that I am in a startup now and it is normal for everyone to have their plates full.

Roles/Responsibilities: I would say there is no such thing in a startup. While in Big Fish, we had clear responsibilities and having completed those tasks, we could consider our job done, in Small Fish, things work differently. There is no such thing as ‘my responsibility’. Or if you really want to put it in terms of that, you would have to say, ‘everything is my responsibility’. While many people don’t like that, I see every such occurrence as an opportunity to learn and I really enjoy it.

Opportunities: There is no dearth of this in Big Fish or Small Fish, but there is a difference. In Big Fish, you need to search for them or understand that ‘x’ is opportunity knocking at your door, while in Small Fish you would just take it up, without perhaps realizing that it was an opportunity.

Social network: Well, if we are talking of getting to know more people with diverse personalities and skill sets there is really no end to how many people you can connect with in Big Fish. This is severely restricted in Small Fish. I remember having some technical discussions with people who have significantly more experience than me in Big Fish and I should say the things that I learnt then are things that you don’t get to learn from a book. This has definitely added to my experience. It was about ‘learning from the failures/experiences of others’.

Smaller fishes tend to have a younger crowd. So while the teams are dynamic, the number of people with more experience than you and with diverse skillsets is limited. This has nothing to do with the actual people in Small Fish, but is rather because of the size of Small Fish, which, because of its very nature is small.

Awards/Recognition: Frankly, there was no dearth of it in Big Fish. But on second thoughts, other than the monetary rewards and the benefits of the actual work that you did to earn the award, do these awards really matter to the rest of the world?

Other activities: This is severely restricted in Small Fish. Big Fish invests a lot on employees. So every day you hear people being on training or attending some conference or even having gone abroad to learn some technology.

Processes: If you ask anyone working at a startup, especially someone who has worked in a large organization before, I guess one thing they would mention is the processes. What is my take on this?

I would say there needs to be a balance. While on one side too many processes is definitely going to be time consuming and a pain on the employees, having a well defined process would mean that everything that needs to be taken care of is actually taken care of. So if Big Fish is tending towards one end of this spectrum, Small Fish is towards the other end, with the best point being somewhere close to the middle.

So people ask me, do you think it was worth it?
Well, no doubt about that. I guess you have to lose some things to gain some things. And the things that Small Fish offers it’s tough to expect that from Big Fish and this, to a major extent, holds the other way round too. Now having had enough experience in Big Fish and no experience in some Small Fish, I would say, yeah, it was worth it and I am glad I decided to join Ugenie.

Now remember that these are my observations and I could be wrong in terms of how various Big Fishes/Small Fishes work or even in terms of the Big Fish where I worked and the Small Fish where I currently work. Also my own opinions might change as I gain more experience at Small Fish and compare it to my experiences in Big Fish.

Categories
World Wide Web

iRead – a social book discovery revolution

It has been a while since I thought I should write a review of iRead.

weread logo iRead is a social book discovery application. It has been quite successful on Facebook and has a very large userbase. Currently iRead has a total install base of about 1.4 million users, mostly from Facebook.

So what do we mean by social book discovery?

iRead is not just about maintaining a bookshelf online. It tries to bring the social aspect into picture. ‘social’? iRead depends a lot on your social network. You can share your bookshelf with your friends, learn what your friends are reading and what their reading tastes are. You can discuss about books in various book clubs. You could participate in Quizzes or even add your own. You can find out how compatible your reading tastes are with other people in the network. iRead does not require a separate registration. It is available right in your social network. (As of now the application is available in Facebook, Orkut, MySpace, Hi5 and Bebo.) So when we are talking about friends, we are talking about your friends from the network where you are using iRead. So if you use iRead in Facebook, you see your Facebook friends in iRead, while in Orkut you see your Orkut friends. Many a times, all it requires is to just add the application to your profile. ‘book discovery’? For one, iRead provides recommendations based on your reading tastes. Then there are various other mechanisms by which you can discover new books to read. Let’s explore some.

Several ways to browse

* You could first start off by searching for books and adding them to your bookshelf. This helps us learn about your tastes and recommend books that you may like. * When searching, you could either enter the name of the book, or its author, or if you know the ISBN, you could enter that. * If you want to just browse through the application you could start off by looking at what other iReaders are doing. The home page shows the most recent activity in the network.

* So let’s say you find some interesting book. Just click on the book and you are taken to the book details. Here you get to know how many readers the book has, how many reviews people have written for the book and get some instant user reviews and an editorial review. You can also find out similar other books.

* If you see that the book is interesting, just click on the ‘See All’ reviews link. This will display all the reviews for the book. Read the ones you like and you will soon learn what the book is about.

* Since there are multiple ways to reach your data, your reviews are never buried. So even if you are writing a review for a book, that already has a thousand reviews, you can expect your review to be read by other iReaders. * If the book interests you, you might want to check out other books by the same author. Just click on the author’s name. This will show all books by the author. You could also click on the small icon next to the author’s name to search for the author in Author’s corner. This will give you other details like the profile of the author, what others think about the author, how many fans the author has etc.

* Author’s corner is a forum for readers to interact with their favorite authors. So if you are the author of a book and are looking for a forum to interact with your readers, this is where you should be. Author’s corner allows authors to maintain their profile, and also learn about their readers’ expectations. * While reading reviews, you might find that the review from a particular user is very interesting. You might now want to look at this reader’s bookshelf. Many a times, I have found this to be a good mechanism to discover new books. You can get an assurance of how close your tastes are by looking at the number of common books amongst you. Ok, now you might want to look at other reviews by this reader. * You could also contact the reader by leaving a wall post/scrap. * You may also want to check out who among your friends is on iRead and what they are reading. Click on the Friends link in the header. If you want to know about your friends’ reading tastes and they are not yet on iRead you could invite them to add the application.

* For selected books, you could even browse inside the book. A lot of out of copyright books are available for free online viewing. Some other selected books are available for limited preview.

Other features worthy of mention

Take your reads with you


So what if you are in all these networks and want to use iRead everywhere? iRead has a feature to import your bookshelf from Facebook to Orkut, MySpace and/or Hi5. Once imported, you will see the same bookshelf in all the networks. However the friends shown to you depends on the network you are currently in.

Import books from other sources


If you have been maintaining books in some other place, you may want to try importing books using the import books option. The link to this is found below the search box.

Add a book

Can’t find a book you want to add to your bookshelf? You can add it to our catalog. The link to add a book is found below the search box. So what’s more?! Happy iReading! Disclaimer: I work for Ugenie and am part of the iRead application development team. The views expressed here are my own and not necessarily those of Ugenie.

Categories
World Wide Web

Downloading data using Greasemonkey – Part 2

So I finally found some time to continue my experiments with the data download from browser to the server.

This time my target was Orkut. I decided that I write a simple script to extract my Orkut profile and then display a sub-set of these fields in my own site using my own formatting.

I did not write a Greasemonkey script this time, but just used Firebug to write Javascript. Here is the browser side script:

var arrayToExtract = new Array('listdark', 'listlight');

for(var z=0;z<arrayToExtract.length;z++){
   var elements = $$('.'+arrayToExtract[z]);   // Just got lucky here. $$ is available!
   for(var i=0;i<elements.length;i++){
       var item = elements[i].getElementsByTagName('p');
       if(item[0] == undefined)
           continue;
       postData(item[0].innerHTML);
       postData(item[1].innerHTML);
   }
}

function postData(data){
   var scriptElement = document.createElement('script');

   scriptElement.setAttribute('src','http://buzypi.in/backup?data='+data+'&file=orkut&date='+Date());

   document.body.appendChild(scriptElement);

}

The script above posts the profile information one by one to the server and the server captures it and appends it in a file. The server side code is as follows:

<?php
global $_REQUEST;

$file_name = $_REQUEST['file'];
$data = $_REQUEST['data'];
$more = $_REQUEST['more'];

$DIRECTORY = 'data';

$file_with_location = dirname(__FILE__).'/'.$DIRECTORY.'/'.$file_name;

$file_handle = fopen($file_with_location,'a');

fwrite($file_handle,$data);

if($more == "true")
   ;
else
   fwrite($file_handle,"n");

$success_value = fclose($file_handle);

echo "/*";
if($success_value === TRUE){
   echo "Successfully appended: ".$data."<br/>";
   if($more == "true"){
      echo "Expect you to send more data";
   }
} else {
   echo "Failed to write data";
}

echo "*/";

?>

Guess what happened when I executed the script?

The data was appended to the file alright, but the ordering of the items was messed up in some places.

Here is a sample:

job description:
work phone:
I am a social networking application developer. I work on the Books iRead application in Ugenie. Our app is currently available in Facebook, Bebo, Orkut and Myspace.
career interests:
...

while the expected output was:

job description:
I am a social networking application developer. I work on the Books iRead application in Ugenie. Our app is currently available in Facebook, Bebo, Orkut and Myspace.
work phone:
career interests:
...

The job description content should have been received before ‘work phone’, but this was not the case.

So what is the solution?

There are 2 things I can think of:
1. Ensure that data posted is atomic.
2. Come up with a simple sliding window protocol arrangement between the browser and the server.

Solution 1 is not always feasible, because of the limits on GET URL size. In fact, we might need to split the body just so that it can be posted using GET’s. So the only solution that can take care of this is (2).

I will post more entries as I progress. Meanwhile, if you have any better solution to the problem, comment here.

Categories
Technology

PHP Functional Programming – A code snippet

Given a string of comma-separated values, how do you convert each of them into a link of the form:
<a href=”http://–item–.google.com/”>–item–
and return a comma-separated list of these strings?

Snippet 1:

<?php
//Make these links to google.com

$string = "news,reader,mail";

$array_of_string = split(",",$string);

$final = array();

foreach($array_of_string as $item){
	$final[] = "<a href='http://".$item.".google.com/'>$item</a>";
}

echo implode(", ",$final);
?>

Snippet 2 (uses functional constructs):

<?php

//Make these links to google.com

$string = "news,reader,mail";

$array_of_string = split(",",$string);

echo implode(", ",
		array_map(
			create_function('$item',
	'return "<a href='http://".$item.".google.com/'>$item";'
					),$array_of_string
			)
		);

?>