Site Moved

This site has been moved to a new location - Bin-Blog. All new post will appear at the new location.

Bin-Blog

Blogger Changed the Feed URL for Blogger Beta Sites

Blogger have changed the URL of the feeds of all the blogs that have upgraded to Blogger beta. In the previous version of blogger, the feeds were located in the location...

http://<blogger_id>.blogspot.com/atom.xml
(Eg. http://binnyva.blogspot.com/atom.xml )

Now it is in...

http://<blogger_id>.blogspot.com/feeds/posts/full
(Eg. http://binnyva.blogspot.com/feeds/posts/full )

This is a bad move by blogger. I just can't understand why they did it. They least they could do is redirect all traffic to the old location(http://binnyva.blogspot.com/atom.xml) to the new location(http://binnyva.blogspot.com/feeds/posts/full). By best bet is that they want to use REST architecture.

Another thing I don't understand is the result that is returned by the server when the feed URL is accessed. It returns the status 400 - Bad Request. Not 404(Page not found) but 400. I wish they would change this to 301(Moved Permanently) and redirect the user to the new feed location.

UPDATE : This problem is fixed now! Thanks Guys.

Syndication Errors

So why is this a bad thing? Why am I complaining when a page is moved. The answer is simple : Syndication. Many people who have subscribed to my feed using the old URL will not be able to access the feed. Many indexers like Technorati, Syndic8 etc. will not be able to access and index my blog. All because the URL for feed is changed.

Fortunately for me, I am using the Feedburner service. So I don't have a problem if the feed is moved. I just change the 'Original Feed' location in my feedburner account, and the the visitors will get the new data - without even noticing the change. If you are worried that Blogger will change the feed again, go register for this service(its free).

But I used the URL 'http://binnyva.blogspot.com/atom.xml' whenever I submitted my blog to an automatic indexer(Technorati,IceRocket,etc.). Now I will have to go around and update all those sites.

Bad move blogger. Hope you fix this issue soon.

New Features

That said, I have to admit the new feed system is cool. You can specify some quires and you will get a feed based on those quires.

For example, you can use the URL http://binnyva.blogspot.com/feeds/posts/full?max-results=5 and get the latest 5 posts instead of the default 25 new posts. Also there is a provision to get the feed for the comments of each post.(Eg. http://binnyva.blogspot.com/feeds/2591766938765279155/comments/full is the comments for the recent Fedora Core 5 - 64bit Vs 32bit post)

Some quires that work with the XML feed. There might be more, but these are the only ones I know. If you know any that are not included here, let me know and I will include them.

URL : http://binnyva.blogspot.com/feeds/posts/full

Parameters

max-results
The number of posts that should appear in the XML(Default : 25). Example : http://binnyva.blogspot.com/feeds/posts/full?max-results=5
start-index
The post from which the listing should be taken. 1 means latest, 2 means second latest and so on(Default : 1).

I think they are using an updated feed creator - the version given in the generator tag have changed. The new XML feed has Generator 'Blogger 7.00' while the older one has 'Blogger 6.72' as the generator.

RSS/Atom

Another thing I noticed was that the feed is available only in the atom format. In the previous version, they had both the Atom Format and the RSS format. Atom was available at http://binnyva.blogspot.com/atom.xml while RSS could be accessed at http://binnyva.blogspot.com/rss.xml . I can't find any way to get the RSS format in the new release(Blogger 7.0). Do any of you know where I can access the RSS format of the feed?

Filed Under...

Read More...

Top 5 Features Missing from Digg

Digg Guy

Digg is a great site - I use it daily to get myself up to date. Digg is one of the best news filtering service out there. A small definition of digg(for those who were living under a rock)...

Digg is a news website with an emphasis on technology and science articles. It combines social bookmarking, blogging, and syndication with a form of non-hierarchical, democratic editorial control. News stories and websites are submitted by users, and then promoted to the front page through a user-based ranking system.(From Wikipedia)

Like many other users of Digg, I too have a list of features I would like to see in Digg. These are the top 5(+1) features that are missing from digg.

Tagging

I just don't understand why this feature is not present in Digg. Digg is a poster boy for Web 2.0 and tagging is one of the core features of Web 2.0. Even Slashdot brought in tagging.

Bookmarking option - without digging

Many people digg an article because they want to mark it for reading latter - not because they read the article and liked it. I have done this many times. But if there is an option to 'bookmark' an article without digging it, the users will use that feature - giving more each digg more weight.

Link to original story in the feed

The Digg RSS feed is next to useless as it don't contain the link to the original story. The links is for the comment page for that story in Digg. I understand that diggs will lose some traffic if there is no need for the user to visit the front page, but is this a good long term strategy? Guys, you are a Web 2.0 site - you really have to provide a good feed. You if want, you can include the link to the comment page in the 'description' section, but please, include the link to the original articles.

New Stories

Despite what my friends think, I don't check Digg once every 10 seconds. The actual time is more like once every 10 hours or so. The problem is a lot of feeds get promoted to the frontpage in that time. So there is a good chance that I will miss out some of the digged articles. I would like a page that would show all the stories that have been promoted since the last time I visited that page.

For example, say I visited this non-existent page http://www.digg.com/new/ at 2006-09-23 10:00:00. The interface will be similar to that of the frontpage. I browse through the list of stories, merrily digging away. After my 'digging run' is over(say at 2006-09-23 10:30:00), I visit some other site, do some coding etc. till I feel the craving to check Digg again. So I visit the 'New' page again. Now only the diggs that has been promoted after 2006-09-23 10:30:00(time of the end of the last digg run) will be shown.

You would have to be logged in for this feature to work, which would be a good thing for Digg. If you don't want to log in, this can also be implemented using a cookie.

This feature is for the frontpage diggs - but can also be implemented for the 'Upcoming' Diggs too.

Link to external services

A link to external services like del.icio.us would be nice. Digg have provided a 'Blog This' options(which I have never yet used). But a much more helpful feature is a small link next to every post - "Bookmark this link in Del.icio.us". Or 'Seed this story in Newsvine'. Or whatever.

Bonus Feature : Pictures

Even though this feature is not essential, I thought it would be great if each story has an images associated with it to the right - like in del.icio.us or tech.memeorandum. Right now, images are only available for video links.

Your 'most wanted' feature for digg not here? If you have any feature that you would like to see in Digg, leave a comment.

Happy Digging.

Related Links

Filed Under...

Read More...

Semantic Pullquotes

"Pullquotes are basically some important text in the content that is repeated on a side with emphasis"

Roger Johansson of the 456 Berea st. recently wrote an article on how to make pullquotes using javascript. Pullquotes are basically some important text in the content that is repeated on a side with emphasis so that people will notice it sooner. This is often seen in magazines. Example to the right...

The method he used is to give the needed text a class, pull out the text using javascript and show it in the side. See original article for more details and code.

Advantages of this method

Avoids redundancy

This approach avoids having to enter the same content twice in the page. If you are using a pullquote, you will already have that text somewhere in the page.

A few problems with this approach

JavaScript is used for structure

JavaScript is used to create the pullquote - basically doing the job that rightfully belongs to (X)HTML. However, this don't really bother me - I am not that much of a purist. This feature also avoids redundancy of the text - which brings me to my next point.

Misses out on SEO advantage

The redundancy in the quote, propably containing some of our target keywords, is a good thing from an SEO point of view. Using this method will eliminate that advantage.

Not semantic

The 'span' tag is free of any semantic meaning - and frowned on in many purist circles. But, as I said earlier, it don't bother me much(I use spans liberally). But in this case, there is an opportunity do this right - using semantic markup is very easy...

<blockquote class="pullquote"><p> ... pullquote ... </p></blockquote>

...if you don't have issues about quoting yourself.

Text can't be changed

You will have to use the text exactly as it appears in the body - you will not be able to make any changes to it. Often you want to make cosmetic changes to the text before you make it a pullquote.

Don't need javascript

If someone who has a good browser(supports CSS) is surfing with Javascript turned off, he will not be able to see the effect.

Purely Semantic Method

A much simpler method of doing this is to just the proper markup to insert the quote and using CSS to position the text wherever you want. You don't really need JavaScript for doing this.

(X)HTML

<blockquote class="pullquote"><p> ... pull quote ... </p></blockquote>

CSS

This code is taken from the original article. Change it to fit your design.


.pullquote {
 float:right;
 width:10em;
 display:block;
 margin:0.25em 0.75em 0.25em 1em;
 padding:0.5em;
 border:3px double #ccc;
 border-width:3px 0;
 color:#333;
 background-color:#f0f0f0;
 font:italic 1.3em/1.3 Georgia;
}
.pullquote p {
 margin:0;
 text-align:center;
}
Read More...

32bit Linux installed(Fedora Core 5)

As said in the previous post, I have installed Fedora Core 5(32 bit) version on my system. A pity, I was starting to like the 64 bit version. The speed became bearable after you get used to it. Anyway I have just installed the 32 bit version - I have to configure it now. I will let you know what I think of the OS once the whole thing is set up.

I have stumbled upon a practical way to partition the HDD if you want to reinstall the OS every 6 months(the release cycle of many Linux Distros like Fedora Core and Ubuntu is 6 months). Of course, I will reinstalling you system every 6 months, but it is an option.

  • Windows Partitions(if any)
  • /boot - 200 MB for me
  • / - The root partition
  • /home - Where all the user's information is kept
  • swap - The size of this drive must be twice RAM's size. If you have 1 GB RAM, you must have 2 GB Swap.

Make sure you have a separate /home partition - that way you can reinstall the OS without losing(or having to move) any of the files you are working on. Just make sure you choose 'Custom Partitioning' when installing the OS. Then format all the partition EXCEPT the /home partition.

Of course, if you choose to put your site in /var/www/htdocs(or some folder outside your home) you will have to backup those folders. Some folders that I have to backup outside home are...

  • /var/www/ - All my web development folder - htdocs, cgi-bin etc.
  • /var/lib/mysql/ - Database is stored here.
  • /etc/ - Configurations.
  • /var/cvs/ - CVS repository is in this folder.

Also if you are the root user, your files will be kept in /root - not in /home. So back those up too.

The rest of the files are in my home folder(/home/binnyva) - these files will stay intact as I did not format the /home partition.

A problem with this method is that creating the same user is a problem. For example, if I create a new user with the same username(binnyva), the new users files will overwrite the existing files. Also KDE does not play nice when I tried to use the old configurations - I can login - but KDE will not start up. I had to login as root and delete the '.kde' directory from my folder before I got it to work again. This is a huge problem - I spend days trying to configure the OS to my liking - now I have to do it again. I would appreciate it if there was some system to copy the system configuration when upgrading the system. This is especially improtant in the case of 6 month release cycles I spoke about earlier.

Filed Under...

Read More...

Fedora Core 5 - 64bit Vs 32bit

I have just installed Fedora Core 5 64bit linux in my system. I like it, but there is some problems associated with its being 64 bit.

No Flash

Macromedia(now Adobe) have not released a Flash plugin for 64 bit Firefox. This is in most cases a good thing - as I won't have to watch annoying flash ads. But it is a problem when I am trying to view videos in YouTube or Google Video. Also, Google Analytics is impossible to use without Flash. There are some solutions like using a 32 bit firefox on a 64 bit linux - but I like it better if there is native support. For automated installation see Howto Install 32 bit Firefox with Flash w/sound and Java for AMD64.

Not much of an performance boost in Desktop systems

64-bit binaries are not twice as fast, either. You are unlikely to notice any discernible speed difference, particularly with desktop apps.

What you should (and shouldn't) expect from 64-bit Linux - A must read if you are torn between choosing a 64bit and 32bit OS for your system.

Can't get IE to work

As I have promised in the 'Installing Internet Explorer in Linux' post, I have installed IE using Wine in the system. I did this in a FC3 system(at work) and a FC5 system(at Home). IE works perfectly(or close enough) on the FC3 system - but fails miserably on the FC5 system. I think this is an issue with Wine. I had to hack it a bit to work with my 64 bit system.

Speed

Another problem I have noticed is that the system, on the whole, seems a bit slower than FC3. I have seen other complaints like this on the net - but very few valid solutions.

I am trying to speed thing up a bit by disabling unwanted services. But still I think that the FC3 was faster. I am going to upgrade my RAM to 1GB from the current 512 MB - maybe that will solve the problem.

If nothing works, I will install a 32 bit version of FC5. I will have to re-configure everything - but I need speed.

Filed Under...

Read More...

Object Oriented Programing(OOP) in JavaScript

A quick link dump on JavaScript inheritance and other OOP techniques that are almost never used when coding in JavaScript.

Classical Inheritance in JavaScript
JavaScript is a class-free, object-oriented language, and as such, it uses prototypal inheritance instead of classical inheritance. This can be puzzling to programmers trained in conventional object-oriented languages like C++ and Java. JavaScript's prototypal inheritance has more expressive power than classical inheritance. By Douglas Crockford
Private Members in JavaScript
Some believe that javascript lacks the property of information hiding because objects cannot have private instance variables and methods. But this is a misunderstanding. JavaScript objects can have private members. Here's how. Again, by Douglas Crockford
How to achieve private, public, and privileged members in JavaScript
One core thing about JavaScript that tends to confuse people is how to get private, public, and privileged members. First off one might even question the fact of whether or not they’re useful or needed - and to one degree, they’re not. But like any OOP language that allows for declaration of private and public members, there’s not even a need for them there as well. By Dustin Diaz
Namespacing your JavaScript
Perhaps a very uncommon approach to developing web applications that require JavaScript (but should be more common) is namespacing your scripts. This can be done very simple-like in a manner that is painless and nice-looking. By Dustin Diaz
Private Static Members in Javascript
It was a widely held belief that javascript objects could not have private instance members, that all javascript object properties where public and could be accessed and changed with external code.
OOP in JS, Part 1 - Public/Private Variables and Methods
This page shows how to create private variables and methods in classes in Javascript through the rather simple example of a person.
OOP in JS, Part 2 : Inheritance
This section discusses inheritance in Javascript.
Object Hierarchy and Inheritance in JavaScript
JavaScript is an object-oriented language based on prototypes, rather than, as is common, being class-based. Because of this different basis, it can be less apparent how JavaScript allows you to create hierarchies of objects and to have inheritance of properties and their values. This paper attempts to clarify the situation.
Object-oriented JavaScript
JavaScript is not generally considered a robust programming language, especially when compared to languages such as Java or C#: it is interpreted, rather than compiled; it is dynamically, rather than statically, typed; and it is commonly considered a procedural, rather than an object-oriented, language.
JavaScript Object-Oriented Programming
It may be shocking news, but JavaScript is a very powerful object-based (or prototype-based, whatever you wish to call it) language. Yes, JavaScript is a powerful language, not just something that's handy for image rollovers and other corny, flashy effects. However, very few people who have used JavaScript realize its capabilities. If you're one of these people, this tutorial is aimed at you.
JavaScript and Object Oriented Programming (OOP)
JavaScript is an excellent language to write object oriented web applications. It can support OOP because it supports inheritance through prototyping as well as properties and methods. Many developers cast off JS as a suitable OOP language because they are so used to the class style of C# and Java. Many people don't realize that JavaScript supports inheritance.
Introducing the best Javascript Inheritance Technique
Every programmer who's tried to apply classical Object Oriented techniques when developing with JavaScript, has at one time or another asked themselves the question: How do you call or invoke a super class method?
Read More...

Blogger Beta

I have upgraded to Blogger Beta - now I can access many more features - like labels, WYSIWYG template modification etc. Since I use a customized blog design, it has not been easy. In fact, it was quite hard. But was it worth it? I don't know yet.

New templating Language

The templating language has been changed entirely. Many new features have been added - and the complexity have gone up greatly. I understood the language - but I don't think anyone without a programming background would spend enough time to study it.

Loops

The <b:loop ... > tag lets you repeat a section of content multiple times with little or no changes. Example...

<b:loop var='post' values='data:posts'>
   <h2><data:post.title/></h2>
</b:loop>

Conditional Statement - If/Else

Shows the content only if the given statement is true(or false). Example...

<b:if cond='data:blog.url == data:blog.homepageUrl'>
 <data:title/>
<b:else/>
 <a expr:href='data:blog.homepageUrl'><data:title/></a>
</b:if>

Section - Widget - Include

The Section/Widget/Include system make the Drag and Drop template editing system possible. The section is a top level container which can contain multiple widgets. A widget can have many 'includable's. The includable with the id 'main' will be shown by default. You can display the other includable using the code '<b:include name='ID_OF_INCLUDABLE'/> Some sample code - this code shows the header of this blog...

<b:section class='header' id='header' maxwidgets='1' showaddelement='no'>
<b:widget id='Header1' locked='true' title='Bin-Blog (Header)' type='Header'>
<b:includable id='main'>
<h1 id="blog-title">
<b:if cond='data:blog.url == data:blog.homepageUrl'>
<data:title/>
<b:else/>
<a expr:href='data:blog.homepageUrl'><data:title/></a>
</b:if>
</h1>
<p id="description"><data:description/></p>
</b:includable>
</b:widget>
</b:section>

Very powerful - but complicated.

In Conclusion

I like the new templating system - it is complicated, but very powerful. If you are willing to spend the time to study it, you can make magic. Kudos to the Blogger team for bringing it out.

If you notice any problem this blog, let me know. I not have tested this in IE yet - I have linux remember?

Did you move your blog to blogger beta? Why not? If you did, how did it go? Leave some comments.

References

Filed Under...

Read More...

Fedora Core 5

Fedora Core 5

I have upgraded from Linux Fedora Core 3 to Fedora Core 5. I still have to not configured it fully, so a complete review will have to wait.

I had a few troubles getting Firefox to work as I need it - and I have great difficulty in believing that they did not include XMMS in the distro. Other than that, I am mostly satisfied with the OS.

More details and a decent review will be posted when I have finished configuring the system.

Filed Under...

Read More...

Subscribe to : Posts