<?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>I-Am-Bot &#187; blog</title>
	<atom:link href="http://iambot.net/category/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://iambot.net</link>
	<description>Code, technology and life</description>
	<lastBuildDate>Sat, 28 Aug 2010 16:00:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<item>
		<title>Status Update</title>
		<link>http://iambot.net/2010/03/status-update/</link>
		<comments>http://iambot.net/2010/03/status-update/#comments</comments>
		<pubDate>Thu, 18 Mar 2010 15:40:17 +0000</pubDate>
		<dc:creator>Srinath</dc:creator>
				<category><![CDATA[blog]]></category>

		<guid isPermaLink="false">http://iambot.net/?p=316</guid>
		<description><![CDATA[It's been a while since I posted anything worthwhile. This is a brief update on what I'm upto and what plans I have for this blog 1) I'm planning a minor update to dScript - to fix a couple of minor bugs, and make it easier to customize (Done!) 2) Work has started on a [...]]]></description>
			<content:encoded><![CDATA[<p>It's been a while since I posted anything worthwhile. This is a brief update on what I'm upto and what plans I have for this blog</p>
<p><del datetime="2010-05-23T03:19:08+00:00">1) I'm planning a minor update to dScript - to fix a couple of minor bugs, and make it easier to customize (Done!)</del></p>
<p><del datetime="2010-05-23T03:19:08+00:00">2) Work has started on a comprehensive PHP User authentication system - something that is simple, secure and has loads of customization options. I know there are a lot of options around, but I was looking for something that is pure OO and is extensible. It will require PHP 5+ compiled with PDO. Will be released with an appropriate open source license once done</del></p>
<p>3) Will release an PHP API for <a href="http://znisms.com" target="_blank">ZNISMS</a> service. It is by far the best bulk SMS service I've used and I would heartily recommend it to anyone searching for such a service in India.</p>
<p>Other than this, I've finally figured out a bit more about JavaScript than before and even though they aren't new, I will put up those as code snippets for those who might find it helpful.</p>
<p>Code On.</p>
]]></content:encoded>
			<wfw:commentRss>http://iambot.net/2010/03/status-update/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Of application rewrites</title>
		<link>http://iambot.net/2010/01/of-application-rewrites/</link>
		<comments>http://iambot.net/2010/01/of-application-rewrites/#comments</comments>
		<pubDate>Sun, 31 Jan 2010 07:36:24 +0000</pubDate>
		<dc:creator>Srinath</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://iambot.net/?p=304</guid>
		<description><![CDATA[What will you do if you write a shitty application? And what will you do when you find that you have written a shitty application? I've been haunted by these questions for the past two days, and yes, I'm guilty as charged. Before someone thinks I sound like someone who knows programming, let me clarify [...]]]></description>
			<content:encoded><![CDATA[<p>What will you do if you write a shitty application? And what will you do when you <em>find</em> that you have written a shitty application? I've been haunted by these questions for the past two days, and yes, I'm guilty as charged. Before someone thinks I sound like someone who knows programming, let me clarify - NO I DON'T. And that is exactly the reason for this post.</p>
<p>The application that I worked on wasn't something big and impossible. It was a simple school management system, written in PHP/MySQL with a liberal dose of javascript thrown in. Unfortunately, it just didn't make it to the servers, and I abandoned it about 6 months ago. Much has changed in that time, and thankfully. I now <em>really understand</em> the need to follow Software Engineering processes, the most important being <strong>Design</strong>. So why did my team, and I choose to ignore something we've actually studied in college? Were we dumb enough to think that we wouldn't be needing it? Probably. Were we not actually able to understand why we will need it? Possibly. The only reason that readily comes to my mind was because we never knew that we will actually need it.</p>
<p>Software Engineering courses in Indian colleges are often the most boring, monotonous and brain-dead courses among the lot. Throw in a thick rimmed, thick skulled man in his 40's who has never worked on a real application all his life, to <em>teach</em> it and you have a 2012 waiting to happen. And it often does. We students cram the Pressman's book a day before the exam, answer standard questions about SDLC, Testing, importance of SE, and get away with it. And that is that. We are never taught first hand on why we need it, how we should use it, how badly it will affect the software if you don't follow certain principles, or why learn SE at all! Those are left to the student to discover after a few years, just like I have.</p>
<p>So what exactly was my application? It was</p>
<ul>
<li>Very simple and modular</li>
<li>Web based for universal access</li>
<li>Not that huge or complex (Our team of 4 completed it in 3 working months)</li>
<li>Architecturally simple</li>
</ul>
<p>Then why did we screw it up? We did everything that we could think of. We first gathered requirements, refined them, thought we did some design, then went on with the coding. Too bad we thought we designed it! We did not. Looking back, I feel really stupid about some of the decisions we took based on our understanding of the system. We knew we had to design it properly, but we didn't take it seriously as we didn't really know its consequences. I am no programmer, and if I feel my app is shitty, it really has to be!</p>
<p>Where did I go wrong?</p>
<ul>
<li>No framework</li>
<li>No separating of logic from presentation. It was all embedded in a single file in true PHP fashion</li>
<li>No proper design of the entire system. No HLD/DLD</li>
<li>No glue. The code looks like disjoint pieces of a puzzle</li>
</ul>
<p>What I did right?</p>
<ul>
<li>Probably the architecture</li>
<li>With PHP/MySQL</li>
<li>Revision Control which was never used seriously</li>
</ul>
<p>So the question beacons - When does one decide to rewrite/redesign an application? I need not have decided on redoing the whole thing. I could have as well patched it up, and sold it as many still do. It would still work, can be understood by almost any developer, and I wouldn't have to waste time and money on a rewrite. Decorate shit and it will still be shit. If one doesn't learn from mistakes at the first instance, he/she probably never will. So I finally did what I should have done in the first place:</p>
<ul>
<li>Designed a breakdown of the entire system into modules and the coupling between them</li>
<li>Decided against going for a fully blown framework like <a href="http://iambot.net/2009/07/symfony-framework/" target="_blank">Symfony</a> as that will add unnecessary complication to a simple application, but rather write my own simple framework to separate code from design</li>
<li>Chose mysqli as the database driver and developed a simple wrapper around it</li>
<li>Added a logging system which was entirely missing</li>
<li>Work on a custom design from scratch, which will also work on portable devices</li>
<li>Write a generic framework for the reporting module with custom graphs and charts rather redo the entire code</li>
<li>And many many more...</li>
</ul>
<p>The point I'm trying to make is, no one is perfect to start with. As a programmer, I was happy with my code 6 months back. Now I despise it. It is not something I can work on anymore. So rather than choosing to ignore the mistakes, swallow your ego, acknowledge the mistakes and redo it. Yes it is hard, painful, time consuming and costly. But software is a continuous process and the continuity is there for us to learn, undo and redo things the right way. I bet I will find blunders again after 6 months, but they will not be as bad as those I've found now. Maybe then, I can afford to patch things up, and be on my way.</p>
<p>For now, back to <em>Software engineering : a practitioner's approach by Pressman</em></p>
<p><em>P.S: This post is more of a reminder to myself than to others.<br />
</em></p>
]]></content:encoded>
			<wfw:commentRss>http://iambot.net/2010/01/of-application-rewrites/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Welcoming a new author</title>
		<link>http://iambot.net/2009/08/welcoming-a-new-author/</link>
		<comments>http://iambot.net/2009/08/welcoming-a-new-author/#comments</comments>
		<pubDate>Sat, 08 Aug 2009 11:10:28 +0000</pubDate>
		<dc:creator>Srinath</dc:creator>
				<category><![CDATA[blog]]></category>

		<guid isPermaLink="false">http://iambot.net/?p=176</guid>
		<description><![CDATA[I'd like to welcome my friend Sandeep as a new author on this blog. In the meantime, I'll be taking a temporary leave of absence, and entrust this blog to him, whom I trust to make better use of this space. You can find him at twitter as @sandyssn and email him at sandeep [AT] [...]]]></description>
			<content:encoded><![CDATA[<p>I'd like to welcome my friend Sandeep as a new author on this blog. In the meantime, I'll be taking a temporary leave of absence, and entrust this blog to him, whom I trust to make better use of this space. You can find him at twitter as <a href="http://twitter.com/sandyssn" target="_blank">@sandyssn</a> and email him at sandeep [AT] iambot [DOT] net</p>
<p>See you when I see you.</p>
]]></content:encoded>
			<wfw:commentRss>http://iambot.net/2009/08/welcoming-a-new-author/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>India and cheap IT</title>
		<link>http://iambot.net/2009/07/india-and-cheap-it/</link>
		<comments>http://iambot.net/2009/07/india-and-cheap-it/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 11:07:23 +0000</pubDate>
		<dc:creator>Srinath</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[india]]></category>

		<guid isPermaLink="false">http://iambot.net/?p=155</guid>
		<description><![CDATA[As an Indian, I don't consider IT to be a savior of the country. Just don't. Sure it THE fastest growing sector, and booming along with mobile and internet penetration in the country, but its known as a place for cheap labor, and not otherwise. India probably needed such a boom for its economic revival, [...]]]></description>
			<content:encoded><![CDATA[<p>As an Indian, I don't consider IT to be a savior of the country. Just don't. Sure it THE fastest growing sector, and booming along with mobile and internet penetration in the country, but its known as a place for cheap labor, and not otherwise. India probably needed such a boom for its economic revival, but at what cost? The companies hire in thousands, dumping the freshers right out of college in one of their many development sheds, where they code as zombies all day, day after day. And the sad part is, they don't mind it!</p>
<p><span id="more-155"></span></p>
<p><a href="http://www.theinquirer.net/inquirer/news/1432417/india-it-outsourcers-cut-rates">This</a> post about Indian IT companies cutting down their costs just enrages me! How low will you stoop to make money? If the companies think they are doing the country a favor by earning foreign exchange and by providing jobs for the educated, No they aren't. The companies themselves want the rupee to weaken against the dollar as it earns them more in foreign exchange. And providing jobs? Oh please, don't get me started. An entire generation of youth are brainwashed by their families, the education system, their friends, and by the companies to think that IT is the only way forward. They don't give a damn about what you studied! They don't give a damn about what you like or are good at! All they want it you as cheap labor. DEAD cheap labor.</p>
<p>How many in this generation really have a passion for computers? What percentage of freshers taken into IT companies are actually from the Computer background? And out of those Comp grads, how many actually have the skills, the programming knowledge required for the industry? I bet the number is less than 5 percent. And that is just depressing. For all the hoopla around it, IT is making Indian youngsters dumber, and duller. They start thinking, nay believing that a 20-25k month job is very good, that working in a so called top IT company makes you look cool, and get drawn into its party hard culture. Never mind that you are being paid 1/6th of what your company is charging the clients. Never mind that the reason they put you in bench is because for every person on the project, they can charge the clients even more. Never mind that you unconsciously are getting brain drained, and get used to the lower standards that are the benchmark in the industry!</p>
<p>I won't put the blame entirely on the IT companies. Sure they don't do anything, or don't want to do anything to stop this brain drain. But the main problem starts with the education system. Its all about scoring marks without an idea of what to do. Its all about a syllabus that is 10 years old, outdated and buried. Its about professors and teachers who know very little of modern developments, and still stick to their old ideas cause their ego is too big to allow them to accept that they are the ones getting outdated. Its about a country, a society that thinks IITs and IIMs are the be all and end all of education. While I don't dispute their relative quality, how many Nobel prize winners have come from IITs? How many life changing inventions, that are available to the public are from those universities? How many of those intelligent students stay back and try to do something at the grass root level? These are all questions that need to be answered and fast.</p>
<p>IT has given India a new lease of life. But we are getting used to being called cheap labor and being mediocre, instead of growing out of it. I would like to see an India firm come out with genuinely state of the art software or system. Look at ISRO and DRDO. The vision of Dr. Vikram Sarabhai and Abdul Kalam has put them right at the top of the game. India was only the 5th country in the world to launch a satellite, and that too a mere 40 years after Independence. They started from scratch, with a very limited budget, and are still the best out there. The IT industry needs visionaries - not profit makers. We need to raise our standards, be more innovative, work to solve the problems specific to our country. We need to find the real bright students, treat them with respect, and give them challenging tasks. Mundane programming is necessary. It feeds thousands. But its should not be made common to everyone.  Freshers need to outgrow the company. Don't get stuck in a rut, cause once you start feeling comfortable you will not get out of it.</p>
<p>And stop calling yourself cheap labor. That is degrading to yourself, your country and personally offends me. We are mere tech clerks now - doing the dirty and boring job of the multi nationals. Grow out of it. Or the next generation will start settling down into the hold you've dug, and India will forever remain a "developing" country.</p>
]]></content:encoded>
			<wfw:commentRss>http://iambot.net/2009/07/india-and-cheap-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP bashing has to end!</title>
		<link>http://iambot.net/2009/07/php-bashing-has-to-end/</link>
		<comments>http://iambot.net/2009/07/php-bashing-has-to-end/#comments</comments>
		<pubDate>Thu, 02 Jul 2009 12:32:25 +0000</pubDate>
		<dc:creator>Srinath</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://iambot.net/?p=150</guid>
		<description><![CDATA[Of late, I've been noticing a lot of PHP bashing around the web. Most of it is related to one major issue: Security. Granted, PHP's security implementation isn't the best out there, and it is a widely discussed topic. But more often than not, the security loopholes are due to bad/inconsistent programming principles, rather than [...]]]></description>
			<content:encoded><![CDATA[<p>Of late, I've been noticing a lot of PHP bashing around the web. Most of it is related to one major issue: Security. Granted, PHP's security implementation isn't the best out there, and it is a widely discussed topic. But more often than not, the security loopholes are due to bad/inconsistent programming principles, rather than a core PHP issue.</p>
<p>Also, PHP's lack of support for threaded programming is another major let down. While this is a genuine issue, rewriting the entire PHP core and the parser to support threads is not worth the effort. But I genuinely haven't felt the need for multi-threading in PHP till date. While threading is a must for system programming, the need for it in a web environment is not entirely clear. Also, the major strength of PHP - its simplicity will be compromised if threading is to be introduced.</p>
<p>Another genuine concern is the confusion caused by settings such as "register_globals" , "magic_quotes", "safe_mode" . These three variables have had a major impact on the deployment of PHP scripts. Web hosts allow ways to tweak these settings, but for the layman who just wants to get a blog up and running, its a bit of a hassle. Also its an issue that needs to be addressed by web developers who want maximum compatibility for their applications. The next major release PHP 6.0 aims to completely do away with this settings for good, and that will indeed clear up a lot of mess.</p>
<p>Most of these issues boil down to one thing - the lack of a an official formal specification. Although the PHP Group oversees the continued development, it is still a community effort, and as such requires stringent software engineering and management. Since the original PHP parser was completely rewritten for version 3 and above, there have only been attempts to patch up vulnerabilities, and add new features like Object Oriented Programming, namespace support among others. PHP 6 is touted to be THE release, which will address most of the major concerns.</p>
<p>For all its shortcomings, its still THE easiest server side scripting language to work with. The C/C++ syntax, seamless integration with MYSQL, support by almost all web hosting providers still make it THE web language IMHO. The LAMP stack is undoubtedly the king of the web, and will continue to be so, owing to the simplicity and widespread community support offered by all its components. And not to forget, its completely free.</p>
]]></content:encoded>
			<wfw:commentRss>http://iambot.net/2009/07/php-bashing-has-to-end/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
