<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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/"
	>

<channel>
	<title>Think API&#187; Sukumar</title>
	<atom:link href="http://thinkapi.com/blog/author/suku/feed/" rel="self" type="application/rss+xml" />
	<link>http://thinkapi.com/blog</link>
	<description>An interface to tech thoughts</description>
	<lastBuildDate>Mon, 10 May 2010 10:32:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Making Codeigniter clean URLs cleaner</title>
		<link>http://thinkapi.com/blog/making-codeigniter-clean-urls-cleaner/</link>
		<comments>http://thinkapi.com/blog/making-codeigniter-clean-urls-cleaner/#comments</comments>
		<pubDate>Mon, 10 May 2010 10:32:49 +0000</pubDate>
		<dc:creator>Sukumar</dc:creator>
				<category><![CDATA[Codeigniter]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[clean url]]></category>
		<category><![CDATA[codeigniter seo]]></category>
		<category><![CDATA[url rewrite]]></category>

		<guid isPermaLink="false">http://thinkapi.com/blog/?p=192</guid>
		<description><![CDATA[Usually when working with codeigniter you come across the use case where you need to remove the extra &#8220;index&#8221; appearing in the URL for purposes ranging from shorter URLs to SEO. For example, Current URL style: http://example.com/controller/method/category1/category2/page-name Target URL style: http://example.com/category1/category2/page-name.html As you can see, the difference in the target URL is the absence of [...]


Related posts:<ol><li><a href='http://thinkapi.com/blog/codeigniter-separating-reads-and-writes-for-scaling-mysql/' rel='bookmark' title='Permanent Link: Codeigniter: Separating reads and writes for scaling MySQL'>Codeigniter: Separating reads and writes for scaling MySQL</a> <small>Generally websites average a ratio of 9:1 or more for...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Usually when working with codeigniter you come across the use case where you need to remove the extra &#8220;index&#8221; appearing in the URL for purposes ranging from shorter URLs to SEO.</p>
<p>For example,</p>
<pre class="brush: plain;">
Current URL style: http://example.com/controller/method/category1/category2/page-name
Target URL style: http://example.com/category1/category2/page-name.html
</pre>
<p><span id="more-192"></span><br />
As you can see, the difference in the target URL is the absence of the controller name and the method name and the presence of the extension &#8220;.html&#8221;. Now, lets see how to achieve this and why the extra extension is required.</p>
<p>Below is my version of .htaccess.</p>
<pre class="brush: plain;">
RewriteEngine on

RewriteRule ^([a-z0-9_-]+)\.html$ index.php/page/$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|asset|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]
</pre>
<p>The line that is extra is 3 which redirects all the requests for &#8220;.html&#8221; files to the controller named &#8220;page&#8221;.</p>
<p>Now, lets look at the page controller which will handle these requests.</p>
<pre class="brush: php;">
&lt;?php if (!defined('BASEPATH')) exit('No direct script access allowed');

class Page extends Controller
    {

    function __construct()
    {
        parent::Controller();
    }

    function _remap()
    {
        $segment_count = $this-&gt;uri-&gt;total_segments();
        $segments = $this-&gt;uri-&gt;segment_array();

        if($segment_count == 0)
        {
            $this-&gt;data['title'] = 'UB Group Wines Division';
            $this-&gt;load-&gt;view('home', $this-&gt;data);
        }
        elseif($segment_count == 2) // Single page
        {
            $page_url = $segments[2];
            // Handle the page request
        }
        elseif($segment_count == 3) // Page with category
        {
            $category = $segments[2];
            $page_url = $segments[3];
            // Handle the category + page request
        }
    }
}
</pre>
<p>In this way you can have pages with smaller and cleaner URLs.</p>
<p><b>Tips:</b><br />
1. You can use any extension you like. e.g; in case you have static HTML files to server, you can use the extension &#8220;.html&#8221; for static and &#8220;.htm&#8221; for non-static files.<br />
2. You can have any number of URL stubs before the &#8220;.html&#8221; extension and you can access all these stubs in the controller.</p>
<p><b>Cons:</b><br />
1. The URL needs an extra extension.<br />
2. Only one controller per extension.</p>
<p>Do let me know what you think about this or if there is any way to improve on this.</p>


<p>Related posts:<ol><li><a href='http://thinkapi.com/blog/codeigniter-separating-reads-and-writes-for-scaling-mysql/' rel='bookmark' title='Permanent Link: Codeigniter: Separating reads and writes for scaling MySQL'>Codeigniter: Separating reads and writes for scaling MySQL</a> <small>Generally websites average a ratio of 9:1 or more for...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://thinkapi.com/blog/making-codeigniter-clean-urls-cleaner/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Dropbox&#8217;s Y Combinator Funding Application &#8211; Summer 07</title>
		<link>http://thinkapi.com/blog/dropbox-y-combinator-funding-application-summer-07/</link>
		<comments>http://thinkapi.com/blog/dropbox-y-combinator-funding-application-summer-07/#comments</comments>
		<pubDate>Sat, 05 Sep 2009 03:56:44 +0000</pubDate>
		<dc:creator>Sukumar</dc:creator>
				<category><![CDATA[Business IT]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[dropbox]]></category>
		<category><![CDATA[Hacker News]]></category>
		<category><![CDATA[sequoia capital]]></category>
		<category><![CDATA[Startup]]></category>
		<category><![CDATA[Y Combinator]]></category>

		<guid isPermaLink="false">http://thinkapi.com/blog/?p=186</guid>
		<description><![CDATA[Dropbox is an online storage company that offers multi platform access as well as version control. While they received a funding of $1.5 million Sequoia Capital, their initial incubation and seed stage funding was through Y Combinator. Their application to Y Combinator during summer of 2007 is an excellent example and a model for companies [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p><a href="https://www.getdropbox.com/"><img class="alignright size-full wp-image-187" title="dropbox_logo_home" src="http://thinkapi.com/blog/wp-content/uploads/2009/09/dropbox_logo_home.png" alt="dropbox_logo_home" width="290" height="75" />Dropbox</a> is an online storage company that offers multi platform access as well as version control. While they received a funding of $1.5 million <a href="http://www.sequoiacap.com/">Sequoia Capital</a>, their initial incubation and seed stage funding was through <a href="http://ycombinator.com/">Y Combinator</a>.</p>
<p><span id="more-186"></span>Their <a href="http://files.getdropbox.com/u/2/app.html">application to Y Combinator during summer of 2007</a> is an excellent example and a model for companies looking for seed stage funding. The recent discussion of this on <a href="http://news.ycombinator.com/item?id=801503">Hacker News</a> explores and analyses this. The comment from pg (Paul Graham) being</p>
<blockquote><p><span><span style="color: #000000;">What happens when I read this:</span><span style="color: #000000;">File syncing.  Superset of backups, which people will pay for. Good.  Single founder.  Bad.  But at least he&#8217;s looking for more people.  Went to MIT, 1600 SAT.  Probably fairly smart.  Wrote a poker bot.  Now I&#8217;m starting to get interested; has the right attitude.  Description of the software sounds plausible but generic. Maybe it&#8217;s good, but who can tell.  But little sister uses it; that&#8217;s impressive.  Scroll down to what he understands that competitors don&#8217;t get.  Wow: very concise and unequivocal.  I&#8217;m now basically sold.  Scroll through the rest.  No red flags.  Did not make the usual joke single founders make when asked how long the founders have known one another.  Good answer to what might go wrong.   A-. (Would be an A with a cofounder.)</span></span></p>
<p><span><span style="color: #000000;">I went back and looked at this application in our system, and I did in fact give it an A-.</span></span><span style="color: #000000;"> An A- means &#8220;I want to interview.&#8221;  An A means &#8220;I want to interview, even if Rtm and Trevor don&#8217;t.&#8221; I only gave 2 As in s2007. (We funded both those companies, and both did badly.)</span></p></blockquote>
<p><span style="color: #000000;">The description of the company in a few sentences is the best part.</span></p>
<blockquote><p>Dropbox synchronizes files across your/your team&#8217;s computers. It&#8217;s much better than uploading or email, because it&#8217;s automatic, integrated into Windows, and fits into the way you already work. There&#8217;s also a web interface, and the files are securely backed up to Amazon S3. Dropbox is kind of like taking the best elements of subversion, trac and rsync and making them &#8220;just work&#8221; for the average individual or team. Hackers have access to these tools, but normal people don&#8217;t.</p>
<p>There are lots of interesting possible features. One is syncing Google Docs/Spreadsheets (or other office web apps) to local .doc and .xls files for offline access, which would be strategically important as few web apps deal with the offline problem.</p></blockquote>
<p>Drew&#8217;s profile and his alternate ideas add stars to the application.</p>
<blockquote><p>One click screen sharing (already done pretty well by Glance); a wiki with version-controlled drawing canvases that let you draw diagrams or mock up UIs (Thinkature is kind of related, but this is more text with canvases interspersed than a shared whiteboard) to help teams get on the same page and spec things out better (we use Visio and Powerpoint at Bit9, which sucks)</p></blockquote>
<p>Overall, its great to have such quality document as a reference and example for startups aiming for the skies.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://thinkapi.com/blog/dropbox-y-combinator-funding-application-summer-07/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interview of distinguished programmers</title>
		<link>http://thinkapi.com/blog/interview-of-distinguished-programmers/</link>
		<comments>http://thinkapi.com/blog/interview-of-distinguished-programmers/#comments</comments>
		<pubDate>Tue, 11 Aug 2009 06:23:08 +0000</pubDate>
		<dc:creator>Sukumar</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://thinkapi.com/blog/?p=179</guid>
		<description><![CDATA[Jarosław Rzeszótko from Poland decided to interview distinguished programmers. Linus Torvalds &#8211; The Linux kernel author Dave Thomas &#8211; Author of the “Pragmmatic Programmer”, “Programming Ruby” and other great books about programming. One can read his mainly programming-related thoughts here. David Heinemeier Hansson &#8211; Author of the Rails Framework &#8211; the new hot web development [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.stifflog.com/">Jarosław Rzeszótko</a> from Poland decided to <a title="Stiff asks, great programmers answer" href="http://www.stifflog.com/2006/10/16/stiff-asks-great-programmers-answer/">interview distinguished programmers.</a></p>
<blockquote><p><strong>Linus Torvalds</strong> &#8211; The <a href="http://www.linux.org/">Linux kernel</a> author</p>
<p><strong>Dave Thomas</strong> &#8211; Author of the “Pragmmatic Programmer”, “Programming Ruby” and other great books about programming. One can read his mainly programming-related thoughts <a href="http://blogs.pragprog.com/cgi-bin/pragdave.cgi">here</a>.</p>
<p><strong>David Heinemeier Hansson</strong> &#8211; Author of the <a href="http://www.rubyonrails.org/">Rails Framework</a> &#8211; the new hot web development framework. He has a weblog <a href="http://www.loudthinking.com/">here</a>.</p>
<p><strong>Steve Yegge</strong> &#8211; Probably the least known from guys here, but also made one of the most interestings answers, has a popular <a href="http://steve-yegge.blogspot.com/">weblog</a> about programming. He is also the author of a game called “Wyvern”.</p>
<p><strong>Peter Norvig</strong> &#8211; Research Director at Google, a well known Lisper, author of famous (in some circles at least) books about AI. <a href="http://www.norvig.com/">See his homepage.</a></p>
<p><strong>Guido Van Rossum</strong> &#8211; The <a href="http://www.python.org/">Python</a> language creator</p>
<p><strong>Bjarne Stroustrup</strong> &#8211; C++ creator, has a homepage <a href="http://www.research.att.com/%7Ebs/">here</a></p>
<p><strong>James Gosling</strong> &#8211; The <a href="http://java.sun.com/">Java</a> language creator</p>
<p><strong>Tim Bray</strong> &#8211; One of the XML and Atom specifications author and a <a href="http://www.tbray.org/ongoing/">blogger</a> too.</p></blockquote>
<p>An excellent read.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://thinkapi.com/blog/interview-of-distinguished-programmers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Codeigniter: Separating reads and writes for scaling MySQL</title>
		<link>http://thinkapi.com/blog/codeigniter-separating-reads-and-writes-for-scaling-mysql/</link>
		<comments>http://thinkapi.com/blog/codeigniter-separating-reads-and-writes-for-scaling-mysql/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 09:41:12 +0000</pubDate>
		<dc:creator>Sukumar</dc:creator>
				<category><![CDATA[Codeigniter]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[database replication]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[mysql replication]]></category>
		<category><![CDATA[replication]]></category>

		<guid isPermaLink="false">http://thinkapi.com/blog/?p=173</guid>
		<description><![CDATA[Generally websites average a ratio of 9:1 or more for reads:writes for their applications which makes MySQL replication as one of the ways to scale you web application. The simplest configuration is to separate reads and writes with all the reads coming from the slave servers. We can implement this in codeigniter using database groups. [...]


Related posts:<ol><li><a href='http://thinkapi.com/blog/making-codeigniter-clean-urls-cleaner/' rel='bookmark' title='Permanent Link: Making Codeigniter clean URLs cleaner'>Making Codeigniter clean URLs cleaner</a> <small>Usually when working with codeigniter you come across the use...</small></li>
<li><a href='http://thinkapi.com/blog/how-to-skip-mysql-replication-counter/' rel='bookmark' title='Permanent Link: How to skip MySQL replication counter'>How to skip MySQL replication counter</a> <small>There are such times when MySQL replication stops when you...</small></li>
<li><a href='http://thinkapi.com/blog/upgrading-to-mysql-51-ga-better-wait/' rel='bookmark' title='Permanent Link: Upgrading to MySQL 5.1 GA? Better Wait'>Upgrading to MySQL 5.1 GA? Better Wait</a> <small>MySQL 5.1 General Availability has been released to the public....</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Generally websites average a ratio of 9:1 or more for reads:writes for their applications which makes MySQL replication as one of the ways to scale you web application. The simplest configuration is to separate reads and writes with all the reads coming from the slave servers.<br />
<span id="more-173"></span><br />
<div id="attachment_174" class="wp-caption aligncenter" style="width: 440px"><a href="http://www.teonator.net/2008/10/23/mysql-replication/"><img class="size-full wp-image-174" title="MySQL Database replication" src="http://thinkapi.com/blog/wp-content/uploads/2009/08/db_replication.jpg" alt="MySQL Database replication" width="430" height="450" /></a><p class="wp-caption-text">MySQL Database replication</p></div></p>
<p>We can implement this in <a href="http://codeigniter.com/" target="_blank">codeigniter</a> using database groups.<br />
Below is a sample execution.</p>
<p>Create two active groups &#8211; one for read and one for write.</p>
<p>File: system/application/config/database.php</p>
<pre class="brush: php;">
$active_group = &quot;write&quot;;
$active_record = TRUE;

$db['read']['hostname'] = &quot;localhost&quot;;
$db['read']['username'] = &quot;root&quot;;
$db['read']['password'] = &quot;&quot;;
$db['read']['database'] = &quot;read_database_name&quot;;
$db['read']['dbdriver'] = &quot;mysql&quot;;
$db['read']['dbprefix'] = &quot;&quot;;
$db['read']['pconnect'] = TRUE;
$db['read']['db_debug'] = FALSE;
$db['read']['cache_on'] = FALSE;
$db['read']['cachedir'] = &quot;&quot;;
$db['read']['char_set'] = &quot;utf8&quot;;
$db['read']['dbcollat'] = &quot;utf8_general_ci&quot;;

$db['write']['hostname'] = &quot;localhost&quot;;
$db['write']['username'] = &quot;root&quot;;
$db['write']['password'] = &quot;&quot;;
$db['write']['database'] = &quot;write_database_name&quot;;
$db['write']['dbdriver'] = &quot;mysql&quot;;
$db['write']['dbprefix'] = &quot;&quot;;
$db['write']['pconnect'] = TRUE;
$db['write']['db_debug'] = FALSE;
$db['write']['cache_on'] = FALSE;
$db['write']['cachedir'] = &quot;&quot;;
$db['write']['char_set'] = &quot;utf8&quot;;
$db['write']['dbcollat'] = &quot;utf8_general_ci&quot;;
</pre>
<p>Create separate database connections to access read and write databases separately where needed (constructor is generally a good place for this).</p>
<pre class="brush: php;">
$read_db = $this-&gt;load-&gt;database('read', TRUE);
$write_db = $this-&gt;load-&gt;database('write', TRUE);
</pre>
<p>You can now go about running queries in the usual way.</p>
<pre class="brush: php;">
/* For reads */
$query = $read_db-&gt;get('table_name');

foreach ($query-&gt;result() as $row)
{
    echo $row-&gt;title;
}

/* For writes */
$data = array(
               'title' =&gt; $title,
               'name' =&gt; $name,
               'date' =&gt; $date
            );

$write_db-&gt;insert('mytable', $data);
</pre>
<p>In case you want to try this on an application you are already running, you can leave the &#8220;default&#8221; connection group intact and create only the &#8220;read&#8221; connection group. Use it where you think you are running read heavy queries.</p>


<p>Related posts:<ol><li><a href='http://thinkapi.com/blog/making-codeigniter-clean-urls-cleaner/' rel='bookmark' title='Permanent Link: Making Codeigniter clean URLs cleaner'>Making Codeigniter clean URLs cleaner</a> <small>Usually when working with codeigniter you come across the use...</small></li>
<li><a href='http://thinkapi.com/blog/how-to-skip-mysql-replication-counter/' rel='bookmark' title='Permanent Link: How to skip MySQL replication counter'>How to skip MySQL replication counter</a> <small>There are such times when MySQL replication stops when you...</small></li>
<li><a href='http://thinkapi.com/blog/upgrading-to-mysql-51-ga-better-wait/' rel='bookmark' title='Permanent Link: Upgrading to MySQL 5.1 GA? Better Wait'>Upgrading to MySQL 5.1 GA? Better Wait</a> <small>MySQL 5.1 General Availability has been released to the public....</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://thinkapi.com/blog/codeigniter-separating-reads-and-writes-for-scaling-mysql/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PythonTurtle &#8211; Python learning environment for beginners and children</title>
		<link>http://thinkapi.com/blog/pythonturtle-python-learning-environment-for-beginners-and-children/</link>
		<comments>http://thinkapi.com/blog/pythonturtle-python-learning-environment-for-beginners-and-children/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 07:47:58 +0000</pubDate>
		<dc:creator>Sukumar</dc:creator>
				<category><![CDATA[Random Articles]]></category>
		<category><![CDATA[learning environment]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://thinkapi.com/blog/?p=162</guid>
		<description><![CDATA[PythonTurtle is a fun and interesting way to learn python for beginners and children. According to the website, PythonTurtle strives to provide the lowest-threshold way to learn Python. Students command an interactive Python shell (similar to the IDLE development environment) and use Python functions to move a turtle displayed on the screen. An illustrated help [...]


Related posts:<ol><li><a href='http://thinkapi.com/blog/links-2008-09-01/' rel='bookmark' title='Permanent Link: Links &#8211; 2008-09-01'>Links &#8211; 2008-09-01</a> <small>Reverse HTTP Reverse HTTP is an experimental protocol which takes...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;"><a title="PythonTurtle" href="http://pythonturtle.com/" target="_blank">PythonTurtle</a> is a fun and interesting way to learn python for beginners and children.</p>
<p style="text-align: left;"><img class="size-full wp-image-163 aligncenter" title="screenshot" src="http://thinkapi.com/blog/wp-content/uploads/2009/08/screenshot.gif" alt="screenshot" width="465" height="472" /></p>
<p><a title="PythonTurtle" href="http://pythonturtle.com/" target="_blank"><br />
</a></p>
<p><span id="more-162"></span>According to the website,</p>
<blockquote><p>PythonTurtle strives to provide the lowest-threshold way to learn Python. Students command an interactive Python shell (similar to the IDLE development environment) and use Python functions to move a turtle displayed on the screen. An illustrated help screen introduces the student to the basics of Python programming while demonstrating how to move the turtle.</p></blockquote>
<p>Resources:<br />
<a href="http://github.com/cool-RR/PythonTurtle/tree/master" target="_blank">Source Code</a><br />
<a href="http://pythonturtle.com/">Get installer from home page</a></p>


<p>Related posts:<ol><li><a href='http://thinkapi.com/blog/links-2008-09-01/' rel='bookmark' title='Permanent Link: Links &#8211; 2008-09-01'>Links &#8211; 2008-09-01</a> <small>Reverse HTTP Reverse HTTP is an experimental protocol which takes...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://thinkapi.com/blog/pythonturtle-python-learning-environment-for-beginners-and-children/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to create your own UNIX clone Operating System</title>
		<link>http://thinkapi.com/blog/how-to-create-your-own-unix-clone-operating-system/</link>
		<comments>http://thinkapi.com/blog/how-to-create-your-own-unix-clone-operating-system/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 07:11:53 +0000</pubDate>
		<dc:creator>Sukumar</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Systems]]></category>
		<category><![CDATA[assembly]]></category>
		<category><![CDATA[haskell]]></category>
		<category><![CDATA[kernel development]]></category>
		<category><![CDATA[lisp]]></category>
		<category><![CDATA[os dev]]></category>
		<category><![CDATA[os development]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[unix clone]]></category>

		<guid isPermaLink="false">http://thinkapi.com/blog/?p=157</guid>
		<description><![CDATA[Working on operating systems can be a lot of fun while learning some of the most difficult concepts in programming. One needs to have a basic set of knowledge and skills such as Basics of programming: variables, references, data types, scope, pointers, error handling, iteration, core algorithms related to searching, sorting, and so on Basics [...]


Related posts:<ol><li><a href='http://thinkapi.com/blog/linus-torvalds-starts-blogging/' rel='bookmark' title='Permanent Link: Linus Torvalds starts blogging'>Linus Torvalds starts blogging</a> <small>Linus Torvalds best known for having initiated the development of...</small></li>
<li><a href='http://thinkapi.com/blog/pythonturtle-python-learning-environment-for-beginners-and-children/' rel='bookmark' title='Permanent Link: PythonTurtle &#8211; Python learning environment for beginners and children'>PythonTurtle &#8211; Python learning environment for beginners and children</a> <small>PythonTurtle is a fun and interesting way to learn python...</small></li>
<li><a href='http://thinkapi.com/blog/interview-of-distinguished-programmers/' rel='bookmark' title='Permanent Link: Interview of distinguished programmers'>Interview of distinguished programmers</a> <small>Jarosław Rzeszótko from Poland decided to interview distinguished programmers. Linus...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Working on operating systems can be a lot of fun while learning some of the most difficult concepts in programming. One needs to have a basic set of knowledge and skills such as</p>
<p><span id="more-157"></span></p>
<p><strong>Basics of programming:</strong> variables, references, data types, scope, pointers, error handling, iteration, core algorithms related to searching, sorting, and so on<br />
<strong>Basics of maths and statistics:</strong> hexadecimal, binary, boolean logic, probability and so on<br />
<strong>Assembly:</strong> Knowledge of a low level language is very essential and part of writing an OS<br />
<strong>Languages:</strong> While C, C++ are the most widely used, one can also go with <a href="http://common-lisp.net/project/movitz/movitz.html" target="_blank">java</a>, <a href="http://common-lisp.net/project/movitz/movitz.html" target="_blank">haskell</a>, <a href="http://common-lisp.net/project/movitz/movitz.html" target="_blank">lisp</a> etc.<br />
<strong>Linux / Unix:</strong> Experience on linux or UNIX based platforms is needed for using tools required for OS development<br />
<strong>Tools:</strong> Familiarity in working with compilers, assemblers, linkers and make utility</p>
<p>Getting started:<br />
<a href="http://aodfaq.wikispaces.com/" target="_blank">Alt OS Development FAQ</a><br />
<a href="http://wiki.osdev.org/Getting_Started" target="_blank">OS Dev getting started</a></p>
<p>Resources:<br />
<a href="http://www.jamesmolloy.co.uk/tutorial_html/index.html" target="_blank">JamesM&#8217;s kernel development tutorials</a><a href="http://wiki.osdev.org/" target="_blank"><br />
OS development wiki</a> and <a href="http://forum.osdev.org/" target="_blank">OS development forums</a><br />
<a href="http://www.osdever.net/tutorials.php?cat=0&amp;sort=1" target="_blank">Tutorials from osdever.net</a><strong><a class="uln" href="http://groups.google.co.uk/groups/dir?sel=usenet%3Dalt"></a><br />
</strong><a href="http://groups.google.co.uk/group/alt.os.development/topics" target="_blank">alt.os.development</a><strong><br />
</strong> <a href="http://www.intel.com/products/processor/manuals/index.htm" target="_blank">Intel<span class="regtitle">®</span> 64 and IA-32 Architectures Software Developer&#8217;s Manuals</a><br />
<a href="http://www.logix.cz/michal/doc/i386/" target="_blank">Intel 80386 Programmer&#8217;s Reference Manual</a><br />
<a href="http://www.nondot.org/sabre/os/articles" target="_blank">OSRC: The Operating System Resource Center</a><br />
<a href="http://www.informit.com/articles/article.aspx?p=26396" target="_blank">Implementing an Operating System &#8211; By Andrew S. Tanenbaum</a></p>


<p>Related posts:<ol><li><a href='http://thinkapi.com/blog/linus-torvalds-starts-blogging/' rel='bookmark' title='Permanent Link: Linus Torvalds starts blogging'>Linus Torvalds starts blogging</a> <small>Linus Torvalds best known for having initiated the development of...</small></li>
<li><a href='http://thinkapi.com/blog/pythonturtle-python-learning-environment-for-beginners-and-children/' rel='bookmark' title='Permanent Link: PythonTurtle &#8211; Python learning environment for beginners and children'>PythonTurtle &#8211; Python learning environment for beginners and children</a> <small>PythonTurtle is a fun and interesting way to learn python...</small></li>
<li><a href='http://thinkapi.com/blog/interview-of-distinguished-programmers/' rel='bookmark' title='Permanent Link: Interview of distinguished programmers'>Interview of distinguished programmers</a> <small>Jarosław Rzeszótko from Poland decided to interview distinguished programmers. Linus...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://thinkapi.com/blog/how-to-create-your-own-unix-clone-operating-system/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google recursion easter egg</title>
		<link>http://thinkapi.com/blog/google-recursion-easter-egg/</link>
		<comments>http://thinkapi.com/blog/google-recursion-easter-egg/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 11:14:35 +0000</pubDate>
		<dc:creator>Sukumar</dc:creator>
				<category><![CDATA[Random Articles]]></category>

		<guid isPermaLink="false">http://thinkapi.com/blog/?p=154</guid>
		<description><![CDATA[Try googling for the word recursion and you get &#8220;Did you mean: recursion&#8220;. Ofcouse you spelled it right. Its just that google enginners have a sense of humour No related posts.


No related posts.]]></description>
			<content:encoded><![CDATA[<p><a title="Google Recusrion" href="http://www.google.com/search?q=recursion" target="_self">Try googling for the word recursion</a> and you get &#8220;<span style="color: #cc0000;">Did you mean: </span><a href="http://www.google.com/search?q=recursion&amp;spell=1"><strong><em>recursion</em></strong></a>&#8220;. Ofcouse you spelled it right. Its just that google enginners have a sense of humour <img src='http://thinkapi.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://thinkapi.com/blog/google-recursion-easter-egg/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rediff Business Solutions &#8211; Rediff Hosting Review</title>
		<link>http://thinkapi.com/blog/rediff-business-solutions-rediff-hosting-review/</link>
		<comments>http://thinkapi.com/blog/rediff-business-solutions-rediff-hosting-review/#comments</comments>
		<pubDate>Fri, 17 Jul 2009 12:05:40 +0000</pubDate>
		<dc:creator>Sukumar</dc:creator>
				<category><![CDATA[Business IT]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[domain name registration]]></category>
		<category><![CDATA[domain registration]]></category>
		<category><![CDATA[rediff business solutions]]></category>
		<category><![CDATA[rediff domain registration]]></category>
		<category><![CDATA[rediff hosting]]></category>

		<guid isPermaLink="false">http://thinkapi.com/blog/?p=105</guid>
		<description><![CDATA[Rediff business solutions consists of domain registration, hosting and e-mail solutions. Rediff Domain Name Registration Below is a screenshot of the home page As you can notice, only the first tab is for managing you domains. Rest are just tabs to buy other rediff services. The following features are available in terms of actual domain [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<div id="attachment_106" class="wp-caption alignright" style="width: 364px"><img class="size-full wp-image-106" title="Rediff Business Solutions" src="http://thinkapi.com/blog/wp-content/uploads/2009/07/rediff_logo.gif" alt="Rediff Business Solutions - Rediff Hosting" width="354" height="29" /><p class="wp-caption-text">Rediff Business Solutions - Rediff Hosting</p></div>
<p>Rediff business solutions consists of domain registration, hosting and e-mail solutions.</p>
<p><strong><span id="more-105"></span>Rediff Domain Name Registration</strong></p>
<p>Below is a screenshot of the home page</p>
<div id="attachment_107" class="wp-caption aligncenter" style="width: 560px"><a href="http://thinkapi.com/blog/wp-content/uploads/2009/07/rediff_hosting_home.gif"><img class="size-full wp-image-107" title="Rediff Hosting Home Page" src="http://thinkapi.com/blog/wp-content/uploads/2009/07/rediff_hosting_home.gif" alt="Rediff Hosting Home Page" width="550" height="387" /></a><p class="wp-caption-text">Rediff Domain Hosting Home Page</p></div>
<p>As you can notice, only the first tab is for managing you domains. Rest are just tabs to buy other rediff services. The following features are available in terms of actual domain management control panel.</p>
<p>1. Create/manage A records</p>
<p>2. Mail server mapping</p>
<p>3. Domain forwarding (CNAME)</p>
<p>4. URL redirection (still in beta)</p>
<p>5. Edit domain registry information</p>
<p>6. Name server mapping</p>
<p>Missing features that are normally provided by other registrars</p>
<p>1. Hidden Whois</p>
<p>2. <strong>Account transfer</strong></p>
<p>3. Parking page customization</p>
<p>4. Auth code information</p>
<p>5. Place to renew your domain name</p>
<p>All the above is totally manual and is possible only through e-mail (weeks) or phone (days). Kinda ironic for an internet company.</p>
<p>Another interesting point I noted is that there is no place to change your account information. Want to change your password? No way. Want to change your secret question? No way. No way to even view this information. The support guys tell you this feature(?) just does not exist. Any chance we can get this anytime soon? No. Ever? No.</p>
<p>This is the kind of support you can expect.</p>
<p>Say you decide to go through the documentation/Help page yourself. This is what you get.</p>
<p style="text-align: center;">
<div id="attachment_110" class="wp-caption aligncenter" style="width: 590px"><a href="http://thinkapi.com/blog/wp-content/uploads/2009/07/rediff_support.png"><img class="size-full wp-image-110" title="Rediff Support Page" src="http://thinkapi.com/blog/wp-content/uploads/2009/07/rediff_support.png" alt="Rediff Support Page" width="580" height="623" /></a><p class="wp-caption-text">Rediff Support Page</p></div>
<p style="text-align: left;">
<p style="text-align: left;">So all you get is this page where the what you are looking for is tucked away in the corner. All the questions that are listed here assumes you are technically incompetant and there is no advanced help available at all. Notice the absense of support/contact number in all of the pages.</p>
<p style="text-align: left;">There is some decent information available in the FAQ page. But it turns out to be a sandbox.</p>
<p style="text-align: center;">
<div id="attachment_111" class="wp-caption aligncenter" style="width: 590px"><a href="http://thinkapi.com/blog/wp-content/uploads/2009/07/rediff_faq.png"><img class="size-full wp-image-111" title="rediff_faq" src="http://thinkapi.com/blog/wp-content/uploads/2009/07/rediff_faq.png" alt="Reddit FAQ page" width="580" height="266" /></a><p class="wp-caption-text">Reddit FAQ page</p></div>
<p style="text-align: left;">
<p style="text-align: left;">So there is effectively no way to go back to the home page. Ofcourse, you can change the URL yourself but I am not so sure if kind of users rediff gets will be able to handle that.</p>
<p style="text-align: left;">With regard to the actual working of these features, I tested it by creating a new A record. While other registrars I have used take a couple of minutes to reflect this, rediff showed me the status as &#8220;<em>pending</em>&#8221; for 30 minutes and the actual record was only created 8 hours later. -1 for speed.</p>
<p style="text-align: left;"><strong>Conclusion</strong>: Rediff domain service is overpriced, under featured, supportless, slow running only on its previous reputation. My recommendation is to go with <a title="Domainsite" href="http://domainsite.com" target="_self">domainsite.com</a> (its faster and simpler than <a href="http://godaddy.com">godaddy</a>).</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://thinkapi.com/blog/rediff-business-solutions-rediff-hosting-review/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Ajax Push Engine &#8211; Javascript framework to handle 100,000 concurrent users</title>
		<link>http://thinkapi.com/blog/ajax-push-engine-javascript-framework/</link>
		<comments>http://thinkapi.com/blog/ajax-push-engine-javascript-framework/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 08:51:49 +0000</pubDate>
		<dc:creator>Sukumar</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[APE]]></category>
		<category><![CDATA[http server]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mootools]]></category>
		<category><![CDATA[xhr]]></category>

		<guid isPermaLink="false">http://thinkapi.com/blog/?p=96</guid>
		<description><![CDATA[From their website, Ajax Push Engine (APE) is an OpenSource technology allowing to exchange data between thousands of users through a web browser, without reloading and without external plugins. It consists of an epoll-driven HTTP server written in C as its core with a javascript framework based on mootools for the frontend. APE supports multiple [...]


Related posts:<ol><li><a href='http://thinkapi.com/blog/socialhistoryjs-find-out-what-your-users-are-thinking/' rel='bookmark' title='Permanent Link: SocialHistory.js &#8211; Find out what your users are thinking'>SocialHistory.js &#8211; Find out what your users are thinking</a> <small>SocialHistory.js &#8211; a solution (problem?) to check where your users...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignright" style="width: 300px"><a href="http://www.ape-project.org/"><img title="APE Project" src="http://lh6.ggpht.com/_f3EtWybcQP4/SjCzwWAohnI/AAAAAAAAA04/5GGNFhxAGNY/s800/ape_logo_l.png" alt="Ajax Push Engine" width="290" height="110" /></a><p class="wp-caption-text">Ajax Push Engine</p></div>
<p><span style="line-height: 19px;">From their <a title="Ajax Push Engine" href="http://www.ape-project.org/" target="_self">website</a>,<strong> Ajax Push Engine</strong> (APE) is an <strong>OpenSource</strong> technology allowing to <strong>exchange data</strong> between <strong>thousands of users</strong> through a web browser, without reloading and without external plugins.</span></p>
<p>It consists of an <strong>epoll-driven HTTP server</strong> written in C as its core with a javascript framework based on mootools for the frontend. APE supports multiple patterns such as comet, XHR, long polling, forever frame etc. because of the way its designed.</p>
<p><span id="more-96"></span>APE can be used for a wide variety of applications ranging from browser based chat to updating stock quotes in real time, some of which can be seen on the <a href="http://www.ape-project.org/en/demos/" target="_self">demo page</a>.</p>
<p>The really interesting aspect of all this is the claim that APE can handle 100,000 connections on the same server. It is also  cross browser compatible and uses all the lastest browser features and provides backward compatibility for older ones.</p>
<p><strong>Related Links</strong></p>
<p><a title="APE project" href="http://www.ape-project.org/" target="_self">Official website</a></p>
<p><a title="About APE" href="http://www.ape-project.org/en/about.html" target="_self">Read more about APE architecture</a></p>
<p><a href="http://www.ape-project.org/en/demos/" target="_self">Demos</a></p>


<p>Related posts:<ol><li><a href='http://thinkapi.com/blog/socialhistoryjs-find-out-what-your-users-are-thinking/' rel='bookmark' title='Permanent Link: SocialHistory.js &#8211; Find out what your users are thinking'>SocialHistory.js &#8211; Find out what your users are thinking</a> <small>SocialHistory.js &#8211; a solution (problem?) to check where your users...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://thinkapi.com/blog/ajax-push-engine-javascript-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upgrading to MySQL 5.1 GA? Better Wait</title>
		<link>http://thinkapi.com/blog/upgrading-to-mysql-51-ga-better-wait/</link>
		<comments>http://thinkapi.com/blog/upgrading-to-mysql-51-ga-better-wait/#comments</comments>
		<pubDate>Mon, 01 Dec 2008 04:14:07 +0000</pubDate>
		<dc:creator>Sukumar</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Systems]]></category>
		<category><![CDATA[michael widenius]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[MySQL 5.1]]></category>
		<category><![CDATA[MySQL 5.1 GA]]></category>

		<guid isPermaLink="false">http://thinkapi.com/blog/?p=89</guid>
		<description><![CDATA[MySQL 5.1 General Availability has been released to the public. While many recommend using it and other don&#8217;t, Michael Widenius (Founder and original developer of MySQL) says it might not be worth it yet to upgrade your production databases. If WTF quotes like, We have changed the release model so that instead of focusing on [...]


Related posts:<ol><li><a href='http://thinkapi.com/blog/how-to-skip-mysql-replication-counter/' rel='bookmark' title='Permanent Link: How to skip MySQL replication counter'>How to skip MySQL replication counter</a> <small>There are such times when MySQL replication stops when you...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://dev.mysql.com/downloads/">MySQL</a> 5.1 <a href="http://en.wikipedia.org/wiki/Beta_version#GA">General Availability</a> has been released to the public. While <a href="http://www.pythian.com/blogs/1168/why-you-want-to-switch-to-mysql-51">many recommend using it</a> and <a href="http://www.mysqlperformanceblog.com/2008/06/30/mysql-51-stability/">other don&#8217;t</a>, <a href="http://monty-says.blogspot.com/2008/11/oops-we-did-it-again-mysql-51-released.html">Michael Widenius (Founder and original developer of MySQL) says</a> it might not be worth it yet to upgrade your production databases.<br />
<span id="more-89"></span><br />
If WTF quotes like,</p>
<blockquote><p>
We have changed the release model so that instead of focusing on quality and features our release is now defined by timeliness and features. Quality is not regarded to be that important.
</p></blockquote>
<p>and</p>
<blockquote><p>
Zero critical bugs is impossible: Sure, zero bugs is desirable. And at times, we internally glorify MySQL’s past, with “production level alpha releases”. Those were the days, but those days also had less complex and less interwoven features, and fewer developers to manage.
</p></blockquote>
<p>I wonder where MySQL is headed.</p>
<p>So as Monty says, you are better off not upgrading to version 5.1 if you do not plan to use its new features, atleast not without testing it for a few weeks.</p>
<p>Links:<br />
<a href="http://monty-says.blogspot.com/2008/11/oops-we-did-it-again-mysql-51-released.html">Oops, we did it again (MySQL 5.1 released as GA with crashing bugs)</a><br />
<a href="http://www.pythian.com/blogs/1168/why-you-want-to-switch-to-mysql-51">Why You Want to Switch to MySQL 5.1</a><br />
<a href="http://www.mysqlperformanceblog.com/2008/06/30/mysql-51-stability/">MySQL 5.1 Stability</a></p>


<p>Related posts:<ol><li><a href='http://thinkapi.com/blog/how-to-skip-mysql-replication-counter/' rel='bookmark' title='Permanent Link: How to skip MySQL replication counter'>How to skip MySQL replication counter</a> <small>There are such times when MySQL replication stops when you...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://thinkapi.com/blog/upgrading-to-mysql-51-ga-better-wait/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
