Laith Zraikat

I Innovate, Therefore I Am.

Jeeran Imports Blogger.com

I am so thrilled to announce that "Jeeran Blogs" is officially out of beta phase.
A lot of enhancements have been put in, including a prettier UI. The most significant feature in this update is the Blogger Importer. If you want to move from Blogger.com to Jeeran Blogs, you can now take all you posts and comments along. Nothing is left behind ?, and with no hassle at all. All you have to do is submit a request to our support team and they will do the rest.

Among the people who moved to Jeeran during the testing phase and who we want to thank are:
Read more about our Blogger Importer.

Another major enhancement is the ability to further customize the look of your Blog. We have given you full control over your template's CSS code, which means that you can change almost any element in your Blog.

Thanks goes to the entire Jeeran team on a job well done; Developers, writers, designers, testers and most importantly our customer support for helping our members and keeping then happy ? And to our partners who continue to help and support us in our mission to change the world.

More amazing things to come from Jeeran, so stay tuned. This is just the beginning.

Amazon Associate Books Rotator for your Blog using AJAJ

Last week I wanted to list some of the books that I've read and/or recommend. So I thought I'd also make some money while I'm at it. I created an Amazon reseller account and stared creating affiliate links.

Since Amazon does not have an automated way to generate code that will rotate several books, I decided to create one using JavaScript Asynchronous Callback and JSON.

This small solution consists of 2 files:
1. books.txt: contains the list if ISBN's for the books
2. books_json.js: JavaScript file that contains the code which will retrieve the list of ISBN's through xmlHTTPRequest, and then pick a random book and displays it.

This is how the code looks:

Book.txt:

{"Book":
[
{"Code": "0393058581"},
{"Code": "1590595009"},
{"Code": "1590593898"},
{"Code": "0385483821"},
{"Code": "0684855542"},
{"Code": "0375727205"}
]
}

Books_json.js:

// Settings you can modify
var affiliateID = "numbersixteen-20";// Your amazon associate ID
var Width = "120px"; // Box Width
var Height = "240px";// Box Height
var fcl = "000000";// Text Color
var lcl = "0000ff"; // Link Color
var bcl = "000000";// Frame (border) color
var bgl = "ffffff"; // Background color

//Ony modify if you know what youre doing
var dataURL = "/books.txt";

//Create the XMLHTTPRequest object
var requester;
try
{
requester = new XMLHttpRequest();
}
catch (error)
{
try
{
requester = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (error)
{
requester = null;
}
}

// Open the XMLHTTPRequest, set the method to GET, give it the URL to fetch and set (Asynch = true) so the rest of the page can still download while the data is downloaded

requester.open("GET", dataURL, true);
requester.send(null);

// When the request is done, we call stateHandler which will perform the the needed actions IF we actualyl got a response.
requester.onreadystatechange = stateHandler;

function stateHandler()
{

// The XMLHttpRequest has finished requesting the data
if (requester.readyState == 4) {

// The data was receieved successfully
if (requester.status == 200)
{
// There no need ot do anything if no text was received.
if (requester.responseText != "")
{
// Get the JSON list of book ISBN's and compile it
var Books = eval( '(' + requester.responseText + ')' );
// Generate a random index from the Books Object
var whichBook=Math.floor(Math.random()*(Books.Book.length));
// Get the Book ISBN
var Book = Books.Book[whichBook].Code;
requester = null;
// Build the HTML code to place in the page
var amazonCode = "<iframe src='http://rcm.amazon.com/e/cm?t="+ affiliateID +"&o=1&p=8&l=as1&asins="+Book+"&fc1=" + fcl + "&IS2=1&lt1=_blank&lc1=" + lcl + "&bc1=" + bcl + "&bg1=" + bgl + "&f=ifr' style='width:"+Width+";height:"+Height+";' scrolling='no' marginwidth='0' marginheight='0' frameborder='0'></iframe>";
// Dump the HTML code on the page
document.getElementById('bookList').innerHTML = amazonCode;
}
}
else
{
requester = null;
}
}
return true;
}

Installation on your blog:
1. Upload the JavaScript and Data files into the root folder of your web site
2. Add the following in your HTML where you want the books to appear:

<div id="bookList" name="bookList"></div>
<script type="text/javascript" src="/books_json.js"></script>

Download the source code and example:
books_json.zip

In case you want a version that uses XML, here it is:
books_xml.zip

AHAH! the proof!

A new acronym is picking up. I can't believe this is happening again, but its good this time, because this new acronym goes to prove that the first one was not solid.

I guess since there are AJAX specialists, then we'll expect to see AHAH specialists. But I doubt any of them will have the guts to say it in a conversation ... "I'm an AHAH! specialist" ... the other guy will go "What? what did I do?"

After blogs. From content management to knowledge management

Although many complex CMS's have been developed over the years- each applying its own methodology for creating content- none has been powerful and easy enough at the same time. This gap has finally been filled by the concept of Weblogs.

The power of the Weblogs stems from the sheer simplicity it provides, opening the door to millions of people to create content and publish online. Finally, blogs have become an essential part of any web site, and in most cases are themselves standalone web sites. Soon, saying "web site" will almost always mean "Blog". And having a web site will be like having an email address.

The fact that we have made it easy for people to throw more and more content online, a gap has naturally formed between the traditional search engines with their smart bots probing the web and their ability to keep up with the new content being created every second. Not only in terms of quantity, but in terms of making sense of all that content.

In the old days, a smart bot if given an random 100 web pages to comprehend, and has a success rate of 50% will be deemed very successful because in those days, the 50% that is comprehensible by the bot is the actual important content, while the other 50% most likely includes more garbage and un-important material.

Why? In those days, only corporates, businesses, institutions, and web savvy individuals were able to create and publish content. Publishing content was part of an organized development process, which made sure the content was properly formatted and optimized for search engine indexing, and -in a lot of cases- was actively being submitted to more than one major search engine.

Nowadays however, my little cousin –all my little brothers have grown up- can have a web site up and running in 5 minutes. And with all the little cousins in the world doing the same, I can only imagine the look on search engine engineers.
Online publishing has been spreading with free hosting services like Jeeran, Geocities, Tripod, AngelFire... providing easy-to-use tools for people to build websites. But with blogs, an explosion occurred in the number of new web sites being created every day. The question: Now what? Blogs have answered the question of content management. We now need to answer the question of knowledge management.

Managing knowledge is very different from managing content, simply because content management (the production and management of raw text and other media) is one element of knowledge management (the organization and presentation of content based on understanding and verifying it).

The answer to some parts of the puzzle has come in the form of tagging, which has changed the way we organize content in two ways: The first is by replacing the concept of categorization which has been a limiting factor in almost all content management systems, because no one topic is limited to one or two or even ten categories. The second is by being a purely human activity, which meant better accuracy in determining the full scope of topics and meanings addressed by any piece of content. So we can safely say that after being tagged, content can start to be called "knowledge".

Other parts of the puzzle are still waiting to be answered, like the issue of quality and validity; What determines if this or that content is useful and of good quality? Of course you Google the topic first, then skim through a few articles and decide. But this is an opportunity for the extremely competitive multi-billion dollar search engine industry that will not be left unaddressed.

I believe we will see more and more innovations that will greatly enhance the presentation of content and our ability to consume and make use of it. This will open the door for smaller and more specialized sites/engines which cover a specific topic, organizing and presenting relevant information in a way that is geared towards a specific audience. If you look closely, this is already happening.

Don't Stress out on Anonymous Blogging

This issue will always haunt us wherever we go on the Internet. It has always existed in chat rooms, discussion boards, instant messaging, ...etc and will only grow with the growth of the social Internet. So are we trying to solve a problem which isn't solvable?

I think there are two groups of people who will keep abusing blogging and any other technology that comes along to help people speak out and communicate:

One group are the flat out imposters who are out to slander someone or some entity or spread rumors in favor of a private agenda or to soothe their sick minds. But since "the truth is out there" and thanks to technologies coming out every day to help you find it, those people will by nature be eliminated from the blogosphere because they won't have any serious readership.

The second group are people with a truly just cause, but hide their identity in fear of persecution by their governments, families, or even employers. Those will continue to write what's on their mind and will develop a significant following.

While I prefer that everyone reveal their identities when they Blog, I understand that there are those in other countries who will be in great danger if they do. Some things if said on the streets of Amman might mean nothing more than an expression of opinion, where in some other Arab country, might warrant an arrest or a prison term.

Last month I wrote about an idea for implementing a web engine which will help Blog readers to determine the quality of a blogger. Validity and reliability being two integral traits of a quality blogger, I think such a universal engine can help in solving "some" of the problems introduced with anonymous blogging.

However, I still believe that the problem will resolve itself by people who are smart enough to recognize a bull**** blog, or at least do some research before taking any piece of information as fact.

So you've eliminated page refresh!

The hype is still on. "A.J.A.X." Frameworks are being developed to help programmers develop web applications that do not refresh. There's a lot of talk about doing it, but not enough about why it needs to be done. Do we really want to develop such applications on such a wide scale? Are users actually requesting that?

I personally refuse to believe that users dislike the page refresh nature of the internet and are more interested in seeing applications that don’t refresh between requests.

I believe Internet users care more about innovative applications, page loading speed, ease of use, and an error free experience. Whether the page refreshes after clicking a button or not becomes trivial if the application sucks, or if it takes too long to send back a request, or even worse, if you get an error. One could also argue that Internet users are now so used to seeing the page refresh that it doesn’t bother as many of them as it used to.

As a developer I do advocate the use of asynchronous callbacks (or Remote Scripting) when it is absolutely "needed" in "some" parts of your application, and when it improves the user experience without adding unnecessary confusion for the user or the developer.

Due to the disconnected nature web applications, complexities will arise for developers when this problem is amplified in an environment using remote scripting for the following reasons:

  • You can’t easily debug JavaScript. Take it from me, it is a nightmare to develop.
  • You can't log errors that occur on the user side without writing separate routines to send back error details to your server "asynchronously".
  • Special routines have to be written to enable the application to break down gracefully in case of an error without scaring the user while still informing her of the error.
  • Different browser standards for implementing remote scripting.

Finally, take Microsoft for example, they did not use remote scripting in their MSN Web Messenger. It could have used less refreshes, but I guess MS are aware of the complexities involved, and they wanted to keep their application as error free and as compatible with all browsers as possible.

The best RSS reader for Pocket PC

I was having problems with my previous RSS reader which only recognized the titles from Blogger feeds, and not always recognized Jordan Planet feeds. It also did not support auto synchronization. After trying several applications, I came across RSS Sync (http://www.viksoe.dk/code/rsssync.htm)

I found it to be extremely efficient, easy to use, and supports all kinds of feeds. Best of all, it integrates with ActiveSync letting me manage my feeds from the pc rather than the tiny PPC screen. It also automatically synchronizes feeds one the PPC is docked. Oh, and it's FREE!

Gravatars are cool!

Now, if you have a Gravatar registered with your email address, it will appear automatically when you post a comment using that e-mail address on any of the thousands of blogs that we host.

For those who don’t know what a Gravatar is; It stands for "Globally Recognized Avatar". It’s a personal Icon that will appear next to your name if you post topics of comments to any Gravatar enabled blog or discussion board. It will be tied to the email address you registered it with, so you'll have to use the same e-mail address on those sites.

To get your Gravatar go to: www.gravatar.com

Quality blogs or just blogs?

We love what Google has done with it's Blog Search. We love Technorati because it doesn’t just randomly index our blogs, but rather enables blogs and their content to be tagged by people and ranked based on how popular it was (traffic). We simply love the way all the search engines are optimized for searching blogs –one way or another. But amidst all of this, and with the growing popularity of blogging, there is a need that has gone un-answered; The need to find good quality bloggers.

I really can't remember the last time I used Google Blog search or Technorati to find a good Blog. The way I usually find the high quality blogs is through word of mouth, other good blogs, or through blogging communities like Jordan Planet.

Take this scenario; I read a good blogger who reads several other bloggers, so I end up catching one or two of them, who turn out to be really good as well. This is how I was introduced to a large percentage of the blogs I read.

So in addition to all the lightning fast search engines and the neatly tagged directories that are popping up here and there, we need an engine to rank bloggers based on human recommendation.

The base for such an engine would be the OPML (or Blog roll) feed which is currently used for sharing RSS feeds between bloggers. This is because OPML is already being used in a sense for recommending other blogs to readers, and because there is not one good reason why not to use it.

The engine would start with a group of hand-picked blogs which will act as the seeds, or supreme court which will kick-start the recommendation process, resulting in more blogs being added to this (seed group). Seed blogs can recommend other blogs by adding them in their Blog roll, which is picked up by the engine and recorded. Based on these recommendations, any Blog will have the chance to become a seed Blog and play a part in recommending other blogs.

Assuming that the first seed of bloggers are top notch, covering a wide variety of topics, then this engine would hold the largest variety of hand-picked content which is worth reading, anywhere on the web.

I think this would make a nice idea for an open-source project.

The Dot-Com Trash

Today instead of going to google.com, I accidentally typed "googgle.com". I wasn't surprised to see one of those generic web directories that run on thousands of domain names that nobody wants, still, it made me think: "what's their business model? how would their business plan read?"

I imagine their business plan would be filled with lots of medical research and statistical analysis on the human brain and its psycho-motor error margin, and how this results in the typing of the wrong domain name, and failing to click the stop button fast enough before the browser takes the user to one of those sites, and hoping he will be air-headed enough to say to himself : "oh, let me see,... this search directory may be better than Google, let me try it". And then hoping he would click on one of their Overture ads which are displayed instead of search results.

So in short, their company mission would read "To change the way people perceive stupidity, and turn it into a positive and constructive experience.", and their vision "To give all the stupid, air-headed, half-asleep internet users a place where they can feel at home". Those sites are called "typosquatters", and they make alot of money, but that doesn't mean I will respect them.

To know more about typosquatters, read this article.



<<Home