We Need Features Like Google Reader’s Share

Writing quality content and democratic diversion of web traffic towards that content are two different things. When the average informed netizen goes to look for ‘good’ content to read, stay up-to-date, there are very limited places they go to. Digg, Reddit and Techmeme are just some of those places. The alternative is their feed readers, but we’ll come to that later. The problem with the names above are that they’re pretty much always populated with content from the same blogs and journalism sites — like Techcrunch, Valleywag, Gizmodo — the ‘big’ names. It’s like small start-ups competing against the Microsoft’s and Google’s of the information world, only without the resources and funding.

If you’re thinking that it just takes time and good content for a small-time blog to hit it big, then name me 15-20 which have. Out of the number of blogs there are, 15-20 isn’t a big number. If you can, I don’t want to start to imagine the amount of time and the kind of promotion they would have taken to reach where they have. The whole point of the people power and interactive movement of the web (or Web 2.0 as we call it) was to make it easier for a person to form his/her identity — be it through social networks, blogs, or any other way. Unfortunately, the people who got there first are the ones who’ve benefited the maximum. Fits the analogy with Microsoft, doesn’t it?

Brilliant idea, pathetic execution

We saw this first with MSN Spaces and Messenger. The ‘gleam’ when someone updated their Space, prompting their friends to click through and hence, effortless promotion. In perfect Microsoft fashion, things were kept locked to in-house services. Cut to the present, and we see an almost similar thing with Google Reader. The only difference is you’re not limited to Blogger, and there were a million shouts of privacy complaints when it was launched. But the feature/concept itself is probably what we need to get the ball rolling.

Susceptible to abuse, the feature is the best way to promote your blog. Google Reader is one of the top three most used (online) feed readers, and hence, the best place to reach out to the people. If they like what they see, they can automatically subscribe (permalinks point to your feed when the feed is un-subscribed) to your feed, adding to the count. But there’s a catch here too … not every self-promoted blog has good content.

Little guys deserve to be read as well

I think what we need is a social-news aggregation service, which consciously blocks submissions from blogs which rank in the top 10 of blog-ranking lists, to give the smaller ones a chance. Littl’uns is (was?) an awesome attempt, but suffering from lack of promotion (chicken and the egg, anyone?) and a submission/rating system. Attempts like bVibes however, show how anything not started by an already big player in this field is bound to disappoint.

No short-term solution

There is nothing that will immediately open the doors for the less popular blogs to reach more people. Quality control and self-promotion aside, the most you can do is participate as much as you can in other blogs, and build credibility — but that’s not anything you don’t know. We also need a boost from the established players. Maybe a Digg category, change in algorithm, or a separate service altogether — anything will do. I think it’s about time we differentiated between popularity and quality, regardless of the amount of time.


I Don’t Like My Computer Science Classes

It’s not the classes themselves, but what we’re taught that annoys me. This semester was decent, because it involved Data structures and (rather boring) assembly-level programming. But it seems the higher we go in our education, the more theoretical things get. First it started with understanding software design, then going deeper into computer architecture and micro-controllers/processors1. Whatever little bit of programming we’re taught, is pre-written, verified programs which anyone can learn up and write down in the final exam. Presto! Instant engineers. No techniques, no real-world problems. Just concepts and concepts. Ask someone to design and program a software solution (regardless of the bugs), and see the looks you get.

Keep it real

The main problem as I see it is that we are told how to do things, not the ‘what’ and ‘why’ that are usually associated with them. Any self-respecting programmer will know that you shouldn’t have to write more than one statement to do a basic conditional assignment operation on a variable (sorry, couldn’t think of a better example). The more if-else ladders you form, the harder it gets to understand what the program is finally doing. However, in our classes, it doesn’t matter. As long as the program works, we’re good to go.

What should matter is how effective the program is. We’re taught virtually nothing of time-complexity and considerations when writing code. No consideration of delay due to modules, and forget about portability and uniformity of outputs. And we are in second year of college.

99% of the class loathes having to work on a project (even if it’s in a group), and I know this is not the case just my college. I’ve heard accounts from my friends in other universities as well. A look at the curriculum reveals some problems. But I believe the main problem is not the curriculum, it’s the teachers.

Yep… They’re a bore!

Do they know what’s hip?

With the exception of the IITs, I don’t know any college which invites software-engineers with industry experience. The teachers themselves are not obliged to stay up-to-date on what is happening in computers today. We don’t have the concept of ‘academic papers’ which professors should publish to gain credibility. A degree is what tells us who should teach and who shouldn’t.

If a college can make placements at companies like Microsoft and Sun, why can’t they arrange for engineers from those companies to come and give a 1-2 hour talk on the latest developments, which direction our focus should take and what these companies are looking for? The problem isn’t lack of time, it’s lack of motivation. Everybody needs motivation, especially students. It’s these people that’ll tell them what they should be looking forward to.

Ultimately, the fact is that we’re trying to make better engineers in practical life, not on paper. The closer we keep students to the present computer industry, technology and awareness-wise, the better they’ll do when they’re ready to get a job and start working for real. As it is, computer science graduates need to constantly learn new things in their niche/speciality. I’m sure we can make things easier on them by starting early.

Further Reading

How Should We Teach Computer Science on Coding Horror


  1. The 8086 line from Intel. A microprocessor line that went out of production about 20 years ago. Go figure! 


Javascript ‘Variable’ Variables

I’ll be using a programming jargon in this post, so excuse me if you don’t understand things immediately. All explanations are at the bottom.

One thing I love about PHP and sorely miss in C++ is the concept of variable variables. A ‘variable’ variable is when the identifier of a variable is a variable itself. Any language which supports this, will also support other variable controls. If you know what I’m talking about, skip the next section.

‘Variable’ variable

I love the feature. It saves a lot of headaches if you’re not sure of the incoming requests, and you need to serve all kinds of situations. I used it when when I was programming an API for a project I was working on.

It works by taking a string as the name, and then defining a variable with that name. That variable can then be used as a normal variable. Unfortunately, the way this works, you’ll need to have one variable which will contain the identifier as a string. If a language natively supports it, it’s much easier to work with it. However, when there are cases where you do need to use this in Javascript, there is a rather simple way to do it.

‘eval’ is your friend

Using the eval function creatively allows us to create these variable variables and function which can be used throughout. Of course, it’s simpler if you define a function to handle your variable, and do what you would expect a manually defined variable of that sort to do. Take a look at this:

function get(v){
    flag = 0;
    if(typeof(eval(v)) == 'function'){
        for(i in eval(v+'.prototype'))
            flag = (i) ? 1 : 0;
        if(flag == 1)
            return eval('new '+v+'()');
        else
            eval(v+'()');
    }
    else
        return eval(v);
}

Now, whenever you need to work with your variable, just call the function, passing the name as the argument, and it’ll return whatever you expect. The extra bit in the condition for == 'function' is because Javascript treats classes as functions. So we need to check if its prototype has any methods defined. If it does, it is a class, and we return an object of that class, else we just call the function. Hopefully this takes all cases into consideration. If you have a faster way, please let me know! Ruski points to the window[x] method as a faster alternative in the comments.

A practical use of this would be if you wanted to write a script to receive a request for a function, which belongs to a class. I’ll take the example of the Facebook method users.getInfo which returns the info on a user based on the UID and an array of fields passed. Now, I’ll skip the actual definitions, but assume something like the following:

users = function(){
    /* ... characteristics ... */

};
users.prototype = {
    /* ... methods ... */

    getInfo: function(){

        /* ... function body ... */
    }
}

So now, if the page is passed users.getInfo, we can do the following:

request = 'users.getInfo';
method = request.split('.');
    class = get(method[0]);
    get('class.'+method[1]);

That’ll execute the required function. The beauty of this is that you can change the string, and the code remains the same, with result being that the correct method of the required class will get executed.

Of course, if you’re programming at that level, you’ll be better off working with a more powerful server-side language like PHP. But this is a nice way to use those concepts in Javascript if you ever need to. If you have improvements to this, please feel free to shoot them my way :)


Mac Keynote 2008: Unexpected Results

I guess the rumour mill was right for once. The Macbook Air was revealed, filling up the much needed gap between the high end Macbook Pro and the basic Macbook. But at $1799, it seems a little too steep, especially because the features are pretty much the same as your basic Macbook, and the lack of an optical drive.

Macbook Air It’s all about wireless, this one. With abilities such as ‘Remote disk’ that lets you ‘borrow’ someone else’s drive, it’s a technological wonder. Stunningly beautiful. But so is the Optimus Maximus. We’re excited, but not exactly rushing to buy one, are we?

The problem I see at the moment is the phenomenal drop in Apple’s share as the news unfolded. Shares (literally) fell (they’re slowly coming back up while writing this). I guess people don’t like the Air as much as Apple hoped.

I don’t like it a lot right now, and my personal opinion is that they made a mistake with it. Apple has clearly gone for the sleek factor, trying to make its presence felt in the ‘thin’ category. Its only competitor being Sony (I’m taking looks into account as well), those who want a visually breath-taking computer should go with this. But, you gotsta have the pockets for this one.

Copyright © 2006-08 Aditya Mukherjee | Valid XHTML 1.0 Transitional Valid CSS!