<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="http://feeds.feedburner.com/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><!-- generator="wordpress/2.3.3" --><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/" version="2.0">

<channel>
	<title>Desi Founder @ Work</title>
	<link>http://sharjeel.2scomplement.com</link>
	<description>Journal of a Pakistani Tech Entrepreneur</description>
	<pubDate>Sun, 09 Nov 2008 21:29:58 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/sharjeel" type="application/rss+xml" /><item>
		<title>Rate my startup See’n'Report on Knight News Challenge</title>
		<link>http://sharjeel.2scomplement.com/2008/11/09/rate-my-startup-seenreport-on-knights-news-challenge/</link>
		<comments>http://sharjeel.2scomplement.com/2008/11/09/rate-my-startup-seenreport-on-knights-news-challenge/#comments</comments>
		<pubDate>Sun, 09 Nov 2008 21:28:54 +0000</pubDate>
		<dc:creator>sharjeel</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://sharjeel.2scomplement.com/2008/11/09/rate-my-startup-seenreport-on-knights-news-challenge/</guid>
		<description><![CDATA[We've submitted See'n'Report at Knight News Challenge 2009.
Here is the link to the grant application. The application not only describes our current status but also envisions our long term objectives.
I'd like to request everyone following my blog, especially the django community, to rate and comment it.

  addthis_url    = 'http%3A%2F%2Fsharjeel.2scomplement.com%2F2008%2F11%2F09%2Frate-my-startup-seenreport-on-knights-news-challenge%2F';
  addthis_title [...]]]></description>
			<content:encoded><![CDATA[<p>We've submitted See'n'Report at Knight News Challenge 2009.</p>
<p>Here is the <a href="http://generalapp.newschallenge.org/SNC/ViewItem.aspx?pguid=4a4f8c6a-d2c2-4545-82db-c8ed4b415eba&amp;itemguid=0d5bdf6b-b0de-458e-9958-a10508137e64" title="link" onclick="javascript:pageTracker._trackPageview('/outbound/article/generalapp.newschallenge.org');">link to the grant application</a>. The application not only describes our current status but also envisions our long term objectives.</p>
<p>I'd like to request everyone following my blog, especially the django community, to rate and comment it.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fsharjeel.2scomplement.com%2F2008%2F11%2F09%2Frate-my-startup-seenreport-on-knights-news-challenge%2F';
  addthis_title  = 'Rate+my+startup+See%26%238217%3Bn%27Report+on+Knight+News+Challenge';
  addthis_pub    = 'sharjeel';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://sharjeel.2scomplement.com/2008/11/09/rate-my-startup-seenreport-on-knights-news-challenge/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Recursion, Misunderstood</title>
		<link>http://sharjeel.2scomplement.com/2008/10/25/recursion-misunderstood/</link>
		<comments>http://sharjeel.2scomplement.com/2008/10/25/recursion-misunderstood/#comments</comments>
		<pubDate>Sat, 25 Oct 2008 10:29:04 +0000</pubDate>
		<dc:creator>sharjeel</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[computer science]]></category>

		<category><![CDATA[lisp]]></category>

		<category><![CDATA[recursion]]></category>

		<guid isPermaLink="false">http://sharjeel.2scomplement.com/2008/10/25/recursion-misunderstood/</guid>
		<description><![CDATA[My experience with the Electrical Engineers in academics is that they usually view Computer Science in terms of circuits and details of how things work at the most tangible level. One hazard of using this approach in teaching is that many times you end up with some wrong core concepts of Computer Science. They enable [...]]]></description>
			<content:encoded><![CDATA[<p>My experience with the Electrical Engineers in academics is that they usually view Computer Science in terms of circuits and details of how things work at the most tangible level. One hazard of using this approach in teaching is that many times you end up with some wrong core concepts of Computer Science. They enable your abstract level thinking at large. The worst part is, you don't even know that your concepts are incorrect yet you are very confident about them.</p>
<p>My undergrad CS program at <a href="http://www.nu.edu.pk" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.nu.edu.pk');">FAST-NUCES</a> was heavily dominated by dedicated and competent Electrical Engineers. That is why my classmates and I have really good C/C++ programming skills, great concepts about pointers, indepth understanding of microprocessors work, how implementations of Operating Systems take advantage of them at the very nitty gritty level and have strong knowledge of other implementation specific things. On the downside, I feel such students have some gaps left in their personalities towards the mathematical face of Computer Science.</p>
<p>Perhaps the most commonly misunderstood such topic is Recursion. For me, it was a shock to know, after about two years of my graduation, that what I knew about recursion was quite wrong. I, along with many others were taught (and are still being taught) that recursion is about a function calling itself.  When a function calls itself, a separate call is made, the parameters and some other info is placed on stack and a new 'instance' of function takes over until it returns. If this process goes on infinitely, the program would end with an overflowed stack so there must be a base or terminating condition. The instructors would give us assignments in which recursion had to be "removed" by explicitly storing some state information on a stack so that a new call to the same function was not made. The emphasis of these assignments was that although "recursive" code is simple, recursion has a huge overhead which should be removed in most of the cases.</p>
<p>This is not recursion! This way of looking at recursion <em>might</em> be OK for a low-level C/C++ programmer who wants to build his career coding micro-controllers for the rest of his life. But these concepts of recursion are certainly disastrous for a Computer Science Major who wants to truly appreciate the beauty of algorithms.</p>
<p>I was lucky to learn Lisp after my graduation which gave enough abstraction from low level nitty gritty controls such as memory management and pointers as well as complex syntax, to let me focus on the problem itself rather than going into syntax.</p>
<p>What I learnt then is that recursion is solving a problem by deferring until it's subproblem and reconciling the solution of the problem with a simpler computation. The subproblem itself is solved in the same manner until the subproblem becomes so simple that it's solution is trivial. In mathematics, this is called inductive step.</p>
<p>This seems much like the former view but it's implication is quite different. The second definition of recursion implies that a function calling itself may not necessarily be forming a recursive solution. For example the following two implementations of factorial call themselves but the first one is recursive while the second one is iterative:</p>
<pre class="lisp"><span style="color: #808080; font-style: italic;">; Recursive</span>
<span style="color: #66cc66;">&#40;</span>define fact
   <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>n<span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>= n <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">1</span>
         <span style="color: #66cc66;">&#40;</span>* n <span style="color: #66cc66;">&#40;</span>factorial <span style="color: #66cc66;">&#40;</span>- n <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">; Iterative</span>
<span style="color: #66cc66;">&#40;</span>define facti
   <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>n, c<span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>= n <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> c
         <span style="color: #66cc66;">&#40;</span>facti <span style="color: #66cc66;">&#40;</span>- n <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>* c n<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre>
<p>The reason facti is not recursive is that it is not deferring any computation.</p>
<p>The equal implementation of these in Python would be:</p>
<pre class="python">&nbsp;
<span style="color: #808080; font-style: italic;"># Recursive</span>
<span style="color: #ff7700;font-weight:bold;">def</span> fact<span style="color: black;">&#40;</span>n<span style="color: black;">&#41;</span>:
   <span style="color: #ff7700;font-weight:bold;">if</span> n == <span style="color: #ff4500;">0</span>: <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #ff4500;">1</span>
   <span style="color: #ff7700;font-weight:bold;">return</span> n * fact<span style="color: black;">&#40;</span>n - <span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># Iterative</span>
<span style="color: #ff7700;font-weight:bold;">def</span> facti<span style="color: black;">&#40;</span>n, c=<span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>:
   <span style="color: #ff7700;font-weight:bold;">if</span> n == <span style="color: #ff4500;">0</span>: <span style="color: #ff7700;font-weight:bold;">return</span> c
   <span style="color: #ff7700;font-weight:bold;">else</span>: <span style="color: #ff7700;font-weight:bold;">return</span> facti<span style="color: black;">&#40;</span>n - <span style="color: #ff4500;">1</span>, c * n<span style="color: black;">&#41;</span></pre>
<p>Also, a function not calling itself may still be a recursive function. For example, an explicit stack storing different states to avoid function calling itself is still recursive!</p>
<p>PS: If you still don't get what recursion is, see <a href="http://sharjeel.2scomplement.com/2008/10/25/recursion-misunderstood/" > "Recursion, Misunderstood" by Sharjeel Ahmed Qureshi. </a></p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fsharjeel.2scomplement.com%2F2008%2F10%2F25%2Frecursion-misunderstood%2F';
  addthis_title  = 'Recursion%2C+Misunderstood';
  addthis_pub    = 'sharjeel';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://sharjeel.2scomplement.com/2008/10/25/recursion-misunderstood/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Installing OS with Bootable USB</title>
		<link>http://sharjeel.2scomplement.com/2008/10/20/installing-os-with-bootable-usb/</link>
		<comments>http://sharjeel.2scomplement.com/2008/10/20/installing-os-with-bootable-usb/#comments</comments>
		<pubDate>Mon, 20 Oct 2008 19:47:37 +0000</pubDate>
		<dc:creator>sharjeel</dc:creator>
		
		<category><![CDATA[sysadmin]]></category>

		<category><![CDATA[boot]]></category>

		<category><![CDATA[iso]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://sharjeel.2scomplement.com/2008/10/20/installing-os-with-bootable-usb/</guid>
		<description><![CDATA[Laziness is a quality of  great programmers. I tried to be amongst them by not taking the headache of putting a DVD-ROM Drive in my new test server machine for installation of an Operating System. And who really wants to get bothered by unscrewing the case, connecting the drive's data and power cables, burning the [...]]]></description>
			<content:encoded><![CDATA[<p>Laziness is a quality of  great programmers. I tried to be amongst them by not taking the headache of putting a DVD-ROM Drive in my new test server machine for installation of an Operating System. And who really wants to get bothered by unscrewing the case, connecting the drive's data and power cables, burning the CD, putting in and booting up from the mechanical stuff anyway.</p>
<p>Maybe it took me more time to figure out the way of booting an ISO image from my USB Flash Drive than the above procedure but it was certainly more fun. The next time, installation will be just plug n play for me; without the need of disconnect n connecting cables (No, I don't like to keep a DVD-Drive fitted in any of my machine).</p>
<p>The process is very simple. Just download and run <a href="http://unetbootin.sourceforge.net/" onclick="javascript:pageTracker._trackPageview('/outbound/article/unetbootin.sourceforge.net');">UNetbootin</a>. Choose the ISO image you'd like to boot from (In my case, it was Ubunt 8.04) and the USB drive on which you'd like to write on. Click next, and in a few minutes you are done!</p>
<p><img src="http://sourceforge.net/dbimage.php?id=173795" /></p>
<p>It works great under Linux as well as Windows.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fsharjeel.2scomplement.com%2F2008%2F10%2F20%2Finstalling-os-with-bootable-usb%2F';
  addthis_title  = 'Installing+OS+with+Bootable+USB';
  addthis_pub    = 'sharjeel';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://sharjeel.2scomplement.com/2008/10/20/installing-os-with-bootable-usb/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Car parking @ LUMS</title>
		<link>http://sharjeel.2scomplement.com/2008/10/08/car-parking-lums/</link>
		<comments>http://sharjeel.2scomplement.com/2008/10/08/car-parking-lums/#comments</comments>
		<pubDate>Wed, 08 Oct 2008 09:23:10 +0000</pubDate>
		<dc:creator>sharjeel</dc:creator>
		
		<category><![CDATA[Eye-Witness]]></category>

		<guid isPermaLink="false">http://sharjeel.2scomplement.com/2008/10/08/car-parking-lums/</guid>
		<description><![CDATA[Bob Sutton, author of "The No Asshole Rule" writes:
"One of the examples of rude behavior that comes up in The Civility Solution is people who park in obviously selfish ways.  I was talking to a friend of mine the other day and she complained about someone we know who prides himself in taking two spaces [...]]]></description>
			<content:encoded><![CDATA[<p>Bob Sutton, author of "The No Asshole Rule" <a href="http://bobsutton.typepad.com/my_weblog/2008/08/asshole-parking-another-sign-of-a-certified-jerk.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/bobsutton.typepad.com');">writes</a>:</p>
<blockquote><p>"One of the examples of rude behavior that comes up in <a href="http://www.amazon.com/exec/obidos/ASIN/0312368496/bobsutton-20" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.amazon.com');">The Civility Solution</a> is people who park in obviously selfish ways.  I was talking to a friend of mine the other day and she complained about someone we know who prides himself in taking two spaces (just like the above picture) to protect his car from door dings. I think that is a nearly perfect example of someone who is so self-absorbed that they don't even consider the negative effects of their behavior on others. It is also pretty similar to how CEO Paul Purcell defines an asshole at <a href="http://bobsutton.typepad.com/my_weblog/2008/03/details-on-the.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/bobsutton.typepad.com');">Baird </a>-- someone who consistently puts his or her self-interest ahead of others.  I would love to see the correlation between parking behavior and scores on the <a href="http://electricpulp.com/guykawasaki/arse/" onclick="javascript:pageTracker._trackPageview('/outbound/article/electricpulp.com');">ARSE</a> (the asshole rating self-exam)."</p></blockquote>
<p>What I experienced today at <a href="http://www.lums.edu.pk/" target="_blank" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.lums.edu.pk');">Lahore University of Management Science</a>'s parking beats any ARSE score, if there exists a direct correlation. Due to construction in University, the parking is limited and sometimes it takes up to 10 minutes to roam around the campus and find a good parking space.  I spotted an apparent space in a corner but when I got there I found this:</p>
<p><a href="http://www.facebook.com/photo.php?pid=887344&amp;id=503443550&amp;l=c4d06" target="_blank" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.facebook.com');"><img src="http://photos-a.ak.facebook.com/photos-ak-sf2p/v355/170/40/503443550/n503443550_887344_9877.jpg" alt="LUMS Car Parking" width="400" height="300" /></a></p>
<p>I don't know about Bob Sutton's correlation but surely there should be a relation between being educated and being civilized.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fsharjeel.2scomplement.com%2F2008%2F10%2F08%2Fcar-parking-lums%2F';
  addthis_title  = 'Car+parking+%40+LUMS';
  addthis_pub    = 'sharjeel';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://sharjeel.2scomplement.com/2008/10/08/car-parking-lums/feed/</wfw:commentRss>
		</item>
		<item>
		<title>django standalone scripts</title>
		<link>http://sharjeel.2scomplement.com/2008/10/02/django-standalone-scripts/</link>
		<comments>http://sharjeel.2scomplement.com/2008/10/02/django-standalone-scripts/#comments</comments>
		<pubDate>Thu, 02 Oct 2008 22:05:27 +0000</pubDate>
		<dc:creator>sharjeel</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[cronjobs]]></category>

		<category><![CDATA[django]]></category>

		<guid isPermaLink="false">http://sharjeel.2scomplement.com/2008/10/02/django-standalone-scripts/</guid>
		<description><![CDATA[Standalone scripts and cron jobs are integral part of any significantly complex web based application. We use them in our applications for health monitoring, mails sending, computing scores and ratings, deferred tasks and job queues such as video processing etc.
To make a python script work which uses django's functionality, you need to have the required [...]]]></description>
			<content:encoded><![CDATA[<p>Standalone scripts and cron jobs are integral part of any significantly complex web based application. We use them in our applications for health monitoring, mails sending, computing scores and ratings, deferred tasks and job queues such as video processing etc.</p>
<p>To make a python script work which uses django's functionality, you need to have the required environment variables set: your application's path in your PYTHON path and name of the settings module in DJANGO_SETTINGS_MODULE. If you are using Unix, you can set these in your bash_profile so that each time you log in,  the environment variables are already set.</p>
<p>For instance, if your project's name is myproject, then add these lines (with appropriate changes) in ~/.bash_profile file:</p>
<p><code><br />
export PYTHONPATH="/home/path/to/myproj/"<br />
export DJANGO_SETTINGS_MODULE="myproj.settings"<br />
</code></p>
<p>Now you can write and execute a python script which imports models and views of myproj.</p>
<p>CronJobs using the django models or views also need these environment variables which can be set at the top of the crontab file. Open the crontab file using this command on shell:</p>
<p><code><br />
$crontab -e # Edit the crontab file<br />
</code></p>
<p>Put these lines at the top to pass required environment variables to any subsequent cronjobs</p>
<p><code><br />
PYTHONPATH=/home/path/to/myproj/<br />
DJANGO_SETTINGS_MODULE=myproj.settings<br />
</code></p>
<p>If you use webmin for scheduling cronjobs, you can create environment variables from from the menu.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fsharjeel.2scomplement.com%2F2008%2F10%2F02%2Fdjango-standalone-scripts%2F';
  addthis_title  = 'django+standalone+scripts';
  addthis_pub    = 'sharjeel';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://sharjeel.2scomplement.com/2008/10/02/django-standalone-scripts/feed/</wfw:commentRss>
		</item>
		<item>
		<title>My worst chand raat</title>
		<link>http://sharjeel.2scomplement.com/2008/09/30/my-worst-chand-raat/</link>
		<comments>http://sharjeel.2scomplement.com/2008/09/30/my-worst-chand-raat/#comments</comments>
		<pubDate>Tue, 30 Sep 2008 17:24:49 +0000</pubDate>
		<dc:creator>sharjeel</dc:creator>
		
		<category><![CDATA[misery]]></category>

		<guid isPermaLink="false">http://sharjeel.2scomplement.com/2008/09/30/my-worst-chand-raat/</guid>
		<description><![CDATA[This is the worst chand raat (Eid Night) I am going through. Here's the order of incidents:
8:30 PM -Rawayt-Hilal-Committee announces moon not sighted so Eid will be the day after tomorrow. I thank God as there's a pile of work I have to get done
8:45 PM - I goto mosque for Isha Prayers
9:30 PM - [...]]]></description>
			<content:encoded><![CDATA[<p>This is the worst chand raat (Eid Night) I am going through. Here's the order of incidents:</p>
<p>8:30 PM -Rawayt-Hilal-Committee announces moon not sighted so Eid will be the day after tomorrow. I thank God as there's a pile of work I have to get done<br />
8:45 PM - I goto mosque for Isha Prayers<br />
9:30 PM - Feeling relaxed I click here n there, format some HTML/CSS  etc &amp; make a list of things I have to do tomorrow,<br />
10:50 PM - I start wrapping up to go home, feeling challenged for tomorrow.<br />
11:00 PM - I receive a call from my cousin with an "Eid Mubarak" greeting and an explanation that they've announced Eid!</p>
<p>Now I'm totally screwed up! I have atleast five hours of work to do and I must do it before Eid. That means I'll have a put a nighter on chand raat.</p>
<p>Here I am alone on the 80 acres campus of LUMS with no one around except a few security guards :( Thanks to the tailor who delivered some mufti's wife's eid dress at 11:00 PM to let it happen.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fsharjeel.2scomplement.com%2F2008%2F09%2F30%2Fmy-worst-chand-raat%2F';
  addthis_title  = 'My+worst+chand+raat';
  addthis_pub    = 'sharjeel';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://sharjeel.2scomplement.com/2008/09/30/my-worst-chand-raat/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The Chrome effect</title>
		<link>http://sharjeel.2scomplement.com/2008/09/03/the-chrome-effect/</link>
		<comments>http://sharjeel.2scomplement.com/2008/09/03/the-chrome-effect/#comments</comments>
		<pubDate>Wed, 03 Sep 2008 10:43:33 +0000</pubDate>
		<dc:creator>sharjeel</dc:creator>
		
		<category><![CDATA[marketing]]></category>

		<guid isPermaLink="false">http://sharjeel.2scomplement.com/2008/09/03/the-chrome-effect/</guid>
		<description><![CDATA[Chrome is everywhere! Facebook's statuses, Twitter, mailboxes  .... On Hacker News, Reddit, Digg, Slashdot, TechCrunch ... even on BBC ... virtually everywhere on internet! It is the new browser by Google launched today and it has created an explosion of buzz. It is already default browser on most of my friends' PCs and am sure [...]]]></description>
			<content:encoded><![CDATA[<p>Chrome is everywhere! Facebook's statuses, Twitter, mailboxes  .... On Hacker News, Reddit, Digg, Slashdot, TechCrunch ... even on BBC ... virtually everywhere on internet! It is the new browser by Google launched today and it has created an explosion of buzz. It is already default browser on most of my friends' PCs and am sure so it'll be on many other desktops around the globe. People are discussing its features, pros and cons and blogging about it. Even the not-so-technical people are talking about it.</p>
<p>Chrome has some great features. But unfortunately great features don't matter a lot in browsers for user adoption.  After the IE vs Netscape browser war, many browsers tried to come into the market. But despite offering great features, nearly all of them failed to pass the barrier of IE's monoply made by shipping as the default browser with Windows. Firefox is the only exception; but its 30% market share does not justify the great features and user experience it provides. Clearly, Microsoft has (unfair) advantage which does not depend upon how good IE is, but rather how tightly it is coupled with the OS to enforce the users to use it. Due to this people are already skeptical about Chrome's success. User adoption is going to be tough!</p>
<p>However just like Microsoft, Google can also take such an advantage. With so many widely used products they can enforce users to switch to their browser. But because of "Don't be evil" motto, probably they won't. And they don't need to do that either. They have created enough buzz to spread their product virally. Within 24 hours of announcement, they are everywhere. They've taken a great start and if they are able to sustain it, they can penetrate very quickly.</p>
<p>I firmly believe in word of mouth marketing. Looking at the buzz they've created, I believe they'll be able to catch up with IE very soon. The next edition of <a href="http://www.amazon.com/Anatomy-Buzz-Create-Mouth-Marketing/dp/0385496680/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1220438494&amp;sr=8-1" target="_blank" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.amazon.com');">Anatomy of Buzz</a> might have a big case study on Chrome along with iPhone.</p>
<p>PS: This is the first time I've used a browser other than Firefox/Flock to update my blog :)<br />
PPS: Chrome screwed the formatting. I had to do further editing using Firefox :D</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fsharjeel.2scomplement.com%2F2008%2F09%2F03%2Fthe-chrome-effect%2F';
  addthis_title  = 'The+Chrome+effect';
  addthis_pub    = 'sharjeel';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://sharjeel.2scomplement.com/2008/09/03/the-chrome-effect/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Django Subdomains</title>
		<link>http://sharjeel.2scomplement.com/2008/07/24/django-subdomains/</link>
		<comments>http://sharjeel.2scomplement.com/2008/07/24/django-subdomains/#comments</comments>
		<pubDate>Thu, 24 Jul 2008 20:57:20 +0000</pubDate>
		<dc:creator>sharjeel</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[django]]></category>

		<category><![CDATA[subdomains]]></category>

		<guid isPermaLink="false">http://sharjeel.2scomplement.com/2008/07/24/django-subdomains/</guid>
		<description><![CDATA[We have added a new feature at See'n'Report. It now provides each user with a personal sub-domain URL. The URL maintains user's profile which lists all the photo reports submitted by the user. For example my See'n'Report profile URL is http://sharjeel.seenreport.com/.
Adding support for sub-domains in Django is simple but has a few catches. It took [...]]]></description>
			<content:encoded><![CDATA[<p>We have added a new feature at <a href="http://www.seenreport.com" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.seenreport.com');">See'n'Report</a>. It now provides each user with a personal sub-domain URL. The URL maintains user's profile which lists all the photo reports submitted by the user. For example my See'n'Report profile URL is http://sharjeel.seenreport.com/.</p>
<p>Adding support for sub-domains in Django is simple but has a few catches. It took me quite some time to get everything working.</p>
<p>The following links provide a quick way to make sub-domains:</p>
<p><a href="http://www.rossp.org/blog/2007/apr/28/using-subdomains-django/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.rossp.org');">rossp.org - Using Subdomains with Django</a><br />
<a href="http://code.djangoproject.com/ticket/5022" onclick="javascript:pageTracker._trackPageview('/outbound/article/code.djangoproject.com');">Django Ticket #5022 - Proposed middleware: SubdomainURLsMiddleware</a></p>
<p>The summary of above links is that you have to put a wildcard entry in your domain DNS so that all your subdomains resolve to the IP on which your site is hosted. Then make sure apache handles all the requests to sub-domains; again using a wildcard in apache's configuration. Then write a middleware which checks the subdomain in request's HTTP Host header and processes it accordingly by either loading a customized URLs pattern or by handling the request with a view with appropriate logic.</p>
<p>This worked well for me and I was quickly able to make the changes so that http://www.seenreport.com/user/sharjeel was available at http://sharjeel.seenreport.com/.</p>
<p>There were a few little problems:</p>
<p>Firstly, sessions did not work across the subdomains. If I were logged in www.seenreport.com, I wouldn't be logged in at sharjeel.seenreport.com.  This was solved by using setting the SESSION_COOKIE_DOMAIN variable in settings.py:</p>
<pre class="python">&nbsp;
SESSION_COOKIE_DOMAIN = <span style="color: #483d8b;">'.seenreport.com'</span> <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #ff7700;font-weight:bold;">not</span> DEBUG <span style="color: #ff7700;font-weight:bold;">else</span> <span style="color: #483d8b;">'.localhost'</span>
&nbsp;</pre>
<p>Secondly, all the main navigation links (login, register etc.) which were written as relative links were now pointing to sharjeel.seenreport.com instead of www.seenreport.com. For instance the login on my profile page became sharjeel.seenreport.com/login instead of www.seenreport.com/login.</p>
<p>I could have hardcoded "www.seenreport.com" with these links to make them absolute URLs but that would have been bad in terms of maintainability. It requires an if-else logic for each link so that it renders accordingly on dev/test machines and the production machine.</p>
<p>I used &lt;base&gt; tag with href="http://www.seenreport.com/" (for production, and localhost for dev) to make the navigation links relative to main domain.  This also changed the profile links. However, in our case, profile links are very few so adding hardcoded absolute URLs alongwith some {{ if }}  {{ else }} is viable.</p>
<p>Using base-href everything became well except one. Ajax calls didn't work now. When using &lt;base&gt; tag, the URLs of your ajax calls become relative to href. In this case when an ajax call is made, a domain other than your current one is contacted, which is disallowed by the browser and following exception is raised:</p>
<pre>
"Access to restricted URI denied" code: "1012"
</pre>
<p>To overcome this, I appended following with each ajax call's URL:</p>
<pre class="javascript">&nbsp;
location.<span style="color: #006600;">protocol</span> + <span style="color: #3366CC;">'//'</span> + location.<span style="color: #006600;">host</span> + original_url ...
&nbsp;</pre>
<p>This made all the ajax calls relative to the current subdomain and made everything work perfectly. Took me quite some time to figure out :)</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fsharjeel.2scomplement.com%2F2008%2F07%2F24%2Fdjango-subdomains%2F';
  addthis_title  = 'Django+Subdomains';
  addthis_pub    = 'sharjeel';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://sharjeel.2scomplement.com/2008/07/24/django-subdomains/feed/</wfw:commentRss>
		</item>
		<item>
		<title>My first carputer - v0.1</title>
		<link>http://sharjeel.2scomplement.com/2008/07/14/my-first-carputer-v01/</link>
		<comments>http://sharjeel.2scomplement.com/2008/07/14/my-first-carputer-v01/#comments</comments>
		<pubDate>Mon, 14 Jul 2008 01:19:03 +0000</pubDate>
		<dc:creator>sharjeel</dc:creator>
		
		<category><![CDATA[carputer]]></category>

		<guid isPermaLink="false">http://sharjeel.2scomplement.com/2008/07/14/my-first-carputer-v01/</guid>
		<description><![CDATA[Have you ever thought about putting a PC in your car? I did!

I’ve put my first carputer (car computer) into use in my Honda Civic EXI 96. The whole process which includes lots of Googling, forums readings, hectic trips to Hafeez Center and writing some code, too me two years. This time span is not [...]]]></description>
			<content:encoded><![CDATA[<p>Have you ever thought about putting a PC in your car? I did!</p>
<p><a href="http://www.facebook.com/photo.php?pid=606395&amp;id=503443550&amp;l=115a9" title="Screen" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.facebook.com');"><img src="http://photos-d.ak.facebook.com/photos-ak-sf2p/v287/170/40/503443550/s503443550_606395_6258.jpg" alt="LCD Screen" border="1" height="97" hspace="2" vspace="2" width="130" /></a><a href="http://www.facebook.com/photo.php?pid=606403&amp;id=503443550&amp;l=115a9" title="Screen3" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.facebook.com');"><img src="http://photos-d.ak.facebook.com/photos-ak-sf2p/v287/170/40/503443550/s503443550_606403_9811.jpg" alt="Mini Keyboard" border="1" height="97" hspace="2" vspace="2" width="130" /></a><a href="http://www.facebook.com/photo.php?pid=606415&amp;id=503443550&amp;l=115a9" title="Mini Keyboard" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.facebook.com');"><img src="http://photos-h.ak.facebook.com/photos-ak-snc1/v262/170/40/503443550/s503443550_606415_4104.jpg" alt="Mini Keyboard" border="1" height="97" hspace="2" vspace="2" width="130" /></a><br />
I’ve put my first carputer (car computer) into use in my Honda Civic EXI 96. The whole process which includes lots of Googling, forums readings, hectic trips to Hafeez Center and writing some code, too me two years. This time span is not a metric of complexity of the task but just a reflection of my great quality of laziness. The carputer has bare minimum functionality and it requires a lot of improvements but I feel that the time spent was worth it.</p>
<p><strong>Specs</strong></p>
<ul>
<li>Dell Optiplex SX270, 512 MB RAM, 40 GB HDD – Rs. 9,600 ~ $150</li>
<li>Windows XP (came with the machine)</li>
<li>Lilliput 12” Touchscreen – $200 ~ Rs. 12,800</li>
<li>Garmin USB GPS - $100 ~ Rs. 6000</li>
<li>Havit Mini-Keyboard – Rs. 800 ~ $13</li>
<li>Sony Ericsson T290i – Rs. 1,200 ~ $20</li>
<li>And some other small accessories</li>
</ul>
<p>The whole system cost me about Rs. 30,000 i.e. about US$ 500.</p>
<p>Some of its usages</p>
<ul>
<li>Play music</li>
<li>Play videos. [I can watch my favourite Google TechTalks in my car ;) ]</li>
<li>Navigate my route using Google Earth</li>
<li>Control cell phone using voice commands</li>
<li>Car Tracking</li>
<li>Parking Assistance using sensors and cameras.</li>
<li>Night vision cameras</li>
<li>Accident Recording</li>
<li>Monitor Car Health using OBD-II sensors</li>
<li>War driving</li>
<li>Use Emacs, Eclipse &amp; PyScripter on the go (soon a new law will be passed to forbid the use of IDEs while driving)</li>
</ul>
<p>Right now only the first three of the purposes are being served.</p>
<p>Bao G asked me to add one more thing in my wish list: A button, when pressed, activates the weapon system and brings up machine gun in front and two missiles on each side of the car. The way people drive around on the roads these days, I am seriously thinking about it.</p>
<p><strong>Components &amp; Installation Details</strong></p>
<p><strong>Machine</strong></p>
<p><a href="http://photos-c.ak.facebook.com/photos-ak-sf2p/v287/170/40/503443550/s503443550_606402_1102.jpg" target="_blank" title="Optiplex SX 270" onclick="javascript:pageTracker._trackPageview('/outbound/article/photos-c.ak.facebook.com');"><img src="http://photos-c.ak.facebook.com/photos-ak-sf2p/v287/170/40/503443550/s503443550_606402_1102.jpg" alt="Dell Optiplex" border="1" height="130" hspace="2" vspace="2" width="96" /></a><a href="http://www.facebook.com/photo.php?pid=606401&amp;id=503443550&amp;l=115a9" target="_blank" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.facebook.com');"><img src="http://photos-b.ak.facebook.com/photos-ak-sf2p/v287/170/40/503443550/s503443550_606401_8877.jpg" alt="Under the seat" border="1" height="97" hspace="2" vspace="2" width="130" /></a></p>
<p>The Dell Optiplex SX270 is extremely compact. I found it ideal for three reasons:</p>
<p>Small Size<br />
Low Cost<br />
Runs on DC 12v (Most Important)</p>
<p>The machine is so compact (8.5cm x 24.7cm x 24.2cm) that it can be easily placed at most of the places in your car. Also, another great thing about SX-270 is that it has parallel and serial ports. Which means you can easily attach it to other devices and program them. New machines usually don’t have Serial and especially Parallel ports and put a lot of restrictions on interfacing with other devices.</p>
<p>For the time being I’ve placed it under the passenger seat. However I plan to move it in the trunk in future.</p>
<p>I bought it back in October last year and at that time its cost was only Rs. 9,600 ($160). The chap selling these machines wasn’t finding customers because it runs on 12v and has a separate AC-DC adapter. And that is precisely the reason I bought it.</p>
<p>It is no more available in Hafeez Center. I wish I had bought another one for my home router.</p>
<p><strong>Power</strong></p>
<p><a href="http://www.facebook.com/photo.php?pid=606398&amp;id=503443550&amp;l=115a9" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.facebook.com');"><img src="http://photos-g.ak.facebook.com/photos-ak-sf2p/v287/170/40/503443550/s503443550_606398_7674.jpg" alt="Power drawn directly from battery" border="1" height="97" hspace="2" vspace="2" width="130" /></a><a href="http://www.facebook.com/photo.php?pid=606399&amp;id=503443550&amp;l=115a9" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.facebook.com');"><img src="http://photos-h.ak.facebook.com/photos-ak-sf2p/v287/170/40/503443550/s503443550_606399_8132.jpg" alt="Join" border="1" hspace="2" vspace="2" /></a></p>
<p>Dell Optiplex SX-270 runs on 12v 12.5A. That means it can be powered directly from cigarette lighter. However it can easily fry up the wiring. So I ran wires from machines directly to the car battery with a 15A fuse and a connector in between. 15A fuse prevents it from getting cooked up during spikes etc and the connector is there so I may conveniently unplug the machine for car wash etc.</p>
<p>The Optiplex SX-270 adapter is proprietary. Initially I tried to reverse engineer it but later found everything about at <a href="http://www.mp3car.com/vbulletin/power-supplies/76075-dell-sx270-info.html" target="_blank" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.mp3car.com');">this link</a>.</p>
<p>There are two major problems with my approach of directly attaching to battery. Firstly, when the car is not on ignition the machine is on battery which can be drained out easily. Secondly, when the car is given self-start, there is a spike of power on the wiring which restarts the machine. MP3Car Forums suggest that this spike can also cook the machine but I think 15A fuse will take care of it.</p>
<p>To make sure that the battery doesn’t drain, I have turned on XP’s power saving and have added the rule to hibernate the machine after 1 hour of inactivity. The day XP gets hanged, the day my car’s battery shall drain out.</p>
<p>Addressing the second problem is quite difficult. It appears that I’ll have to buy some extra stuff to avoid that spike on self start. A UPS will do but that’ll be another headache. For the time being I’ve enabled “Auto Power On” in BIOS which makes the machine turn on automatically after restarting from a power spike.</p>
<p>Every time I get out of my car, I hibernate the machine. Even if I forget, it gets hibernated after 1 hour anyway. When I start the car next time, the machine gets turned on automatically and Windows starts from where I left. This is certainly not a very good way and I am looking for other better ways.</p>
<p><strong>Touchscreen LCD</strong></p>
<p><a href="http://www.facebook.com/photo.php?pid=606395&amp;id=503443550&amp;l=115a9" target="_blank" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.facebook.com');"><img src="http://photos-d.ak.facebook.com/photos-ak-sf2p/v287/170/40/503443550/s503443550_606395_6258.jpg" alt="Lilliput" border="1" height="97" hspace="2" vspace="2" width="130" /></a><a href="http://www.facebook.com/photo.php?pid=606403&amp;id=503443550&amp;l=115a9" target="_blank" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.facebook.com');"><img src="http://photos-d.ak.facebook.com/photos-ak-sf2p/v287/170/40/503443550/s503443550_606403_9811.jpg" alt="Lilliput" border="1" height="97" hspace="2" vspace="2" width="130" /></a></p>
<p>Touchscreens come in different forms. In-dash, on-dash. In-dash screens are usually expensive so I bought Lilliput's on-dash touchscreen LCD. Lilliput’s Touchscreen LCD is specifically designed for car usage. It comes with all the wires, the drivers, the configuration software and runs well out of the box. It also has a nice stand to stick the screen at a nice place on the dashboard.</p>
<p>I’ve placed it under the console, in front of the lever gear. Though at this place it is not as much accessible as it would be somewhere on the console or on dashboard, it is prevent by prying eyes of the other car drivers ;) Also, it just fitted well into the lower area of Civic and did not require any drilling or interior modding.</p>
<p><strong>Garmin External USB GPS</strong></p>
<p><a href="http://www.facebook.com/photo.php?pid=606397&amp;id=503443550&amp;l=115a9" target="_blank" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.facebook.com');"><img src="http://photos-f.ak.facebook.com/photos-ak-sf2p/v287/170/40/503443550/s503443550_606397_7216.jpg" alt="Garmin external GPS" border="1" height="97" hspace="2" vspace="2" width="130" /></a></p>
<p>Garmin External GPS module uses NMEA format. It has a Serial Port version as well USB. I didn’t do much R&amp;D over this and bought the one with USB thinking it’ll be better. But it turned out that it wasn’t. The only application I found supporting it was Google Earth Pro. Every other application demanded a COM port.</p>
<p>However I found this nice utility called Spanner by Garmin which takes your USB based GPS device and maps it onto several virtual COM ports. This means that different applications can access your GPS data simultaneously through different COM ports.</p>
<p>The problem with Spanner is that many times when the system wakes up from hibernation it does not detect the GPS device and the system has to be restarted. Otherwise it is great.</p>
<p><strong>Havit Mini Keyboard</strong></p>
<p><a href="http://www.facebook.com/photo.php?pid=606415&amp;id=503443550&amp;l=115a9" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.facebook.com');"><img src="http://photos-h.ak.facebook.com/photos-ak-snc1/v262/170/40/503443550/s503443550_606415_4104.jpg" border="2" height="97" hspace="1" vspace="1" width="130" /></a><a href="http://www.facebook.com/photo.php?pid=606414&amp;id=503443550&amp;l=115a9" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.facebook.com');"><img src="http://photos-g.ak.facebook.com/photos-ak-snc1/v262/170/40/503443550/s503443550_606414_3592.jpg" border="2" height="97" hspace="1" vspace="1" width="130" /></a></p>
<p>Havit’s Mini Keyboard is extremely thin. I’ve placed it in the slit between the passenger seat and the handbrake cover.</p>
<p>It can also be placed under the sun visor but then you’ll have to run the wires all over.</p>
<p><strong>UserInteface: RoadRunner</strong></p>
<p>Road Runner is an application specifically designed for car computers. It has a skinnable interface which provides a touch friendly environment with big buttons and support for gestures. Its functionality can be enhanced by its plug-in support. This might not be the best software for user interface of carputer but it surely is the most popular.</p>
<p><strong>Google Earth Navigation</strong></p>
<p><a href="http://www.facebook.com/photo.php?pid=606405&amp;id=503443550&amp;l=115a9" target="_blank" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.facebook.com');"><img src="http://photos-f.ak.facebook.com/photos-ak-sf2p/v287/170/40/503443550/s503443550_606405_758.jpg" border="2" height="97" hspace="1" vspace="1" width="130" /></a><a href="http://www.facebook.com/photo.php?pid=606403&amp;id=503443550&amp;l=115a9" target="_blank" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.facebook.com');"><img src="http://photos-d.ak.facebook.com/photos-ak-sf2p/v287/170/40/503443550/s503443550_606403_9811.jpg" border="2" height="97" hspace="1" vspace="1" width="130" /></a></p>
<p>This may seem useless in Pakistan as we don’t have digital maps available here. However tracking your location on just satellite imagery is still quite useful and fun. Most of the times you remember can recognize the roads and it becomes easy to figure out rest of the map.</p>
<p>Google Earth works best when connected to internet but even when it isn’t it works well using its cache. To make it work in my city, I had to increase the cache size, hover over all of the areas and then copy the cache from %HOME% folder to the carputer machine.</p>
<p>This manual process can be tiresome but can be overcome using a great utility called Google Earth Voyager. GEV makes Google Earth visit certain areas and cache them. Just give it starting and ending coordinates and it will cache the rectangular region in between.</p>
<p>Once you get satellite imagery cached, you have to map your GPS location on Google Earth. For this you can buy Google Earth Pro or use some third party software. As I have experience with GPS programming as well as Google Earth interfacing, I started writing my own. It is still under development.</p>
<p>For the time being I am using free version of GooPS. It not only maps your car on Google Earth, it also shows your speed and direction as well as the track you just followed. There are also other options like logging your data etc. which I haven’t explored yet.</p>
<p>However I feel that GooPS  is not up to the mark. I’d still prefer writing my own program in which I can add other features I want such as trips, bookmarked locations and different routes I followed.</p>
<p>Take a look at this <a href="http://www.facebook.com/video/video.php?v=18423143550" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.facebook.com');">video we shot</a> while driving around LUMS.</p>
<p><strong>Audio output to car's stereo</strong></p>
<p><a href="http://www.facebook.com/photo.php?pid=606416&amp;id=503443550&amp;l=115a9" target="_blank" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.facebook.com');"><img src="http://photos-a.ak.facebook.com/photos-ak-snc1/v262/170/40/503443550/s503443550_606416_4855.jpg" border="1" height="97" hspace="2" vspace="2" width="130" /></a></p>
<p>To avoid any modding, I simply bought this cassette based adapter which has a wire with jack which you plug into your machine’s sound output and insert the cassette into cassette player to get computer’s sound on your car’s speakers.</p>
<p><strong>Car Tracking</strong></p>
<p>Car tracking is simple. I haven’t done it yet but all the required stuff and techniques are with me. All I need is to attach the Sony Ericsson T290i phone with a connection and make it respond to SMS queries from my phone. If I want to find out my car’s location, all I’ll do is SMS my car with a query and it will return me its coordinates. Surely it won’t work</p>
<p>That’s all folks! I’ll keep my blog updated with the updates on my carputer.</p>
<p>PS: A lot of people have asked me for a test ride. FYI ticket is Rs. 50 / head :P</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fsharjeel.2scomplement.com%2F2008%2F07%2F14%2Fmy-first-carputer-v01%2F';
  addthis_title  = 'My+first+carputer+-+v0.1';
  addthis_pub    = 'sharjeel';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://sharjeel.2scomplement.com/2008/07/14/my-first-carputer-v01/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Great agile development workspace arrangement</title>
		<link>http://sharjeel.2scomplement.com/2008/07/02/great-agile-development-workspace-arrangement/</link>
		<comments>http://sharjeel.2scomplement.com/2008/07/02/great-agile-development-workspace-arrangement/#comments</comments>
		<pubDate>Wed, 02 Jul 2008 20:36:13 +0000</pubDate>
		<dc:creator>sharjeel</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://sharjeel.2scomplement.com/2008/07/02/great-agile-development-workspace-arrangement/</guid>
		<description><![CDATA[Yesterday when I came to my lab I noticed a great change. Mansoor had re-arranged the semi-hexagonal table modules in a great way. Its practical effectiveness was obvious at the first glance.
Take a look:

It can easily accomodate atleast five persons. With each of them having enough room to for an LCD, a notebook and a [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday when I came to my lab I noticed a great change. <a href="http://www.facebook.com/people/Mansoor_Pervaiz/821405416" target="_blank" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.facebook.com');">Mansoor</a> had re-arranged the semi-hexagonal table modules in a great way. Its practical effectiveness was obvious at the first glance.</p>
<p>Take a look:</p>
<p><a href="http://sharjeel.2scomplement.com/wp-content/uploads/2008/07/image_399.jpg" title="Great Agile Development Workspace Arrangement" ><img src="http://sharjeel.2scomplement.com/wp-content/uploads/2008/07/image_399.jpg" alt="Great Agile Development Workspace Arrangement" /></a></p>
<p>It can easily accomodate atleast five persons. With each of them having enough room to for an LCD, a notebook and a writing pad. Moreover most of the team members are close enough to interact with each other without having to shout. This is great particularly for Agile Software Development.</p>
<p>The arrangement has lots of merits. The core reason in my opinion behind its effectiveness remains the use of hexagon. Hexagons have a unique property in polygons that if you tile them on a plane, median of each hexagon will be equidistant from the medians of neighboring hexagons. That is more or less the reason why they are used in cellular networks. I believe same is the reason why this workspace works so well.</p>
<p>Hexagon's inspiration of use in art, design and engineering comes from nature. Take a look at this <a href="http://www.hyahya.org/books/science/honeybee_miracle/honeybee_miracle06.php" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.hyahya.org');">link</a>.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fsharjeel.2scomplement.com%2F2008%2F07%2F02%2Fgreat-agile-development-workspace-arrangement%2F';
  addthis_title  = 'Great+agile+development+workspace+arrangement';
  addthis_pub    = 'sharjeel';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://sharjeel.2scomplement.com/2008/07/02/great-agile-development-workspace-arrangement/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
