What Happened to GFC Follower Gadget Blogger ?

If you recently made changes to your blog and removed your good-old Google Friend Connect follower widget, you might be having problem adding it back, but what really happened to it ?
After the launch of Google+ many Google services including blogger changed to adapt G+ integration and most of the changes were great, new G+ profiles were launched to replace Blogger profiles. But recently blogger added a new Google+ Follower Gadget which is to replace the GFC Follower gadget, as the social networking site by Google is trending a follower gadget by G+ can help you get lots of followers, as it is easier to follow a blog as compared to GFC but yet there are many fans of the old but gold GFC widget who want it.

Some months back GFC was retired for non-blogger sites and the GFC seems missing from blogger gadget list, looks like the G+ Follower gadget took it place but that's not the truth. You can use both G+ and GFC follower widget altogether in your blog, the Follower gadget haven't been removed it's still in the gadget list but in a different section.

Add Old GFC Follower gadget again ?

To add the old follower gadget again go to your Blogger Dashboard -> Layout -> Add a Gadget -> On the gadget list click 'Add More Gadget' on the left side. You will now find the GFC Follower gadget there, click on it's link and add it to your blog. Check the image below for reference

blogger gfc follower

The Thriller Template - Premium Blogger Template for free

Some months back I published a search engine friendly blogger template, which is a Wordpress class template and was premium too.
Do remember, that the template I am going to giveaway for free was a premium template. The reason I am giving it for free is that many blogger users, who weren't able to spend money on templates wanted it for free.

The name of this template is "The Thriller Template", yeah, it's thrilling and don't look like a dull blogger template. Not only it's good with the looks but also for search engine optimization, the process of creating this template wasn't limited just to designing the front-end look, the work was divided into two parts, one was to design it's look and other was to optimize it for search engine and yes, hours of our hardwork will give you an instant ranking on search engines.

Features

Note: Search engine optimization in templates is not considered as a feature.
The list of features of this template is long and we have previously listed it on this page 
http://www.stramaxon.com/2012/07/listverse-template-blogger-seo-friendly.html

Search Engine friendly, how?

There's no magic charm to make a template or layout search engine friendly, what we do is learn how search engine works and set the layout according to webmaster guidelines by Google. It includes using the correct heading tags for post titles, limiting the number of particular heading on a page and placing ads at it's correct place.

It is believed that WordPress blogs are better in terms of search engine optimization, but did anyone tried to know why ? It's because of there huge theme store where themes are kept up-to date according to the current web standards, there's no other reason, rest depends on your content. So even you using a template on your blogger with latest web standards used into, you can make your blog show up great on Google, Yahoo and other search engines. 


But we are bringing all the benefits to you for free. Here are the links to download it.
Thriller Template - Server 1 Thriller Template - Server 2


If you find any broken links or bugs in the template, report it in the comments.

Troubleshoot: No "Choose Files" in Image Uploader on Blogger

No "Choose Files" button appearing in the photo upload option in blogger ? It's a known issue and be fixed.

The new Blogger interface has many bugs and don't work properly with older versions of browsers and many functions in it are difficult to use. Recently blogger users are having difficultly in uploading photos to their post because of no "Choose files" in photo upload options.

What's the use of blogger if we can't even upload photos ? This is a frustrating problem but don't worry it can be fixed easily, there are two ways you can continue uploading pictures on your blog.

Use a new Browser

In this case the problem is with the browser, if you are using IE < 8  then try a newer and updated browser like Google Chrome. Download and install it here http://google.com/chrome

There's no such problem in blogger on Google Chrome so you can now upload your pictures again.

Use the Upload in HTML mode

Don't want to switch to another browser ? No worries, you can still upload photos with a more basic upload interface that might work in IE too. In the blogger post editor you have two accessible mode Compose | HTML switch to HTML mode and upload image from there.

Thanks to Katney and DarkUFO https://productforums.google.com/d/topic/blogger/4a7yTDWv8Vc/discussion
Note: This problem is reported to Blogger Engineers and they will soon fix it.


JavaScript 'Unexpected Token ILLEGAL' Error

Some errors in JavaScript are hard to find out and this is one of them, 'Unexpected Token ILLEGAL' message on your console can make you go crazy and re-check the code but if you didn't solve the problem read the post.

What can be worse than getting an error after writing a long JavaScript code ? 'Unexpected Token ILLEGAL' error is a frustrating one, it's often caused by an invalid character in the script. Most of the times you will find the unwanted character after thoroughly checking the script and then error is fixed but many times finding that unwanted character becomes a headache and to fix it we have to do something else than just checking the script again and again.

If you didn't find any invalid character in your code then it's obvious that the character is an hidden character and your are a JsFiddle fan. The invalid hidden character can be u200b (zero width space) or other hidden characters but how to find or fix it ? Good question, as the characters aren't visible how could we remove it ?

Removing whitespace in the code

If you want to fix it fast then the best way is to remove all the whitespace around and in the code and then run it. 

Testing your script with JSBin


If you use JsFiddle or some other code editing site/program which don't have support for ignoring or displaying invalid characters then this might always happen.

To check the code for an invalid characters use JsBin to find the invalid characters and remove it. Go to JsBin and paste your script in the left panel now your invalid hidden characters will be displayed as red dots, just remove those red dots and done, the code is now ready to use.

See this image :



To prevent it in future don't copy and paste the codes from JsFiddle or any other program that creates invalid hidden characters.

But there can be more reasons for this error and if you find one please tell us in comments. 

New Year Fireworks for Blogs and Websites

Everyone is eagerly waiting for the new year (2013,2014,2015,2016,2017) 2018 and everyone is celebrating it in their own different way.
You can also celebrate this new year in a different way by putting some amazing firework effects on your blog or website. This tutorial will teach you how to do it, the code we will provide can be used on any website.

See what you will get
Preview the Effect

The Code

The complete effect is created with JavaScript and all you need to do is copy-paste a JavaScript function in the <head> of your website

The code is very long so I didn't put it into this post. The code is quite long but don't worry it 

Using the code

This JavaScript can be used just by putting it in the head of the HTML of the page and the fireworks effect.

For Websites (everyone)

There are two ways to apply the effect on your website, one is to put the script directly on your website's main index file and other is to use the script externally with a .js file.
Script in <head>
Copy the entire code below
<script type="text/javascript">
// <![CDATA[
var bits=80; // how many bits
var speed=33; // how fast - smaller is faster
var bangs=5; // how many can be launched simultaneously (note that using too many can slow the script down)
var colours=new Array("#03f", "#f03", "#0e0", "#93f", "#0cf", "#f93", "#f0c");
// blue red green purple cyan orange pink

/****************************
* Fireworks Effect *
*(c)2004-14 mf2fm web-design*
* http://www.mf2fm.com/rv *
* DON'T EDIT BELOW THIS BOX *
****************************/
var bangheight=new Array();
var intensity=new Array();
var colour=new Array();
var Xpos=new Array();
var Ypos=new Array();
var dX=new Array();
var dY=new Array();
var stars=new Array();
var decay=new Array();
var swide=800;
var shigh=600;
var boddie;

if (typeof('addRVLoadEvent')!='function') function addRVLoadEvent(funky) {
var oldonload=window.onload;
if (typeof(oldonload)!='function') window.onload=funky;
else window.onload=function() {
if (oldonload) oldonload();
funky();
}
}

addRVLoadEvent(light_blue_touchpaper);

function light_blue_touchpaper() { if (document.getElementById) {
var i;
boddie=document.createElement("div");
boddie.style.position="fixed";
boddie.style.top="0px";
boddie.style.left="0px";
boddie.style.overflow="visible";
boddie.style.width="1px";
boddie.style.height="1px";
boddie.style.backgroundColor="transparent";
document.body.appendChild(boddie);
set_width();
for (i=0; i<bangs; i++) {
write_fire(i);
launch(i);
setInterval('stepthrough('+i+')', speed);
}
}}

function write_fire(N) {
var i, rlef, rdow;
stars[N+'r']=createDiv('|', 12);
boddie.appendChild(stars[N+'r']);
for (i=bits*N; i<bits+bits*N; i++) {
stars[i]=createDiv('*', 13);
boddie.appendChild(stars[i]);
}
}

function createDiv(char, size) {
var div=document.createElement("div");
div.style.font=size+"px monospace";
div.style.position="absolute";
div.style.backgroundColor="transparent";
div.appendChild(document.createTextNode(char));
return (div);
}

function launch(N) {
colour[N]=Math.floor(Math.random()*colours.length);
Xpos[N+"r"]=swide*0.5;
Ypos[N+"r"]=shigh-5;
bangheight[N]=Math.round((0.5+Math.random())*shigh*0.4);
dX[N+"r"]=(Math.random()-0.5)*swide/bangheight[N];
if (dX[N+"r"]>1.25) stars[N+"r"].firstChild.nodeValue="/";
else if (dX[N+"r"]<-1.25) stars[N+"r"].firstChild.nodeValue="\\";
else stars[N+"r"].firstChild.nodeValue="|";
stars[N+"r"].style.color=colours[colour[N]];
}

function bang(N) {
var i, Z, A=0;
for (i=bits*N; i<bits+bits*N; i++) {
Z=stars[i].style;
Z.left=Xpos[i]+"px";
Z.top=Ypos[i]+"px";
if (decay[i]) decay[i]--;
else A++;
if (decay[i]==15) Z.fontSize="7px";
else if (decay[i]==7) Z.fontSize="2px";
else if (decay[i]==1) Z.visibility="hidden";
if (decay[i]>1 && Math.random()<.1) {
Z.visibility="hidden";
setTimeout('stars['+i+'].style.visibility="visible"', speed-1);
}
Xpos[i]+=dX[i];
Ypos[i]+=(dY[i]+=1.25/intensity[N]);

}
if (A!=bits) setTimeout("bang("+N+")", speed);
}

function stepthrough(N) {
var i, M, Z;
var oldx=Xpos[N+"r"];
var oldy=Ypos[N+"r"];
Xpos[N+"r"]+=dX[N+"r"];
Ypos[N+"r"]-=4;
if (Ypos[N+"r"]<bangheight[N]) {
M=Math.floor(Math.random()*3*colours.length);
intensity[N]=5+Math.random()*4;
for (i=N*bits; i<bits+bits*N; i++) {
Xpos[i]=Xpos[N+"r"];
Ypos[i]=Ypos[N+"r"];
dY[i]=(Math.random()-0.5)*intensity[N];
dX[i]=(Math.random()-0.5)*(intensity[N]-Math.abs(dY[i]))*1.25;
decay[i]=16+Math.floor(Math.random()*16);
Z=stars[i];
if (M<colours.length) Z.style.color=colours[i%2?colour[N]:M];
else if (M<2*colours.length) Z.style.color=colours[colour[N]];
else Z.style.color=colours[i%colours.length];
Z.style.fontSize="13px";
Z.style.visibility="visible";
}
bang(N);
launch(N);
}
stars[N+"r"].style.left=oldx+"px";
stars[N+"r"].style.top=oldy+"px";
}

window.onresize=set_width;
function set_width() {
var sw_min=999999;
var sh_min=999999;
if (document.documentElement && document.documentElement.clientWidth) {
if (document.documentElement.clientWidth>0) sw_min=document.documentElement.clientWidth;
if (document.documentElement.clientHeight>0) sh_min=document.documentElement.clientHeight;
}
if (typeof(self.innerWidth)!="undefined" && self.innerWidth) {
if (self.innerWidth>0 && self.innerWidth<sw_min) sw_min=self.innerWidth;
if (self.innerHeight>0 && self.innerHeight<sh_min) sh_min=self.innerHeight;
}
if (document.body.clientWidth) {
if (document.body.clientWidth>0 && document.body.clientWidth<sw_min) sw_min=document.body.clientWidth;
if (document.body.clientHeight>0 && document.body.clientHeight<sh_min) sh_min=document.body.clientHeight;
}
if (sw_min==999999 || sh_min==999999) {
sw_min=800;
sh_min=600;
}
swide=sw_min;
shigh=sh_min;
}
// ]]>
</script>

Now open your main file or web page and paste it above </head>.

For Blogger Users

Instructions above can also be used for Blogger. But as Blogger users are not normally tech savvy, we will write the instructions briefly.
Script in head
Copy the following code

<script type="text/javascript">
// <![CDATA[
var bits=80; // how many bits
var speed=33; // how fast - smaller is faster
var bangs=5; // how many can be launched simultaneously (note that using too many can slow the script down)
var colours=new Array("#03f", "#f03", "#0e0", "#93f", "#0cf", "#f93", "#f0c");
// blue red green purple cyan orange pink

/****************************
* Fireworks Effect *
*(c)2004-14 mf2fm web-design*
* http://www.mf2fm.com/rv *
* DON'T EDIT BELOW THIS BOX *
****************************/
var bangheight=new Array();
var intensity=new Array();
var colour=new Array();
var Xpos=new Array();
var Ypos=new Array();
var dX=new Array();
var dY=new Array();
var stars=new Array();
var decay=new Array();
var swide=800;
var shigh=600;
var boddie;

if (typeof('addRVLoadEvent')!='function') function addRVLoadEvent(funky) {
var oldonload=window.onload;
if (typeof(oldonload)!='function') window.onload=funky;
else window.onload=function() {
if (oldonload) oldonload();
funky();
}
}

addRVLoadEvent(light_blue_touchpaper);

function light_blue_touchpaper() { if (document.getElementById) {
var i;
boddie=document.createElement("div");
boddie.style.position="fixed";
boddie.style.top="0px";
boddie.style.left="0px";
boddie.style.overflow="visible";
boddie.style.width="1px";
boddie.style.height="1px";
boddie.style.backgroundColor="transparent";
document.body.appendChild(boddie);
set_width();
for (i=0; i<bangs; i++) {
write_fire(i);
launch(i);
setInterval('stepthrough('+i+')', speed);
}
}}

function write_fire(N) {
var i, rlef, rdow;
stars[N+'r']=createDiv('|', 12);
boddie.appendChild(stars[N+'r']);
for (i=bits*N; i<bits+bits*N; i++) {
stars[i]=createDiv('*', 13);
boddie.appendChild(stars[i]);
}
}

function createDiv(char, size) {
var div=document.createElement("div");
div.style.font=size+"px monospace";
div.style.position="absolute";
div.style.backgroundColor="transparent";
div.appendChild(document.createTextNode(char));
return (div);
}

function launch(N) {
colour[N]=Math.floor(Math.random()*colours.length);
Xpos[N+"r"]=swide*0.5;
Ypos[N+"r"]=shigh-5;
bangheight[N]=Math.round((0.5+Math.random())*shigh*0.4);
dX[N+"r"]=(Math.random()-0.5)*swide/bangheight[N];
if (dX[N+"r"]>1.25) stars[N+"r"].firstChild.nodeValue="/";
else if (dX[N+"r"]<-1.25) stars[N+"r"].firstChild.nodeValue="\\";
else stars[N+"r"].firstChild.nodeValue="|";
stars[N+"r"].style.color=colours[colour[N]];
}

function bang(N) {
var i, Z, A=0;
for (i=bits*N; i<bits+bits*N; i++) {
Z=stars[i].style;
Z.left=Xpos[i]+"px";
Z.top=Ypos[i]+"px";
if (decay[i]) decay[i]--;
else A++;
if (decay[i]==15) Z.fontSize="7px";
else if (decay[i]==7) Z.fontSize="2px";
else if (decay[i]==1) Z.visibility="hidden";
if (decay[i]>1 && Math.random()<.1) {
Z.visibility="hidden";
setTimeout('stars['+i+'].style.visibility="visible"', speed-1);
}
Xpos[i]+=dX[i];
Ypos[i]+=(dY[i]+=1.25/intensity[N]);

}
if (A!=bits) setTimeout("bang("+N+")", speed);
}

function stepthrough(N) {
var i, M, Z;
var oldx=Xpos[N+"r"];
var oldy=Ypos[N+"r"];
Xpos[N+"r"]+=dX[N+"r"];
Ypos[N+"r"]-=4;
if (Ypos[N+"r"]<bangheight[N]) {
M=Math.floor(Math.random()*3*colours.length);
intensity[N]=5+Math.random()*4;
for (i=N*bits; i<bits+bits*N; i++) {
Xpos[i]=Xpos[N+"r"];
Ypos[i]=Ypos[N+"r"];
dY[i]=(Math.random()-0.5)*intensity[N];
dX[i]=(Math.random()-0.5)*(intensity[N]-Math.abs(dY[i]))*1.25;
decay[i]=16+Math.floor(Math.random()*16);
Z=stars[i];
if (M<colours.length) Z.style.color=colours[i%2?colour[N]:M];
else if (M<2*colours.length) Z.style.color=colours[colour[N]];
else Z.style.color=colours[i%colours.length];
Z.style.fontSize="13px";
Z.style.visibility="visible";
}
bang(N);
launch(N);
}
stars[N+"r"].style.left=oldx+"px";
stars[N+"r"].style.top=oldy+"px";
}

window.onresize=set_width;
function set_width() {
var sw_min=999999;
var sh_min=999999;
if (document.documentElement && document.documentElement.clientWidth) {
if (document.documentElement.clientWidth>0) sw_min=document.documentElement.clientWidth;
if (document.documentElement.clientHeight>0) sh_min=document.documentElement.clientHeight;
}
if (typeof(self.innerWidth)!="undefined" && self.innerWidth) {
if (self.innerWidth>0 && self.innerWidth<sw_min) sw_min=self.innerWidth;
if (self.innerHeight>0 && self.innerHeight<sh_min) sh_min=self.innerHeight;
}
if (document.body.clientWidth) {
if (document.body.clientWidth>0 && document.body.clientWidth<sw_min) sw_min=document.body.clientWidth;
if (document.body.clientHeight>0 && document.body.clientHeight<sh_min) sh_min=document.body.clientHeight;
}
if (sw_min==999999 || sh_min==999999) {
sw_min=800;
sh_min=600;
}
swide=sw_min;
shigh=sh_min;
}
// ]]>
</script>

Go to your Blogger Dashboard -> Template -> Edit HTML -> Use CTRL+F to find </head> in your template. When you find it, just paste the code (with <script> tag) above </head> and save the template.

Hide the effect on Post Pages

The fireworks are okay on pages other than post. Some people might get disturbed by the fireworks while reading. So if you don't want the fireworks on your post pages then just put your complete code (along with <script> tag) between this Blogger Conditional tag :
<b:if cond='data:blog.pageType != "item"'> 
//Paste your final code here with <script>
</b:if>
Now just put it above </head> in your template and work done !

Any Suggestion ?

If you have any suggestion regarding this post, you can post it in comment. And also comment if you liked this fireworks effect. 

Thanks for reading and a very very Happy New Year !

Select more than 50 Friends on Facebook using JavaScript

Some months back I wrote a post that shows how to select all friends at once on Facebook using a small JavaScript snippet and it works good but there's one problem that needs to be fixed and this post is about it.
Writing a Facebook post after a long time. People uses Facebook to keep up with their friends and families, you can create events and invite others to your event but the inviting section is very boring as you have to select one and every check box manually and if you have 1000s of friends then it's sure you are going to have a bad time. But with some smart codes we can let the computer do all the selecting for us.

The script I provided in this post worked great for many people http://www.stramaxon.com/2012/02/how-to-select-all-friends-at-once-to.html . But one problem that everybody reported me was that they can only select 50 people at once (this is the number of people appears by default in invite box). It's is very easy to get rid of these problem and select all of your friends by only running the script once. Let's recall the script and then we will learn how to solve this problem.

This is the JavaScript code you may have used to invite all friends at once :
javascript:elms=document.getElementsByName("checkableitems[]");for (i=0;i<elms.length;i++){if (elms[i].type="checkbox" )elms[i].click()};
And if you don't know how to use this code then check the link above.

How to select all friends at once

No, you don't have to use another code to do this. To better understand the trick I suggest you to watch the screencast. First the writing tutorial and then the video.

Tutorial

It's is very easy, just read every instruction carefully to be successful.
  1. Create an event and then click on the 'Invite Friends' button on the top right corner.
  2. Wait for the box with the name of your friends to be opened
  3. When it's completely loaded, select the first check box
  4. And without clicking anywhere outside the box press and hold Page Down button on your keyboard, it is just above your arrow keys.
  5. Hold it until the complete list of your friend appears in the box. 
That's great, now all you friends are visible in the invite box, so now when you run the code it will select every one. Great, it's now easier for you to invite all your friends.

Video Tutorial



Anyways, some people using different browsers were having difficulties opening developer console on their browser, so here's a list of browsers and the command to use to open the developer console.

  1. Google Chrome - CTRL+SHIFT+J
  2. Mozilla Firefox - CTRL+SHIFT+K
  3. Safari - CMD + OPT + C [mac] / CTRL + ALT + C [win]
If your browser isn't listed here, you can check your browser's documentation online for help.

    Embed PDF or Docs File In Blog Posts

    File formats like PDF, Docx, PPT etc. are used widely to share documents digitally. In this post we will talk about embedding or attaching such files into a blog post. This method can be used on any blogging platform.
    Document files like PDF are used to share documents from one person to another but sometimes people needs to implement it in a blog post which can be shared with multiple readers.

    You can even upload a document file on your host and then share the direct link but it's not a good idea to share the document like that, as it's not sure how Google or other search engines will treat the files. The best way is to embed the file using HTMLs <iframe> element. The idea is simple but procedure is long but once you understand the method you will be able to do it yourself.

    Embedding Files

    HTML is the language of the www and I am sure your blogging platform also uses HTML for posts. We will use the iframe element to embed the files on blog posts (using too many iframe or making a loop with iframe can make your website slow). Follow the instructions :

    Uploading the File on Google Docs

    First of all we need to upload the file to a host and Google Docs/Drive is the best for this purpose. Go to https://drive.google.com/ sign-in and click on the upload button (next to the Create button), browse to the file and upload it.

    When the uploading is done click on the the share

    Now a new box will appear, click on the 'Change' link under Who Has Access To It, again a new box may appear just select the Public On The Web radio box under Visibility Option and click on the Save Button. This will make the document visible to everybody, you can also specify who can view the doc. you just need to enter their email addresses. 

    Getting the Embedding Code

    After changing the visibility settings we will need the iframe code to embed it on a blog post. To do that click on the file and a new window will be opened, click on File on the menu-bar and then select Embed this PDF File or other file format, you will then get the iframe code. It may look like this
    <iframe src="https://docs.google.com/file/d/0B2jVGjwW6nn5dWtKb000UnQ2eHM/preview" width="640" height="480"></iframe>
    The URL in src attribute might be different.

    If you want to change the width or height of the iframe just change the values in width or height attribute.

    Implementing the code in Blog post

    The final step is to use the iframe code. You can easily implement the code in a HTML file or a blog post from your editor. Make sure your blog post editor supports editing HTML. Blogger, WordPress and most of the Blogger platforms have HTML friendly blog post editor.
    For Bloger
    Open your post editor and you will see a button that says 'HTML', click on it and you will be in the HTML editing mode, so this is where you will place your iframe code. Paste the code anywhere in the post, make sure it's not between another format markup. Publish or Update the post and you can then view the document from your blog post.
    For WordPress
    The procedure is same. Switch to the HTML mode and place the code wherever you want the document iframe to appear.

    That's it. You are done attaching document to your blog post. 

    Your Feedback

    Tell us how you got helped with this tutorial or how we can improve this tutorial. Drop your suggestion in the comments.