<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>the Fictional Realm</title>
	
	<link>http://fictionalrealm.com</link>
	<description>Some wicked thoughts and ideas</description>
	<lastBuildDate>Wed, 04 Aug 2010 07:21:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/TheFictionalRealm" /><feedburner:info uri="thefictionalrealm" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Error: Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause</title>
		<link>http://feedproxy.google.com/~r/TheFictionalRealm/~3/3pc359A1m-4/</link>
		<comments>http://fictionalrealm.com/2010/08/error-incorrect-table-definition-there-can-be-only-one-timestamp-column-with-current_timestamp-in-default-or-on-update-clause/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 05:25:53 +0000</pubDate>
		<dc:creator>Yervand Aghababyan</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[databases]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://fictionalrealm.com/?p=306</guid>
		<description><![CDATA[This is a really small article and i&#8217;m not yet sure if i&#8217;m going to write many of these  in the future. But lets get to the point itself :) I got &#8220;Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause&#8221; error when creating a table [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffictionalrealm.com%2F2010%2F08%2Ferror-incorrect-table-definition-there-can-be-only-one-timestamp-column-with-current_timestamp-in-default-or-on-update-clause%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffictionalrealm.com%2F2010%2F08%2Ferror-incorrect-table-definition-there-can-be-only-one-timestamp-column-with-current_timestamp-in-default-or-on-update-clause%2F&amp;source=dnavre&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>This is a really small article and i&#8217;m not yet sure if i&#8217;m going to write many of these  in the future. But lets get to the point itself :)</p>
<p>I got &#8220;Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause&#8221; error when creating a table as shown bellow with <a href="http://www.webyog.com/en/">SQLyog</a> probably the best MySql GUI available at the moment</p>
<pre class="brush: sql;">
CREATE TABLE classroom (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`modifyDate` TIMESTAMP ,
`createDate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
PRIMARY KEY (`id`)
)
</pre>
<p>this error is fixed by adding &#8220;NULL DEFAULT NULL&#8221; to the modifyDate field as in the code bellow</p>
<pre class="brush: sql;">
CREATE TABLE classroom (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`modifyDate` TIMESTAMP NULL DEFAULT NULL,
`createDate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
PRIMARY KEY (`id`)
)
</pre>
<p>i&#8217;ve got 5.1.41 MySql and this is probably a bug, and i have no idea if it&#8217;s fixed in later builds :)</p>
<img src="http://feeds.feedburner.com/~r/TheFictionalRealm/~4/3pc359A1m-4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://fictionalrealm.com/2010/08/error-incorrect-table-definition-there-can-be-only-one-timestamp-column-with-current_timestamp-in-default-or-on-update-clause/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://fictionalrealm.com/2010/08/error-incorrect-table-definition-there-can-be-only-one-timestamp-column-with-current_timestamp-in-default-or-on-update-clause/</feedburner:origLink></item>
		<item>
		<title>HOWTO: Choosing a good domain name</title>
		<link>http://feedproxy.google.com/~r/TheFictionalRealm/~3/N0YANLqg3Ic/</link>
		<comments>http://fictionalrealm.com/2010/03/howto-choosing-a-good-domain-name/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 21:14:05 +0000</pubDate>
		<dc:creator>Yervand Aghababyan</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Useful Tools]]></category>
		<category><![CDATA[domain name]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[trademarks]]></category>
		<category><![CDATA[URLs]]></category>

		<guid isPermaLink="false">http://fictionalrealm.com/?p=293</guid>
		<description><![CDATA[So this is one of the things i hate the most! And this hated moment of choice arises nearly every time you start doing something new. I really can't say that i'm good at this but i know some guidelines you should follow when choosing a domain name and some ways to help you to come up with something sane. So lets start with the guidelines.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffictionalrealm.com%2F2010%2F03%2Fhowto-choosing-a-good-domain-name%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffictionalrealm.com%2F2010%2F03%2Fhowto-choosing-a-good-domain-name%2F&amp;source=dnavre&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://fictionalrealm.com/wp-content/uploads/2010/03/proper_domain_name.jpg"><img class="size-medium wp-image-300 alignright" style="border: 1px solid black;" title="proper_domain_name" src="http://fictionalrealm.com/wp-content/uploads/2010/03/proper_domain_name-300x187.jpg" alt="Selecting a proper domain name" width="300" height="187" /></a>Okay . . .  So this is one of the things i hate the most! And this hated moment of choice arises nearly every time you start doing something new. I really can&#8217;t say that i&#8217;m good at this but i know some guidelines you should follow when choosing a domain name and some ways to help you to come up with something sane &amp; proper. So lets start with the guidelines.</p>
<p><span id="more-293"></span></p>
<p><strong><span style="text-decoration: underline;">Guidelines you should follow</span></strong></p>
<ul>
<li><strong>Domain name = Website name</strong> Your domain name and the name of your business/website/organization should match. When the user clicks a link and lands on your website they don&#8217;t look at the address bar, they look at the title and guess what? they remember the title! So if they want to enter the website they visited yesterday they&#8217;ll type in the name of your website and hit enter. It&#8217;s in your best interest for the name to match with the domain name.</li>
<li><strong>.com rule</strong> Unless you&#8217;re not a non-profit organization(.org), governmental/educational institution(.gov/.edu), an internet related company(.net) or a business targeting UK (use co.uk in this case) go with the .com that&#8217;s what people will try first if they don&#8217;t remember your exact address. That&#8217;s what most of the browsers try appending to the end of address if it wasn&#8217;t found. And finally that&#8217;s what looks good!</li>
<li><strong>&lt; 10 characters </strong>The shorter your domain is &#8211; the better. Usually it&#8217;s desirable to have domain names shorter than 10 characters unless the words in it are really memorable. Using more than 2 words is also undesirable in most cases. I know it&#8217;s hard to follow this(most of 2 word name are already occupied) but do you best before buying someveryverylongshit.com.</li>
<li><strong>Google it first </strong>before buying. Suppose you&#8217;ve decided to name your website kakashka (gibberish names are very popular at the moment cause most of the non gibberish ones are already bought) just googling it will tell you that that&#8217;s not really something you want your business to be called(kakashka means shit in Russian). Besides that there&#8217;s always a chance that there&#8217;s something popular with that name already. If this is the case then climbing the Google result staircase to the first row will get much harder for you.</li>
<li><strong>No dashes, plural form, &#8220;The&#8221;, &#8220;My&#8221; or anything alike. </strong>Do you best to avoid the use of any of the mentioned unless it&#8217;s used not just because the original name was already bought &amp; there&#8217;s a meaning in the use ( like myspace.com ). Generally if you want your website to be named my-domain-name.com you should also buy mydomainname.com and set a redirect on it to point to the one with dashes. The same works for the plurals, &#8220;The&#8221; &amp; &#8220;my&#8221;. Also if you use dashes in your domain name it will get wrapped by many text editors which IMO ain&#8217;t a good thing.</li>
<li><strong>Memorable &amp; easy to pronounce. </strong>Your domain should be memorable and easy to pronounce so that if someone tells his friend on the phone your address (BTW this is the most effective viral channel) they won&#8217;t have to spell the address. For example your domain name almost certainly will have to be spelled if it contains &#8220;ph&#8221; instead of &#8220;f&#8221;, &#8220;y&#8221; instead of &#8220;i&#8221; or r instead of &#8220;er&#8221;. This kind of thing get less important once you gain huge popularity but things like these you never know beforehand.</li>
<li><strong>Trademarks, </strong>respect them. Don&#8217;t name your website betterthanamazon.com or iphonesotfware.com or anything else containing trademarks. Basically the trademark owner may really quickly take over any domain you have registered with his trademark in it.</li>
</ul>
<p>Looks like that&#8217;s it. Those are all the rules i know of which you should follow when buying a domain name.</p>
<p><strong><span style="text-decoration: underline;">How to come up with a good domain name</span></strong></p>
<ul>
<li>First of all i&#8217;d like to note that using your browser to check if the domain name is in use is a really-really bad idea :) Use services like <a href="http://www.bustaname.com/">BustAName</a> or <a href="http://www.godaddy.com/">GoDaddy</a> to check for available domains.</li>
<li>Make up a list of words &amp; short phrases that are relevant to your business/organization. Consider adding some of the &#8220;Web 2.0&#8243; words to the list (words like feed, cloud, buzz, blog &amp; others). Try mixing them with one another to get something what&#8217;s not in use already. Most likely you won&#8217;t be very successful at this. So in case you fail there are a couple of good resources i know of which will help you to mix your words &amp; to come up with some new ones. The <strong>first</strong> one is <a href="http://www.dotomator.com/">Dotomator.com</a> this one is particularly good cause it has a huge list of words &amp; word parts in it  which you can mix the the words you&#8217;ve already came up with yourself. The <strong>second </strong>service you may find very useful is <a href="http://thesaurus.reference.com/">Thesaurus.com</a> which gives you list of synonyms for your words (is very helpful when you run out of words and need some new ones).</li>
<li>Write down a list of short adjectives (hot, cool, red, new, old . . .) and try combining them with your existing world list and see if something sensible is not occupied already.</li>
<li>Consider naming your website after some animal, plant or something other completely unrelated to you business but memorable. IMO it&#8217;s okay  for a image editing software being hosted on hippo.com BTW this kind of domain name also provides a logo idea.</li>
<li>Consider inventing your own word for the domain name. It should sound good, be easy to pronounce &amp; do not require itself to be spelled out when one tells his friend about your website. This has a little caveat though: for users it may be harder to remember that selfinvented word than something they understand but I don&#8217;t think this is really that big of an issue.</li>
<li>Do not hurry</li>
</ul>
<p>In the end i&#8217;d like to note that the last time i bought a domain name it took me 2+ weeks to decide what i want it to be. If you know of some other way to help out in this please comment about it and i&#8217;ll add it here.</p>
<p><strong><span style="text-decoration: underline;"><br />
</span></strong></p>
<img src="http://feeds.feedburner.com/~r/TheFictionalRealm/~4/N0YANLqg3Ic" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://fictionalrealm.com/2010/03/howto-choosing-a-good-domain-name/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://fictionalrealm.com/2010/03/howto-choosing-a-good-domain-name/</feedburner:origLink></item>
		<item>
		<title>Number Base Converter, converts numbers from any base to decimal and vice-versa</title>
		<link>http://feedproxy.google.com/~r/TheFictionalRealm/~3/KKA4tDzp_J4/</link>
		<comments>http://fictionalrealm.com/2009/12/number-base-converter-converts-numbers-from-any-base-to-decimal-and-vice-versa-2/#comments</comments>
		<pubDate>Sun, 27 Dec 2009 19:54:48 +0000</pubDate>
		<dc:creator>Yervand Aghababyan</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Math & Algorithms]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[algorithms]]></category>
		<category><![CDATA[base converting]]></category>
		<category><![CDATA[bcmath]]></category>
		<category><![CDATA[big numbers]]></category>
		<category><![CDATA[huge numbers]]></category>
		<category><![CDATA[numbers]]></category>
		<category><![CDATA[short urls]]></category>
		<category><![CDATA[tiny urls]]></category>

		<guid isPermaLink="false">http://fictionalrealm.com/?p=265</guid>
		<description><![CDATA[Keep in mind that if you just want to address some URL in a short way then you don&#8217;t really need to read this article. You just have to use one of the multitude of services which provide URL mapping to tiny, generated URLs. Some of those services are: http://tinyurl.com/, http://u.nu/, http://bit.ly/. Just use the [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffictionalrealm.com%2F2009%2F12%2Fnumber-base-converter-converts-numbers-from-any-base-to-decimal-and-vice-versa-2%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffictionalrealm.com%2F2009%2F12%2Fnumber-base-converter-converts-numbers-from-any-base-to-decimal-and-vice-versa-2%2F&amp;source=dnavre&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Keep in mind that if you just want to address some URL in a short way then you don&#8217;t really need to read this article. You just have to use one of the multitude of services which provide URL mapping to tiny, generated URLs. Some of those services are:  <a href="http://tinyurl.com/">http://tinyurl.com/</a>, <a href="http://u.nu/">http://u.nu/</a>, <a href="http://bit.ly/">http://bit.ly/</a>. Just use the one you find the sexiest ;)</p>
<p>What i needed was a way to <strong>make URLs on my website as short as possible</strong>. I had a huge list of numbered entries each of which had it&#8217;s own unique ID and a URL looking like this: mywebsite.com/entries/789465479916 .  The best way of making the last number part of the URL as short as possible i found is converting the huge decimal number to the base of 62. Why 62? Because we&#8217;ve got 62 alphanumerical symbols there (0-9a-zA-Z) !</p>
<p>The first thing i found after some googling is that <strong>php actually provides a function named <a href="http://php.net/manual/en/function.base-convert.php">base_convert()</a></strong> which does what i want. <strong>BUT! It doesn&#8217;t support base of 62 and really huge numbers.</strong> A little disappointed i left this function be and resumed my search of the ideal solution! :D</p>
<p>In the comments of <a href="http://php.net/manual/en/function.base-convert.php">base_convert()</a> i found a wonderful <a href="http://www.php.net/manual/en/function.base-convert.php#52450">comment</a> doing nearly exactly what i want. The only bad thing about it was that <strong>it didn&#8217;t support bug numbers</strong>. So i <strong>modified the code to use the <a href="http://php.net/manual/en/book.bc.php">bcmath</a> php extension which provides support of huge number calculations</strong>. Bellow is the modified code.</p>
<p><span id="more-265"></span></p>
<pre class="brush: php;">
/**
 * BaseConverter provides support of number convertion from any base to
 * decimal base and vice-versa.
 * The code was originally written here:
 * http://www.php.net/manual/en/function.base-convert.php#55204
 * and was afterwards modified to support big number calculations.
 *
 * &lt;b&gt;WARNING!&lt;/b&gt; This code requires your PHP installation to have
 * enabled BCMath extension. See here for more details:
 * http://php.net/manual/en/book.bc.php
 *
 * @author Yervand Aghababyan ( http://fictionalrealm.com )
 * @version 1.0
 */
class BaseConverter {
	/**
	 * Digit list used for conversions to and from base 62
	 * @var string
	 */
	private static $digitList = &quot;0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ&quot;;

	/**
	 * Converts $num number from decimal base to any custom base
	 *
	 * @param $num Your decimal integer. Should be passed as a string if it's
	 * 					bigger than float's maximum value
	 * @param $base Base to which you wish to convert $num (leave it 0 if you
	 * 					are	providing $index or omit if you're using the
	 * 					default base (62))
	 * @param $index If you wish to use the default list of digits
	 * 					(0-1a-zA-Z), omit this option, otherwise provide
	 * 					a string (ex.: &quot;zyxwvu&quot;)
	 * @return string converted number
	 */
	public static function dec2any($num, $base = 62, $index = false) {
		if (!$base) {
			$base = strlen ($index);
		} else if (!$index) {
			$index = substr (self::$digitList, 0, $base);
		}

		$out = &quot;&quot;;
		for($t = floor(log( $num, $base)); $t &gt;= 0; $t--) {
			$a = bcdiv($num, bcpow ($base, $t ), 0);
			$out = $out . substr ($index, $a, 1);
			$num = bcsub($num, (bcmul($a, bcpow($base, $t ))));
		}

		return $out;
	}

	/**
	 * Convert number from Custom base to Decimal
	 * @param $num Your custom-based number (string) (ex.: &quot;11011101&quot;)
	 * @param $base Base with which $num was encoded (leave it 0 if you
	 * 					are providing $index or omit if you're using the
	 * 					default base (62))
	 * @param $index If you wish to use the default list of digits
	 * 					(0-1a-zA-Z), omit this option, otherwise
	 * 					provide a string (ex.: &quot;abcdef&quot;)
	 * @return string decimal number
	 */
	public static function any2dec($num, $base = 62, $index = false) {
		if (! $base) {
			$base = strlen ( $index );
		} else if (! $index) {
			$index = substr ( self::$digitList, 0, $base );
		}

		$out = 0;
		$len = strlen($num) - 1;
		for($t = 0; $t &lt;= $len; $t ++) {
			$out = bcadd($out, bcmul(strpos($index, substr($num, $t, 1 )), bcpow($base, $len - $t )));
		}

		return $out;
	}

}
</pre>
<p>With the above code you&#8217;re free to do any possible base conversions (dec to hex, hex to bin, bin to dec and so on).<br />
Bellow is an example of the class in work:</p>
<pre class="brush: php;">
// Converting to base 62
echo BaseConverter::dec2any('1');							// 1
echo BaseConverter::dec2any('2'); 							// 2
echo BaseConverter::dec2any('10');							// a
echo BaseConverter::dec2any('61');							// Z
echo BaseConverter::dec2any('62');							// 10
echo BaseConverter::dec2any('63');							// 11
echo BaseConverter::dec2any('123');							// 1Z
echo BaseConverter::dec2any('78979744647246');				// mqtVtIp8
echo BaseConverter::dec2any('7984516546546463213216');		// 2trjkuyg9ZsJy
echo BaseConverter::dec2any('1646516164654654646464646');	// 8elwAeomcXtCWq

// Converting to decimal numbers
echo BaseConverter::any2dec('10');				// 62
echo BaseConverter::any2dec('mqtVtIp8');		// 78979744647246
echo BaseConverter::any2dec('2trjkuyg9ZsJy');	// 7984516546546463213216
echo BaseConverter::any2dec('8elwAeomcXtCWq');	// 1646516164654654646464646
</pre>
<p>Also keep in mind that the code requires installed <a href="http://php.net/manual/en/book.bc.php">bcmath</a> extension and that if you&#8217;re working with big numbers you need to pass those as string to the functions cause php&#8217;s rounding them so they&#8217;ll fit into a float variable.</p>
<img src="http://feeds.feedburner.com/~r/TheFictionalRealm/~4/KKA4tDzp_J4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://fictionalrealm.com/2009/12/number-base-converter-converts-numbers-from-any-base-to-decimal-and-vice-versa-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://fictionalrealm.com/2009/12/number-base-converter-converts-numbers-from-any-base-to-decimal-and-vice-versa-2/</feedburner:origLink></item>
		<item>
		<title>Using PHP ssh2 lib to create simple SSH client with ANSI support</title>
		<link>http://feedproxy.google.com/~r/TheFictionalRealm/~3/evDccENuh9g/</link>
		<comments>http://fictionalrealm.com/2009/12/using-php-ssh2-lib-to-create-simple-ssh-client-with-ansi-support/#comments</comments>
		<pubDate>Fri, 25 Dec 2009 08:37:18 +0000</pubDate>
		<dc:creator>CyberJoe</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[libssh2]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[ssh client]]></category>

		<guid isPermaLink="false">http://fictionalrealm.com/?p=239</guid>
		<description><![CDATA[If you&#8217;re a real geek, you might want to make an ssh client&#8230; using  php, well, this is something that no one will probably ever need to do&#8230; but if you&#8217;re reading this, maybe it happens so that you need it :) So, to start with, there is a php extension called libssh2, and it&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffictionalrealm.com%2F2009%2F12%2Fusing-php-ssh2-lib-to-create-simple-ssh-client-with-ansi-support%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffictionalrealm.com%2F2009%2F12%2Fusing-php-ssh2-lib-to-create-simple-ssh-client-with-ansi-support%2F&amp;source=dnavre&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>If you&#8217;re a real geek, you might want to make an ssh client&#8230; using  php, well, this is something that no one will probably ever need to do&#8230; but if you&#8217;re reading this, maybe it happens so that you need it :)</p>
<p>So, to start with, there is a php extension called libssh2, and it&#8217;s really tricky to install it on some server configurations. I&#8217;m not going to discuss that part here because it&#8217;s purely server administration issue. I will just get to the coding part.</p>
<p>What we want to do here is to create php script that would run from console, will connect to remote ssh server, execute commands, and display output just like every ssh client does. The first problem is &#8211; libssh2 documentation on php site really sucks.</p>
<p><span id="more-239"></span>Connecting to remote server is easy:</p>
<pre class="brush: php;">
$connection = ssh2_connect($host, 22);
ssh2_auth_password($connection, $user, $password);
$stream = ssh2_shell($connection);
</pre>
<p>What you do here is basically connect to remote server, and fetch a stream from ssh2_shell function which you will use to do IO operations.</p>
<p>Now here comes the tricky part, according to the manual, the way you do an output to ssh (like execute a command) is to call ssh2_exec function, but this doesn&#8217;t really work well. When you do output using that command,  your ssh stream gets reset, and you can&#8217;t just continue writing new commands that will work based on previous command. It&#8217;s like this &#8211; you cant do a &#8220;cd&#8221; command and then &#8220;ls&#8221;, cause &#8220;ls&#8221; will show contents of folder that was shown before you did &#8220;cd&#8221; (the logged in users home folder). Anyway here is the way I solved it:</p>
<p>You can use simple fwrite() function to work with your $stream variable,  like this</p>
<pre class="brush: php;">
fwrite($stream, $command.&quot;\n&quot;);
</pre>
<p>Now getting to the fetching output part, it might sound weird but don&#8217;t use fread() here :D To get the server&#8217;s output you should use stream_get_contents function instead of fread. If you do &#8211; it works perfectly. Just keep in mind that server output will not appear immediately,  you need to wait for it (do a loop).</p>
<p>So this is nearly all you need to know to setup and maintain a simple ssh2 connection, execute commands, and get output in one session.</p>
<p>Here are some other aspects you might have problems with:</p>
<p>First of all, the obvious one, what if you typed a command like ping or top or something that is going to end only if you press, the Ctr+C keys? the way to imitate the Ctr+C combination is pretty easy, this combination actually sends a signal to the system that&#8217;s terminating the current process, and it&#8217;s just&#8230;.. number 3 character in ASCII table (Bingo! :D )</p>
<p>It&#8217;s one of so called ETX signals (like end of text)</p>
<pre class="brush: php;">
fwrite($stream, chr(3));
</pre>
<p>You do this command, and ping or top or whatever it is &#8211; terminates.</p>
<p>Next thing, I want to tell you is that in ANSI terminal there is not only text, you can have Midnight Commander ( mc ) which is nice and coloured, and htop and lot&#8217;s of others, how does that work?</p>
<p>Very simple! There&#8217;s an ANSI mode for terminal which is getting some other types of signals, like not only text but &#8220;go to next line&#8221; or &#8220;set foreground colour to green&#8221; e.g. I&#8217;m not going to go through the aspects of ANSI terminal, I will just explain how to enable it on libssh2 because by default it is using simple text mode and output of htop command will be more than weird.</p>
<p>And again it&#8217;s not explained in the manual in any imaginable way, but here is how you do it:</p>
<pre class="brush: php;">
$stream = ssh2_shell($connection, 'ansi');
</pre>
<p>PHP Manual says that it&#8217;s possible to give the ANSI parameter to ssh2_exec, but in our case we do not use it (we had problems with the library when trying to implement this) so it appears, through not discussed in manual, that you can pass that parameter to ssh2_shell function as well and when using that stream you will get output in &#8220;ANSI&#8221; way. You just need to make sure you parse it correctly and display to end user as it&#8217;s supposed to be.</p>
<p>So that&#8217;s mainly it about creating this stuff using PHP, feel free to ask if you had any issues, or discovered some other methods :)</p>
<img src="http://feeds.feedburner.com/~r/TheFictionalRealm/~4/evDccENuh9g" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://fictionalrealm.com/2009/12/using-php-ssh2-lib-to-create-simple-ssh-client-with-ansi-support/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://fictionalrealm.com/2009/12/using-php-ssh2-lib-to-create-simple-ssh-client-with-ansi-support/</feedburner:origLink></item>
		<item>
		<title>jQuery conflicting with other libraries, solution</title>
		<link>http://feedproxy.google.com/~r/TheFictionalRealm/~3/ePuF29OUGGY/</link>
		<comments>http://fictionalrealm.com/2009/12/jquery-conflicting-with-other-libraries-solution/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 16:21:45 +0000</pubDate>
		<dc:creator>Yervand Aghababyan</dc:creator>
				<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[JQuery]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[prototype]]></category>

		<guid isPermaLink="false">http://fictionalrealm.com/?p=218</guid>
		<description><![CDATA[What if you already use some library that occupies the $ variable and you want to continue using it and jQuery together.  What happens in this case if you load jQuery is that it will override the variable to jQuery object and you won&#8217;t be able to use your existing library. Possible solutions of this are: Reassign jQuery from [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffictionalrealm.com%2F2009%2F12%2Fjquery-conflicting-with-other-libraries-solution%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffictionalrealm.com%2F2009%2F12%2Fjquery-conflicting-with-other-libraries-solution%2F&amp;source=dnavre&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p><img class="size-full wp-image-228 alignright" style="margin-right: 10px; padding-top: 10px;" title="jquery-logo" src="http://fictionalrealm.com/wp-content/uploads/2009/12/jquery-logo.png" alt="jQuery logo" width="73" height="73" /></p>
<p>What if you already use some library that occupies the <strong>$</strong> variable and you want to continue using it and jQuery together.  What happens in this case if you load jQuery is that it will override the variable to jQuery object and you won&#8217;t be able to use your existing library. Possible solutions of this are:</p>
<ul>
<li>Reassign jQuery from <strong>$</strong> to something like <strong>$jq.</strong></li>
<li><strong><span style="font-weight: normal;">Include jQuery first and after it the other library. After this instead of typing $ you will have to type jQuery. Example:  jQuery(&#8216;#mydivId&#8217;);</span></strong></li>
<li><strong><span style="font-weight: normal;">You can also use the <strong>jQuery.noConflict()</strong> method to revert the $ to the value it had before jQuery was included in the page.<br />
<span id="more-218"></span><br />
</span></strong></li>
</ul>
<p>To me the 3rd option seems the best of all. This way you don&#8217;t have to worry about anything at all. Here&#8217;s a small example of it&#8217;s implementation taken from jQuery documentation:</p>
<pre class="brush: xml;">
&lt;html&gt;
 &lt;head&gt;
   &lt;script src=&quot;prototype.js&quot;&gt;&lt;/script&gt;
   &lt;script src=&quot;jquery.js&quot;&gt;&lt;/script&gt;
   &lt;script&gt;
     jQuery.noConflict();

     // Use jQuery via jQuery(...)
     jQuery(document).ready(function(){
       jQuery(&quot;div&quot;).hide();
     });

     // Use Prototype with $(...), even though you've loaded jQuery after loading prototype
     $('someid').hide();
   &lt;/script&gt;
 &lt;/head&gt;
 &lt;body&gt;&lt;/body&gt;
 &lt;/html&gt;
</pre>
<p>This is in my opinion the cleanest solution to the issue.  Also if you use jQuery plugins load them before calling the jQuery.noConflict() method.</p>
<p>For more information see:</p>
<p><a href="http://docs.jquery.com/Using_jQuery_with_Other_Libraries">jQuery Documentation: Integration with other Libraries</a></p>
<img src="http://feeds.feedburner.com/~r/TheFictionalRealm/~4/ePuF29OUGGY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://fictionalrealm.com/2009/12/jquery-conflicting-with-other-libraries-solution/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://fictionalrealm.com/2009/12/jquery-conflicting-with-other-libraries-solution/</feedburner:origLink></item>
		<item>
		<title>jQuery inline form validation, custom positioning patch</title>
		<link>http://feedproxy.google.com/~r/TheFictionalRealm/~3/826cx3IFSLQ/</link>
		<comments>http://fictionalrealm.com/2009/12/a-jquery-inline-form-validation-custom-positioning-patch/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 15:46:30 +0000</pubDate>
		<dc:creator>Yervand Aghababyan</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[forms]]></category>
		<category><![CDATA[inlive validation]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[JQuery]]></category>
		<category><![CDATA[patch]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[prompt positioning]]></category>
		<category><![CDATA[validation]]></category>

		<guid isPermaLink="false">http://fictionalrealm.com/?p=190</guid>
		<description><![CDATA[Well, after using jQuery inline form validation plugin for some time the most serious problem with it was that it didn&#8217;t allow me to freely customize my UI. If i had a defined design of a form before writing the validation part I always had to alter design so that validation bubbles don&#8217;t pop onto [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffictionalrealm.com%2F2009%2F12%2Fa-jquery-inline-form-validation-custom-positioning-patch%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffictionalrealm.com%2F2009%2F12%2Fa-jquery-inline-form-validation-custom-positioning-patch%2F&amp;source=dnavre&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Well, after using <a href="http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/">jQuery inline form validation plugin</a> for some time the most serious problem with it was that it didn&#8217;t allow me to freely customize my UI. If i had a defined design of a form before writing the validation part I always had to alter design so that validation bubbles don&#8217;t pop onto something important. Like a &#8220;Invalid CAPTCHA code!&#8221; poping up on the CAPTCHA image or other stuff like this. Check-boxes are also easy &#8220;eaten&#8221; by the validation bubbles.</p>
<p>What i&#8217;ve written is a simple patch for <a href="http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/">jQuery inline form validation plugin</a> allowing custom positioning of the validation bubbles. <strong>It gives you the possibility to override the default positioning by adding <em>promptPosition </em>attribute to the validated element with a value of any </strong><strong>possible</strong><strong> positioning pattern </strong><strong>supported by the plugin</strong><strong> (topLeft, topRight, bottomLeft,  centerRight, bottomRight</strong><em><strong>)</strong>.<span id="more-190"></span> </em>After doing this your validated input field should look something like this:</p>
<pre class="brush: xml;">
&lt;input id=&quot;captcha_code&quot; promptPosition=&quot;centerRight&quot; type='text' name='captcha_code' /&gt;
</pre>
<p>And all the magic that happens after customizing your form like this can be seen on the screenshot bellow:</p>
<div id="attachment_204" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-204" title="custom_positioning_plugin" src="http://fictionalrealm.com/wp-content/uploads/2009/12/custom_positioning_plugin-300x181.jpg" alt="Example of my patch's working" width="300" height="181" /><p class="wp-caption-text">Example of my patch&#39;s working</p></div>
<p>The patch was written for <a href="http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/">jQuery inline form validation</a> <strong>version 1.6.2</strong>. It most surely won&#8217;t work with newer or later versions.</p>
<p>You can <strong>download</strong> the patch or the already modified <strong>jquery.validationEngine.js</strong> by clicking the links bellow:</p>
<img src="http://feeds.feedburner.com/~r/TheFictionalRealm/~4/826cx3IFSLQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://fictionalrealm.com/2009/12/a-jquery-inline-form-validation-custom-positioning-patch/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		<feedburner:origLink>http://fictionalrealm.com/2009/12/a-jquery-inline-form-validation-custom-positioning-patch/</feedburner:origLink></item>
		<item>
		<title>jQuery Inline Form Validation Engine</title>
		<link>http://feedproxy.google.com/~r/TheFictionalRealm/~3/pvbWl9nLXaU/</link>
		<comments>http://fictionalrealm.com/2009/12/jquery-inline-form-validation-plugin/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 12:52:18 +0000</pubDate>
		<dc:creator>Yervand Aghababyan</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[form validation]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[JQuery]]></category>

		<guid isPermaLink="false">http://fictionalrealm.com/?p=158</guid>
		<description><![CDATA[Recently I&#8217;ve been surfing the net in search of a jQuery powered form validation plugin, the best of what I found is the jQuery Inline Form Validation Engine. On the left is a screenshot of plugin&#8217;s performance which i find quite good from both programming and design point of views.  The screenshot is taken from [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffictionalrealm.com%2F2009%2F12%2Fjquery-inline-form-validation-plugin%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffictionalrealm.com%2F2009%2F12%2Fjquery-inline-form-validation-plugin%2F&amp;source=dnavre&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<div id="attachment_164" class="wp-caption alignright" style="width: 310px"><img class="size-medium wp-image-164 " title="img_form" src="http://fictionalrealm.com/wp-content/uploads/2009/12/img_form-300x221.jpg" alt="jQuery Inline Form Validation Engine" width="300" height="221" /><p class="wp-caption-text">jQuery Inline Form Validation Engine</p></div>
<p>Recently I&#8217;ve been surfing the net in search of a <a title="jQuery official website" href="http://jquery.com/">jQuery</a> powered form validation plugin, the best of what I found is the <a href="http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/">jQuery Inline Form Validation Engine</a>. On the left is a screenshot of plugin&#8217;s performance which i find quite good from both programming and design point of views.  The screenshot is taken from plugin&#8217;s author&#8217;s website at <a href="http://www.position-absolute.com">http://www.position-absolute.com</a>.</p>
<p>It&#8217;s quite easy to implement in your project and consists from just a couple of JS files one ( one of them contains  error messages and validation rules and the other validation code itself).  Also you have to include a single css file and that&#8217;s all. No images required at all.</p>
<p>You can easily add your own custom validation rules and tweak the stuff that&#8217;s already present in the code. Everything is pretty simple and requires a basic knowledge of JavaScript.</p>
<p><span id="more-158"></span>With this 3 files you get a <strong>really good looking error massage </strong>(you can change the design by tuning the CSS), <strong>regexp validation</strong>, some basic stuff that&#8217;s already implemented like <strong>email validation </strong>and <strong>confirm password field&#8217;s validation</strong>, <strong>typed in value&#8217;s length validation</strong> and <strong>AJAX validation</strong>. All you have to do to enable the validation engine is describe what validation procedures should be applied to a certain field of your form by adding various classes to it and call an initialization function of the validation engine. The end result looks something like this:</p>
<pre class="brush: xml;">
&lt;form id=&quot;myFormId&quot; method=&quot;post&quot; action=&quot;myform.php&quot;&gt;
    &lt;input id=&quot;email&quot; class=&quot;validate[required, custom[email], ajax[ajaxEmailAvailability]]&quot; name=&quot;email&quot; type=&quot;text&quot; /&gt;
    &lt;input id=&quot;submitButton&quot; type=&quot;submit&quot; value=&quot;Submit Form&quot; /&gt;
&lt;/form&gt;
&lt;script&gt;
    $(&quot;#myFormId&quot;).validationEngine({});
&lt;/script&gt;
</pre>
<p><strong>The Cons of the plugin</strong> in my opinion are:</p>
<ul>
<li>Does not support window resize. When you resize the browser all the validation bubbles shift from the fields they should be attached to. Cause of this you have to close all the bubbles on window.resize event. A fix for this is planned for 1.7 release ( the current version is 1.6.2)</li>
<li>There&#8217;s no way to custom position the validation bubbles and if you got a form with a little complex design it&#8217;s possible that the bubbles will get on some other important stuff (mine was getting on the captcha image when validating the captcha code). It&#8217;s like this &#8211; can tell all the bubbles in the form to show in the upper right, lower right, upper left, lower left and just on the right of the input box but you can&#8217;t tell a specific bubble to appear in your desired location.  (I&#8217;ve written a patch allowing custom positioning located <a href="http://fictionalrealm.com/2009/12/a-jquery-inline-form-validation-custom-positioning-patch/">here</a>)</li>
</ul>
<p>Overall i highly recommend the plugin. It&#8217;s very comfortable to use and get accustomed to. And looks good!</p>
<img src="http://feeds.feedburner.com/~r/TheFictionalRealm/~4/pvbWl9nLXaU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://fictionalrealm.com/2009/12/jquery-inline-form-validation-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://fictionalrealm.com/2009/12/jquery-inline-form-validation-plugin/</feedburner:origLink></item>
		<item>
		<title>Chapter 2 of WOT: the Gathering Storm is out!</title>
		<link>http://feedproxy.google.com/~r/TheFictionalRealm/~3/qJ7aCaozMao/</link>
		<comments>http://fictionalrealm.com/2009/09/chapter-2-of-wheel-of-time-the-gathering-storm-is-out/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 05:38:34 +0000</pubDate>
		<dc:creator>Yervand Aghababyan</dc:creator>
				<category><![CDATA[Fantasy]]></category>
		<category><![CDATA[Literature]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[brandon sanderson]]></category>
		<category><![CDATA[fantasy]]></category>
		<category><![CDATA[gathering storm]]></category>
		<category><![CDATA[releases]]></category>
		<category><![CDATA[robert jordan]]></category>

		<guid isPermaLink="false">http://fictionalrealm.com/?p=140</guid>
		<description><![CDATA[Chapter 2 of &#8220;Wheel of Time: the Gathering Storm&#8221; is out in audio format. It&#8217;s located on Tor&#8217;s website and requires a free registration. Here&#8217;s a direct link. Tor claims that they have released the chapter to &#8220;say thank you&#8221; to all the fans but I guess this is more of a marketing move than [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffictionalrealm.com%2F2009%2F09%2Fchapter-2-of-wheel-of-time-the-gathering-storm-is-out%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffictionalrealm.com%2F2009%2F09%2Fchapter-2-of-wheel-of-time-the-gathering-storm-is-out%2F&amp;source=dnavre&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Chapter 2 of &#8220;Wheel of Time: the Gathering Storm&#8221; is out in audio format. It&#8217;s located on Tor&#8217;s website and requires a free registration. <a href="http://www.tor.com/index.php?option=com_content&amp;view=blog&amp;id=56278">Here&#8217;s a direct link</a>. Tor claims that they have released the chapter to &#8220;say thank you&#8221; to all the fans but I guess this is more of a marketing move than a &#8220;thank you&#8221; saying :) Well anyway though this is a marketing move this is one of those rare occasions when marketing interests match the desires of fans.<span id="more-140"></span><br />
The chapter continues from Egwene&#8217;s POV and is read &amp; brought to us by Kate Reading (she&#8217;s also been reading all the previous WoT female POVs). The chapters from male POV are read by Michael Kramer as in the previous books.<br />
Both Michael Kramer &amp; Kate Reading have done an excellent job reading WoT series from the very beginning and if you&#8217;re a &#8220;hardcore fan&#8221; ;) and haven&#8217;t checked the audio books yet you ought to do that. Hearing them will provide you with a really new &amp; refreshing feel of the books.</p>
<p>You can also read the <a href="http://www.dragonmount.com/News/?p=757">topic on Dragonmount</a> for more details.</p>
<p><strong>UPDATE: The book has been already released. You can by it on Amazon by clicking the following link.</strong></p>
<div style="text-align:center;">
<iframe src="http://rcm.amazon.com/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=F5F2EB&#038;fc1=666666&#038;lc1=D05D52&#038;t=fictirealm-20&#038;o=1&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=10FE9736YVPPT7A0FBG2&#038;asins=0765302306" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</div>
<img src="http://feeds.feedburner.com/~r/TheFictionalRealm/~4/qJ7aCaozMao" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://fictionalrealm.com/2009/09/chapter-2-of-wheel-of-time-the-gathering-storm-is-out/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://fictionalrealm.com/2009/09/chapter-2-of-wheel-of-time-the-gathering-storm-is-out/</feedburner:origLink></item>
		<item>
		<title>The Wheel of Time News on the Gathering Storm</title>
		<link>http://feedproxy.google.com/~r/TheFictionalRealm/~3/1f7e_v_3-3I/</link>
		<comments>http://fictionalrealm.com/2009/09/wheel-of-time-gathering-storm-prologue-first-chapter/#comments</comments>
		<pubDate>Mon, 28 Sep 2009 16:56:54 +0000</pubDate>
		<dc:creator>Yervand Aghababyan</dc:creator>
				<category><![CDATA[Fantasy]]></category>
		<category><![CDATA[Literature]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[brandon sanderson]]></category>
		<category><![CDATA[fantasy]]></category>
		<category><![CDATA[gathering storm]]></category>
		<category><![CDATA[robert jordan]]></category>
		<category><![CDATA[wheel of time]]></category>

		<guid isPermaLink="false">http://fictionalrealm.com/?p=135</guid>
		<description><![CDATA[The long awaited twelfth book named &#8220;the Gathering Storm&#8221; is going to be out for sale on October 27th. For now you can read the free and publicly available first chapter of the book located on the publisher&#8217;s website. The prologue is available for sale as usual for &#8220;Wheel of Time&#8221; series books. Also you [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffictionalrealm.com%2F2009%2F09%2Fwheel-of-time-gathering-storm-prologue-first-chapter%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffictionalrealm.com%2F2009%2F09%2Fwheel-of-time-gathering-storm-prologue-first-chapter%2F&amp;source=dnavre&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>The long awaited twelfth book named &#8220;the Gathering Storm&#8221; is going to be out for sale on October 27th. For now you can read the free and publicly available first chapter of the book located on the <a href="http://www.tor.com/index.php?option=com_content&#038;view=story&#038;id=53532">publisher&#8217;s website</a>. The prologue is available for sale as usual for &#8220;Wheel of Time&#8221; series books.<span id="more-135"></span><br />
Also you can preorder a signed book by Brandon Sanderson with international shipping, to do that read <a href="http://brandonsanderson.com/article/57/THE-GATHERING-STORM-Release-Events!">his post on brandonsanderson.com</a></p>
<p>I&#8217;ve personally have read both the prologue and the first chapter. There is certainly a difference between Robert Jordan&#8217;s voice &#038; that of Brandon Sanderson. But the characters have the same feeling about them and the overall atmosphere of the book remains the same. So I&#8217;m looking forward to October 27th and don&#8217;t fear being disappointed in any way :)</p>
<p>BTW It&#8217;s been decided that the next(13th book) which will come out next year will be named &#8220;Towers of Midnight&#8221; and the last one will be &#8220;A Memory of Light&#8221; as RJ originally planned it.</p>
<p><strong>UPDATE: The 12th book &#8220;the Gathering Storm&#8221; has been already released. You can by it on Amazon by clicking the following link.</strong></p>
<div style="text-align:center;">
<iframe src="http://rcm.amazon.com/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=F5F2EB&#038;fc1=666666&#038;lc1=D05D52&#038;t=fictirealm-20&#038;o=1&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=10FE9736YVPPT7A0FBG2&#038;asins=0765302306" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</div>
<img src="http://feeds.feedburner.com/~r/TheFictionalRealm/~4/1f7e_v_3-3I" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://fictionalrealm.com/2009/09/wheel-of-time-gathering-storm-prologue-first-chapter/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://fictionalrealm.com/2009/09/wheel-of-time-gathering-storm-prologue-first-chapter/</feedburner:origLink></item>
		<item>
		<title>ADODB-Session optimization on servers with high load</title>
		<link>http://feedproxy.google.com/~r/TheFictionalRealm/~3/cFK1TUGFUFI/</link>
		<comments>http://fictionalrealm.com/2009/04/adodb-session-optimization-on-servers-with-high-load/#comments</comments>
		<pubDate>Tue, 28 Apr 2009 12:12:20 +0000</pubDate>
		<dc:creator>Yervand Aghababyan</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[adodb]]></category>
		<category><![CDATA[high load]]></category>
		<category><![CDATA[memcache]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[session]]></category>

		<guid isPermaLink="false">http://fictionalrealm.com/?p=109</guid>
		<description><![CDATA[We had an issue today on a server with a high load because of ADODB&#8217;s session mechanism using MySQL as session storage engine with MyISAM table engine as advised by the manual of ADODB-session. Our server&#8217;s load is: 2500 new session creation every minute with about 17000 concurrent user sessions. A separate dedicated server (Amazon [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffictionalrealm.com%2F2009%2F04%2Fadodb-session-optimization-on-servers-with-high-load%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffictionalrealm.com%2F2009%2F04%2Fadodb-session-optimization-on-servers-with-high-load%2F&amp;source=dnavre&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p><img class="size-medium wp-image-116 alignright" title="479px-construction_workers" src="http://fictionalrealm.com/wp-content/uploads/2009/04/479px-construction_workers-239x300.jpg" alt="" width="193" height="244" /></p>
<p>We had an issue today on a server with a high load  because of ADODB&#8217;s session mechanism using MySQL as session storage engine with MyISAM table engine as advised by the <a href="http://phplens.com/lens/adodb/docs-session.htm">manual</a> of ADODB-session. <strong>Our server&#8217;s load is: 2500 new session creation every minute with about 17000 concurrent user sessions</strong>. A separate dedicated server (Amazon 2.3Ghz dualcore Xeon) was for he sole purpose of storing session data but the machine was not catching up.</p>
<p>So what basically happens here is that the default MyISAM table blows up in a matter of 10-20 minutes because of the tremendous amount of inserts/updates done on the table. <span id="more-109"></span>Adding the advised by the manual</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">ADODB_Session<span style="color: #339933;">::</span><span style="color: #004000;">optimize</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>option for ADODB to do a table optimization every time it deletes dead sessions from the table(garbage collection) doesn&#8217;t work because the optimization itself takes a lot of time on a table of this size(~17000 records). Changing table type to InnoDB and setting           <code class="literal">innodb_flush_log_at_trx_commit</code> to 1 significantly improved performance but it was still not enough. Changing the table type to MEMORY limit&#8217;s the row&#8217;s size to a maximum of 64KB and besides this ADODB is unable to use this engine without code modification(MEMORY engine doesn&#8217;t support BLOB &amp; TEXT columns so you&#8217;ll have to change these to 64KB chars but adodb&#8217;s queries are written in a way that works only with BLOB cells).</p>
<p>The sad thing here is that there&#8217;s basically no effective way to improve a single MySQL&#8217;s performance in a case with this high load directed on a single table without hardware upgrade.</p>
<p>Having experienced everything described above <strong>I highly recomend using memcache powered session mechanism whenever there&#8217;s a risk of having high server load</strong>. You can not do this by reconfiguring ADODB-Session but that&#8217;s not a big deal. Writing/finding a piece of code making the session mechanism work using the memcached server is a pretty quick task to do.</p>
<img src="http://feeds.feedburner.com/~r/TheFictionalRealm/~4/cFK1TUGFUFI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://fictionalrealm.com/2009/04/adodb-session-optimization-on-servers-with-high-load/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://fictionalrealm.com/2009/04/adodb-session-optimization-on-servers-with-high-load/</feedburner:origLink></item>
		<item>
		<title>JavaScript UI framework comparison or Why I choose ExtJS &amp; JQuery</title>
		<link>http://feedproxy.google.com/~r/TheFictionalRealm/~3/kYqVqt__l48/</link>
		<comments>http://fictionalrealm.com/2009/04/javascript-ui-framework-comparison-or-why-i-choose-extjs-jquery/#comments</comments>
		<pubDate>Sun, 19 Apr 2009 09:55:37 +0000</pubDate>
		<dc:creator>Yervand Aghababyan</dc:creator>
				<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[JQuery]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://fictionalrealm.com/?p=72</guid>
		<description><![CDATA[Recently we&#8217;ve spent several days trying to decide which UI JavaScript framework/library to use. Our company is developing a media website with funky design which has a very complex admin panel with lots of crammed together pages. We were going to rewrite the admin CP&#8217;s UI from scratch because of it&#8217;s slowness and were searching [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffictionalrealm.com%2F2009%2F04%2Fjavascript-ui-framework-comparison-or-why-i-choose-extjs-jquery%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffictionalrealm.com%2F2009%2F04%2Fjavascript-ui-framework-comparison-or-why-i-choose-extjs-jquery%2F&amp;source=dnavre&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Recently we&#8217;ve spent several days trying to decide which UI JavaScript framework/library to use. Our company is developing a media website with funky design which has a very complex admin panel with lots of crammed together pages. We were going to rewrite the admin CP&#8217;s UI from scratch because of it&#8217;s slowness and were searching for a solution that would require as small as possible effort to build a functional/comfortable admin panel and require only minor UI customizations. Also the library we use should have made our life easier when doing stuff on the main funky site. Well we couldn&#8217;t find a solution which will satisfy both this requirements instead <strong>we decided to use ExtJS for the admin CP and JQuery for the main site</strong>. The reasons behind this choice are listed bellow:</p>
<p><span id="more-72"></span></p>
<p><strong>Why ExtJS for the admin CP?<br />
</strong></p>
<ul>
<li>It&#8217;s faster than the other frameworks with complex UI elements  we tried</li>
<li>It&#8217;s look &amp; feel is significantly better. Most of the UI elements have layout we&#8217;re not going to change at all for the admin CP. We don&#8217;t need a unique or beautiful design here we just need it to be acceptably good looking &amp; comfortable. Ext provides this.</li>
<li>The code was easier to write/read using Ext</li>
<li>Was good documented and there were lots of tutorials written by the fans</li>
</ul>
<p><strong>Why JQuery for the main site?</strong></p>
<ul>
<li>It&#8217;s very light. It sucks when the user has to wait for a &#8220;Loading&#8221; after opening the page. JQuery is about 20 Kb in total so there&#8217;s nearly no performance difference at all.</li>
<li>It has lots of community built plug-ins for nearly anything. It&#8217;s true that JQuery lacks complex UI elements like ExtJS&#8217;s grid but we had no need for stuff like these on the website (the admin CP is another issue).</li>
<li>The UI elements/plugins JQuery provides are easily customizable/editable because of their small size(in most cases).</li>
</ul>
<p>Bellow is the result of our &#8220;research&#8221; on the subject.</p>
<table style="width: 96%;" align="center" style="border:0px;" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="text-align: center;" colspan="2">
<h3><strong>QooXdo</strong></h3>
</td>
</tr>
<tr>
<td style="text-align: center; font-weight: bold; border-bottom: 1px solid black;" width="50%"><em>Pros</em></td>
<td style="text-align: center; font-weight: bold; border-bottom: 1px solid black;" width="50%"><em>Cons</em></td>
</tr>
<tr>
<td style="vertical-align: top;">
<ul>
<li>OpenSource License</li>
<li>Good/Pretty UI Elements</li>
</ul>
</td>
<td style="vertical-align: top;">
<ul>
<li>Small community</li>
<li>Relatively New Project</li>
</ul>
</td>
</tr>
<tr>
<td colspan="2" height="30">We skipped this framework because it&#8217;s a bit too young. It doesn&#8217;t have a  solid community and support (it&#8217;s opensource). Also it didn&#8217;t provide some of the functionality of the grid which was a requirement for us.</td>
</tr>
<tr>
<td style="text-align: center;" colspan="2">
<h3>ExtJS</h3>
</td>
</tr>
<tr>
<td style="text-align: center; font-weight: bold; border-bottom: 1px solid black;" width="50%"><em>Pros</em></td>
<td style="text-align: center; font-weight: bold; border-bottom: 1px solid black;" width="50%"><em>Cons</em></td>
</tr>
<tr>
<td style="vertical-align: top;">
<ul>
<li>Is a very active project</li>
<li>Has great support forums (with lots of answers to the most common questions) and has a good/active support team.</li>
<li>The best collection of UI elements. These come with a &#8216;pixel-prefected&#8217;<br />
styles and are useable out of the box. Ideal if you&#8217;re going to write an admin CP.</li>
<li>Has one of the biggest communities</li>
<li>Good Documentation &amp; examples</li>
<li>Good code quality/readability</li>
</ul>
</td>
<td style="vertical-align: top;">
<ul>
<li>Non Free License</li>
<li>Support costs additional fee</li>
<li>A lot of JS code has to be loaded. Something around<br />
300-400Kb uncompressed JS. Most of ExtJS websites I&#8217;ve seen display a &#8220;Loading . . .&#8221; logo before the UI starts functioning.</li>
<li>No good error reporting solution. You spend hours debugging ExtJS code trying to find out what you did wrong.</li>
</ul>
</td>
</tr>
<tr>
<td colspan="2" height="30">One of the leading JS frameworks on the market. I&#8217;d like to note that there has been quite a discussion on the internet regarding ExtJS&#8217;s license changes (these guys have changed the license 3 times making it more restrictive with each change. Now it&#8217;s GPL for non commercial use). Some people even claim ExtJS being an illegal software. Anyway if you&#8217;re concerned check out <a href="http://extjs.com/products/license.php">ExtJS Licensing Policy</a> and google for rest(ilegality issues &amp; stuff) ;) I personally do not belive in validness of any of those claims.</p>
<p>Regarding the point about no good solution in the field of error reporting &amp; related stuff. I&#8217;m working with ExtJS for several months already and it&#8217;s a common thing for me to spend hours debugging ExtJS code trying to find out which parameter I passed to the library was wrong or something like that. Basically if you don&#8217;t supply a required parameter or give an invalid value to something you usually won&#8217;t be getting an &#8216;invalid parameter, blah blah blah should be specified&#8221; error. What you&#8217;ll be getting is usually a &#8220;blah blah is not a function&#8221; from the depths of ExtJS. After that you may spend hours trying to find out what really is the cause. The only solution to this is probably the experience of working with ExtJS which will not come fast :)</p>
<p>Also don&#8217;t expect ExtJS to be fast. It&#8217;s slow but it&#8217;s faster that it&#8217;s opponents  out there (at least at the time of my research I got this impression). It&#8217;s flexibility and the huge amount of customizable UI elements come at a cost &#8211; that&#8217;s it&#8217;s slowness &amp; the time required to getting familiar with it.</p>
<p>I&#8217;ll also add some links form the ExtJS website you may find usefull.</p>
<p><a href="http://extjs.com/company/customers.php">ExtJS&#8217;s Customers List</a></p>
<p><a href="http://extjs.com/learn/Tutorials">ExtJS Tutorials</a></p>
<p><a href="http://extjs.com/store/extjs/">ExtJS Price List</a></p>
<p><a href="http://coderseye.com/2007/why-im-moving-from-jquery-to-extjs.html">Coder&#8217;s Eye &#8211; Why am i moving from jQuery to ExtJS</a></td>
</tr>
<tr>
<td style="text-align: center;" colspan="2">
<h3>JQuery</h3>
</td>
</tr>
<tr>
<td style="text-align: center; font-weight: bold; border-bottom: 1px solid black;" width="50%"><em>Pros</em></td>
<td style="text-align: center; font-weight: bold; border-bottom: 1px solid black;" width="50%"><em>Cons</em></td>
</tr>
<tr>
<td style="vertical-align: top;">
<ul>
<li>OpenSource License</li>
<li>Is very lightweight</li>
<li>Has very big community</li>
<li>Is very popular</li>
<li>Is ideal if you plan to add some AJAX/JS tweaking to an	existing UI</li>
<li>Has quite an old history</li>
<li>Good documented</li>
<li>Easy to learn</li>
</ul>
</td>
<td style="vertical-align: top;">
<ul>
<li>Most of the functionality comes in plug-ins by various community supporters ( aka untrusted sources :) ) which are not as stable as you&#8217;d like them to be and usually do not provide any support</li>
<li>Lacks complex UI elements like ExtJS&#8217;s grid</li>
<li>Most of the plug-ins you&#8217;ll be using will require some tweaking from your part. They are not usually flexible enough to suite everyone&#8217;s needs.</li>
</ul>
</td>
</tr>
<tr>
<td colspan="2" height="30">A good lightweight UI framework. For more details see the beginning of the article ;)</p>
<p>jQuery related Links follow</p>
<p><a href="http://jquery.com/">Official website</a></p>
<p><a href="http://plugins.jquery.com/">jQuery plug-in catalogue</a> ( but mainly you&#8217;ll be using Google in search of the plug-ins you want, this &#8216;list&#8217; is not even close to being as good as Firefox&#8217;s or WordPress&#8217;s plug-in catalogue )</p>
<p><a href="http://jqueryui.com/">iQuery UI</a> &#8211; a jQuery written &amp; maintained library of UI elements for jQuery</td>
</tr>
<tr>
<td style="text-align: center;" colspan="2">
<h3>Dojo</h3>
</td>
</tr>
<tr>
<td style="text-align: center; font-weight: bold; border-bottom: 1px solid black;" width="50%"><em>Pros</em></td>
<td style="text-align: center; font-weight: bold; border-bottom: 1px solid black;" width="50%"><em>Cons</em></td>
</tr>
<tr>
<td style="vertical-align: top;">
<ul>
<li>OpenSource License</li>
<li>Supports a11y and i18n</li>
<li>Uses Canvas for FF and VML for IE making 3d graphics in browser portable between browsers</li>
<li>Old and solid project</li>
</ul>
</td>
<td style="vertical-align: top;">
<ul>
<li>Lacks good widget system. As far as I know Dojo is basicly a great JS framework but a so-so widget library</li>
<li>Requires UI tweaking. You can&#8217;t build all your UI using out of the box Dojo<br />
configuration/UI controls. You&#8217;ll have to &#8216;pixel-perfect&#8217; the layout yourself.</li>
<li>Websites using Dojo are not W3Schools HTML compliant. So if you care about the HTML validity of your website this a con. Personally for me this does not matter as far as the UI looks cool and functions correctly.</li>
</ul>
</td>
</tr>
<tr>
<td colspan="2" height="30">This was the least researched framework. First of all what I didn&#8217;t like were the examples on their website. They look as if they need to be be tuned and pixel-perfected a lot before can be put to actual use. Also this proved some articles i found on the subject. Well honestly I&#8217;m a little surprised by the following <a href="http://www.indeed.com/jobtrends?q=dojo%2C+extjs%2C+jquery&amp;l=">chart</a> showing that there are more dojo developer positions available.</p>
<p>Also you may want to check out the following pages:<br />
<a title="Permanent Link to Dojo vs Ext.js - How Dojo lost in front of other UI frameworks like Ext js" rel="bookmark" href="http://blog.tremend.ro/2007/08/22/dojo-vs-extjs-how-dojo-lost-in-front-of-other-ui-frameworks-like-ext-js/">Dojo vs Ext.js &#8211; How Dojo lost in front of other UI frameworks like Ext js</a><br />
<a href="http://dojotoolkit.org/forum/dojo-foundation/general-discussion/dojo-vs-extjs">Dojo vs. ExtJs </a></td>
</tr>
<tr>
<td style="text-align: center;" colspan="2">
<h3>Backbase</h3>
</td>
</tr>
<tr>
<td style="text-align: center; font-weight: bold; border-bottom: 1px solid black;" width="50%"><em>Pros</em></td>
<td style="text-align: center; font-weight: bold; border-bottom: 1px solid black;" width="50%"><em>Cons</em></td>
</tr>
<tr>
<td style="vertical-align: top;">
<ul>
<li>Uses taglibs so you don&#8217;t have to code JS in many cases you did before.</li>
<li>You get a very clean UI generation code</li>
<li>Has UI elements for nearly anything that you may thinks of.</li>
<li>Free to use</li>
<li>Good Documentation &amp; examples</li>
<li>Because of the taglib architecture and good implementation it&#8217;s very easy to find codding mistakes. Backbase warnes you on nearly everything you do wrong</li>
</ul>
</td>
<td style="vertical-align: top;">
<ul>
<li>Is hard to debug</li>
<li>Is slow. Slower than ExtJS</li>
<li>Your developers should be familiar not only with JS but also<br />
with XML&#8217;s advanced stuff like tag libs.</li>
<li>To extend functionality a good understanding of XML &amp;<br />
TDL is a requirement.</li>
<li>Is hard to get Backbase used with an existing code therefore is better<br />
to use it in a project you&#8217;re starting from scratch.</li>
<li>Is very unique. I know of no other client-side UI framework<br />
like this.</li>
<li>Small community/few known(by us) usage examples</li>
</ul>
</td>
</tr>
<tr>
<td colspan="2" height="30">This is a HUUUGE framework/taglib which has nearly anything that you&#8217;ll want to implement. It&#8217;s very flexible and really heavy. We decided not use this mainly because of it&#8217;s speed and complexity. The framework provides some options for speed up but we didn&#8217;t test it.</td>
</tr>
</tbody>
</table>
<p>In the end i&#8217;d like to add that everything i wrote is my subjective opinion. Feel free to discuss it and disagree :)</p>
<p>Related links:</p>
<p><a href="http://en.wikipedia.org/wiki/Comparison_of_JavaScript_frameworks">Wikipedia JS framework comparison page</a></p>
<p><a href="http://blog.creonfx.com/javascript/mootools-vs-jquery-vs-prototype-vs-yui-vs-dojo-comparison-revised">JS framework speed comparison charts</a> ( ExtJS not included )</p>
<p>Last Updated on December 15, 2009 &#8211; Modified jQuery &amp; ExtJs section</p>
<img src="http://feeds.feedburner.com/~r/TheFictionalRealm/~4/kYqVqt__l48" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://fictionalrealm.com/2009/04/javascript-ui-framework-comparison-or-why-i-choose-extjs-jquery/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		<feedburner:origLink>http://fictionalrealm.com/2009/04/javascript-ui-framework-comparison-or-why-i-choose-extjs-jquery/</feedburner:origLink></item>
		<item>
		<title>Mistborn Trilogy Review &amp; Impression</title>
		<link>http://feedproxy.google.com/~r/TheFictionalRealm/~3/vy_W3jev6kk/</link>
		<comments>http://fictionalrealm.com/2009/04/mistborn-trilogy/#comments</comments>
		<pubDate>Fri, 10 Apr 2009 14:20:53 +0000</pubDate>
		<dc:creator>Yervand Aghababyan</dc:creator>
				<category><![CDATA[Fantasy]]></category>
		<category><![CDATA[Literature]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[fantasy]]></category>
		<category><![CDATA[review]]></category>

		<guid isPermaLink="false">http://fictionalrealm.com/?p=17</guid>
		<description><![CDATA[This was one of my latest reads. The reason i read it was because after Robert Jordan's death (Robert Jordan aka James Oliver Rigney is the author of the "Wheel of Time" fantasy series) Brandon Sanderson, the author of "Mistborn" trilogy, was chosen to write the remaining part of the "Wheel of Time". I picked up "Mistborn" because it was one of Mr.Sanderson's latest works and I wanted to see the style of the guy who's going to write the last book of one of my most favorite fantasy series. Well . . . overall I'm very pleased, I like his style, characters, the world and the storyline. I like all of the "Mistborn" world, the book is definitely worth a read.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffictionalrealm.com%2F2009%2F04%2Fmistborn-trilogy%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffictionalrealm.com%2F2009%2F04%2Fmistborn-trilogy%2F&amp;source=dnavre&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p><img class="alignright size-medium wp-image-67" title="Mistborn - The Well of Ascension by Brandon Sanderson" src="http://fictionalrealm.com/wp-content/uploads/2009/04/mistborn-the-well-of-ascension-213x300.jpg" alt="mistborn-the-well-of-ascension" width="170" height="240" />This was one of my latest reads. The reason i read it was because after Robert Jordan&#8217;s death (Robert Jordan aka James Oliver Rigney is the author of the &#8220;Wheel of Time&#8221; fantasy series) Brandon Sanderson, the author of &#8220;Mistborn&#8221; trilogy, was chosen to write the remaining part of the &#8220;Wheel of Time&#8221;. I picked up &#8220;Mistborn&#8221; because it was one of Mr.Sanderson&#8217;s latest works and I wanted to see the style of the guy who&#8217;s going to write the last book of one of my most favorite fantasy series. Well . . . overall I&#8217;m very pleased, I like his style, characters, the world and the storyline. I like all of the &#8220;Mistborn&#8221; world, the book is definitely worth a read.</p>
<p><span id="more-17"></span></p>
<p>One of the first things that attracted me in the book was the world itself, the way it has become and the way people live there. Everything there seems kind of apocalyptic, as if the world has already ended and what we see are only small remnants of it.</p>
<p>The story itself tells us about a small but very famous thieving crew which has really great goals to achieve. The main character is a girl from a thieving crew who have been thought all her life not to trust anyone. Somehow she ends up in an environment where everyone depends on trust. The reader will <img class="alignleft size-medium wp-image-27" title="Mistborn - The Hero of Ages by Brandon Sanderson" src="http://fictionalrealm.com/wp-content/uploads/2009/04/51jusl0-rl_ss500_-198x300.jpg" alt="Mistborn - The Hero of Ages" width="158" height="240" />overcome all those new sensations and grow new affections to people with her. We will see many fierce battles and see some of our favorite characters die. Don&#8217;t read this to your kids :) Also the trilogy is not like usual fantasy. Most of the book is explained and has strong supporting logic behind it. Even the magic system stands out because of the limited set of rules it has to obey.</p>
<p>The magic here is called allomancy. One does allomancy by swallowing shavings of different metals. There&#8217;s a limited number of allomantic metals and each one of those does something specific. Also each metal has it&#8217;s pair which does the opposite of what the original one was doing. For example there&#8217;s a metal which allows to pull a metallic object towards you and also there&#8217;s another one which pushes metals from you. It&#8217;s surprising how many things you can do by just having these 2 metals.</p>
<p>Also I&#8217;d like to note that probably the thing that most impressed me about the book is the ending of the third part. It&#8217;s really mind blowing and very unexpected but it fits and feels very natural. It&#8217;s something i don&#8217;t even know how to describe you just have to read it :) Though i guess it may annoy some of the readers. (Honestly it annoys me as well but i still like it. It&#8217;s somehow beautiful)</p>
<p>One more thing that may interest you is that it&#8217;s possible that there will be more books after the trilogy. Brandon wrote on his website that he has some ideas but before writing those (if he decides to write a sequel) he has other projects to complete first. Those other projects include &#8220;The Wheel of Time&#8221; which will keep hism busy at least till 2011-2012 and some other projects of his own. So we have nothing to wait for in the nearest future.</p>
<p>In the end I&#8217;d like to say that i enjoyed reading &#8220;Mistborn&#8221; and am looking forward to reading the next book of the &#8220;Wheel of Time&#8221; series by Robert Jordan and Brandon Sanderson. The book is titled &#8220;The Gathering Storm&#8221; and will come out  <span class="mw-formatted-date" title="2009-11-03"><span class="mw-formatted-date" title="11-03">November 3</span>, 2009.</span></p>
<p>For more information visit Brandon&#8217;s website &amp; blog which he updates quite frequently (big thanks to him for this as well) here: <a href="http://www.brandonsanderson.com/" target="_blank">http://www.brandonsanderson.com/</a></p>
<p>UPDATE:</p>
<p>Brandon is selling out signed copies:</p>
<p>Mistborn &#8211; The Well of Ascension &#8211; <a href="http://www.brandonsanderson.com/store/item/23/Signed-Mistborn-Book-2----Hardback" target="_blank">here</a></p>
<p>Mistborn &#8211; The Final Empire -  <a title="here" href="http://www.brandonsanderson.com/store/item/5/Signed-Mistborn-Book-1----Hardback" target="_blank">here</a></p>
<p>[amazon-myfavorites align="center"]6c00c4ba-550e-4310-8708-f87991668bd1[/amazon-myfavorites]</p>
<img src="http://feeds.feedburner.com/~r/TheFictionalRealm/~4/vy_W3jev6kk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://fictionalrealm.com/2009/04/mistborn-trilogy/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://fictionalrealm.com/2009/04/mistborn-trilogy/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 2.804 seconds. --><!-- Cached page generated by WP-Super-Cache on 2010-08-04 04:24:32 -->
