<?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>code-diesel &#187; software</title>
	<atom:link href="http://www.codediesel.com/tag/software/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.codediesel.com</link>
	<description>/* PHP &#38; MySQL Journal */</description>
	<lastBuildDate>Thu, 02 Feb 2012 13:19:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Source Code Signatures in PHP</title>
		<link>http://www.codediesel.com/php/source-code-signatures-in-php/</link>
		<comments>http://www.codediesel.com/php/source-code-signatures-in-php/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 05:38:55 +0000</pubDate>
		<dc:creator>sameer</dc:creator>
				<category><![CDATA[design]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.codediesel.com/?p=2939</guid>
		<description><![CDATA[This post is based on Ward Cunningham&#8217;s Signature Survey: A Method for Browsing Unfamiliar Code article. Ward suggests that when studying new and unfamiliar source codes, it is vital that a programmer get a intuitive sense of the code structure under consideration. One method he suggests is that of summarizing on a single line select [...]]]></description>
			<content:encoded><![CDATA[<p>This post is based on Ward Cunningham&#8217;s <a href="http://c2.com/doc/SignatureSurvey/" title="Signature Survey:  A Method for Browsing Unfamiliar Code" target="_blank">Signature Survey: A Method for Browsing Unfamiliar Code</a> article. Ward suggests that when studying new and unfamiliar source codes, it is vital that a programmer get a intuitive sense of the code structure under consideration. One method he suggests is that of summarizing on a single line select punctuation characters from each source file. He calls this the file&#8217;s &#8220;signature&#8221;. This will help the developer gauge the complexity of the code base.</p>
<p>So for example, if we only consider using braces &#8216;{}&#8217;, and semicolon &#8216;;&#8217; &#8211; one of the common punctuation elements in a PHP program, a programmer can get a feel for the structure of a source file. Usually braces delimit blocks and functions in PHP, and many other languages, so this can give a programmer a sense of the length of code blocks or function sizes.<br />
<span id="more-2939"></span><br />
A sample source file taken from a WordPress system, and its signature using select punctuation characters ( &#8216;{}&#8217; and &#8216;;&#8217; ) is given below.</p>
<p><strong>Sample WordPress source file &#8211; wp-blog-header.php:</strong></p>

<div class="wp_codebox"><table><tr id="p29397"><td class="code" id="p2939code7"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #009933; font-style: italic;">/**
 * Loads the WordPress environment and template.
 *
 * @package WordPress
 */</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$wp_did_header</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$wp_did_header</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">require_once</span><span style="color: #009900;">&#40;</span> <span style="color: #990000;">dirname</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">__FILE__</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/wp-load.php'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	wp<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">require_once</span><span style="color: #009900;">&#40;</span> ABSPATH <span style="color: #339933;">.</span> WPINC <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/template-loader.php'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p><strong>Signature of the above file:</strong></p>

<div class="wp_codebox"><table><tr id="p29398"><td class="code" id="p2939code8"><pre class="text" style="font-family:monospace;">wp-blog-header.php : {;;;;}</pre></td></tr></table></div>

<p>This shows that the file has one block section (function, class or other), containing four statements. Of course to get a quick intuitive feel for the signature, you will have to work with at least a few diverse code bases. This will prime you to estimate the complexity of the code by just looking at the signature.</p>
<p>If we also include parenthesis &#8216;()&#8217; in the signature, we get the following. But this looks a little complex and less intuitive than the previous one.</p>

<div class="wp_codebox"><table><tr id="p29399"><td class="code" id="p2939code9"><pre class="text" style="font-family:monospace;">wp-blog-header.php : (()){;(());();();}</pre></td></tr></table></div>

<p>Some more signatures of various WordPress root files is given below.</p>

<div class="wp_codebox"><table><tr id="p293910"><td class="code" id="p2939code10"><pre class="text" style="font-family:monospace;">index.php : ;;
wp-atom.php : ;;;
wp-blog-header.php : {;;;;}
wp-comments-post.php : {;;;;};;;;{;;};;{;;}{;;}{;;}{;;}{;};;;;;{;;;;
{{;;}}}{;};{;;};;;;;{;;;;};;;;
wp-commentsrss2.php : ;;;
wp-config-sample.php : {};;;;;;{};;;;;;;;;;;;;
wp-config.php : ;{};;;;;;{}}{{{;{};;{;;{;{};{{{;{;}{;;;;;;
wp-cron.php : ;;;{;};;;;{;{{;{;;};;}}};
wp-feed.php : ;;;
wp-links-opml.php : ;;;;{;;};;;;;;;;;;;;;;;;
xmlrpc.php : ;;{;};;{;;;;};;;;;;{;{;;;;;};};;;;;
wp-load.php : ;;{;}{;}{;;;;;;;;;;;;}
wp-pass.php : ;;;;;
wp-rdf.php : ;;;
wp-register.php : ;;;
wp-rss.php : ;;;
wp-rss2.php : ;;;
wp-login.php : ;{{;;}{;;}}{;;;;;;;;;;;;;;;;{;;;;{;}{;}}{{;}};;{;;;}{;;
;};;{;;}{;;{;{;;}};;}}{;;;{;;}{};;;}{;;{;{;}{;{;;}}};{;}{;}{;;{{;};}{{
;;}{}}}{;;;;;};}{;;;{;;}{;;};;{;;};;;;;;;;{;;;};;;;;;;;;;;;;}{;;;;;;;}
{;;;}{;;;{;}{;;}{;}{;}{;;;}{;};;;;;{;;;};;;};;;;;;;{;;;};;;;;{;;;;;;{;
{;;;}};;;;;;;;;;;;;{;;};{;}{;;;;};;;;;;;;;;;{;;}{;;};;{;;;{;;;}};;;;;;
;;;;;{;{{;;}}}{;;}{;};;;;{{;;{};;;}{;;;};;};;;;;;;;;;;;;;;;;;{}{;}{;}{
{{{;;}{;{;}};;}{}};}{;};;;}
wp-mail.php : ;;;;;;;;;;;;;;{;;;};;{;;;;;;;;;;{;{;}{{;;;;{;;};}{;;;;;}
{;;;}{;;{;}{;};;}{;;;{;;{;}{;;}}{;}}{;;{;};;;;;;;;;;{{;}};;;;;}}}{;;}{
;};{;;{;;};};;{;}{;};;;;;;;;;;;;;;;{;;;}{;}};
wp-settings.php : ;;;;;;;;;;;;;;;;;;;;;;;;;;;;{;;}{;};;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;{;;;};{;};{{;};};;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;{;
;};;;;;{{;;};};
wp-signup.php : ;;;{;;}{;};{;}{;;}{;;};{{;;}{;}{;;;;;}{;;;}{;;}{;;;;}{;
}{;;;;;}};;;{;;;{};;{;;;}{};;{};{};;}{;;;}{;{;};;;{}{;};}{;}{;;{;};;;;;
{;};;{{;;}};;;}{;;;;;{;;};;;;;;}{{}{}{};;;}{;;;;;;;;;;;{}{}{}}{;;{;;}{;
;};;;}{;;}{;;;;;;;;;;}{;;{;;};;{;;};;;;;;}{{}{}{};;;;;};;;;;;;;;;;;{;}{
;;;;}{;{;;;;;;;;;;;;;;{;;;};}};;
wp-trackback.php : {;;}{;;{;;;;;;}{;;;;}};{;;};;;;;;;;{;;;};;;;;{;;}{;;
;;;;;;;;;;;;;;;}
wp-activate.php : ;;;{;;};;{;};{{;}{;;}{;}{;}{;;;;;}};;{;}{;;{{;;;{;;
;}{;;;};}{;;}}{;;;;;;;;;;}};;;</pre></td></tr></table></div>

<p>To generate the signatures yourself, you can use the following shell script or a PHP program. The shell script is shown below.</p>

<div class="wp_codebox"><table><tr id="p293911"><td class="code" id="p2939code11"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">for</span> i <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">*</span>.php; <span style="color: #000000; font-weight: bold;">do</span>
    <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #660033;">-n</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$i</span>: &quot;</span>
    <span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #ff0000;">'s/[^{};]//g'</span> <span style="color: #007800;">$i</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">tr</span> <span style="color: #660033;">-d</span> <span style="color: #ff0000;">'\n'</span>
    <span style="color: #7a0874; font-weight: bold;">echo</span> 
<span style="color: #000000; font-weight: bold;">done</span></pre></td></tr></table></div>

<p>And below is a PHP version to do the same.</p>

<div class="wp_codebox"><table><tr id="p293912"><td class="code" id="p2939code12"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
<span style="color: #009933; font-style: italic;">/* Get all PHP files in the current directory */</span>
<span style="color: #000088;">$dir</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'./*.php'</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009933; font-style: italic;">/* Use the SPL Iterator class */</span>
<span style="color: #000088;">$files</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> GlobIterator<span style="color: #009900;">&#40;</span><span style="color: #000088;">$dir</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009933; font-style: italic;">/* Get the signature of each file */</span>
<span style="color: #000000; font-weight: bold;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$files</span> <span style="color: #000000; font-weight: bold;">as</span> <span style="color: #000088;">$file</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> <span style="color: #990000;">file_get_contents</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #990000;">preg_match_all</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/[{};]/'</span><span style="color: #339933;">,</span><span style="color: #000088;">$data</span><span style="color: #339933;">,</span><span style="color: #000088;">$out</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$signature</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$out</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #000000; font-weight: bold;">as</span> <span style="color: #000088;">$line</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$signature</span> <span style="color: #339933;">.=</span> <span style="color: #000088;">$line</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">echo</span> <span style="color: #000088;">$file</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getFilename</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot; : &quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$signature</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Furthermore, we can make the output more attractive and user friendly, by outputting it to HTML, with links to each source file.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.codediesel.com/php/source-code-signatures-in-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Creating win/win projects using Project Value Analysis</title>
		<link>http://www.codediesel.com/software/creating-win-win-projects-using-project-value-analysis/</link>
		<comments>http://www.codediesel.com/software/creating-win-win-projects-using-project-value-analysis/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 07:41:42 +0000</pubDate>
		<dc:creator>sameer</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[clients]]></category>

		<guid isPermaLink="false">http://www.codediesel.com/software/6-maxims-to-satisfy-a-client/</guid>
		<description><![CDATA[importance of Project Value Analysis in delivering a successful project]]></description>
			<content:encoded><![CDATA[<p>From a client’s perspective, the most important criteria when developing any new software is that it adds some &#8216;value&#8217; to his company. Every software application has some financial and some intangible value attached with it. Without it there would be no reason for a client to invest in developing new software or for that matter, upgrading an existing one. The client has some financial goals in his mind when he proposes to develop some software. He plans to make some profit (financial or otherwise) from the development of the software. Whether the financial gains are immediate or peripheral is a different matter.<br />
<span id="more-2266"></span><br />
But it is a complete different scene at the typical software development house. Developers are usually in the dark about the value aspects of the software they are developing. This most often, but not always, leads to a restrained and blithe attitude of developers. Not to squarely put the blame on the developers or management only, many times  the fault also lies with the client, who fails to communicate the ‘expected value’ of the proposed software clearly.</p>
<p>As a small reminder, below are six of the most important expectations the client has from the developed software, every other thing hinges on these:</p>
<blockquote><p>
1. Revenue generation from the new application<br />
2. Cost reductions from the new application or upgrade<br />
3. Indirect revenue generation<br />
4. Increase in exiting user base due to some new features<br />
5. Increase in market share<br />
6. Revenue increase in companion application
</p></blockquote>
<p>The points raised above may come as common-sense; but how many times when developing for a client, have you given thought to these matters. We developers and usually busy thinking about the best way to structure the application, the best way to run a SQL query, the best MVC framework;  leaving the business and value aspects of the proposed software to the management; who usually do not find it prudent to enlighten the developers’ in that matter. It’s not that the technical issues are not important; what is wrong is the predominant focus on technical issues.</p>
<p>Taking the business and value aspects into consideration during development enables you to view the project from the clients perspective. This in itself makes taking decisions regarding certain technical issues easier. It is even more important for you to take the business issues into consideration if you are a freelance developer, where you are solely responsible for bad project outcome, unlike a company where you can play the blame game and walk away from the mess unscathed.</p>
<p>In a nutshell, a client does not care if you have used the latest MVC framework, or used your expert programming skills to design that perfect algorithm. What they truly care is whether the developed software will garner them some intrinsic value more then what they paid for, which in business parlance we know as ROI. Everything else is just details. </p>
<p>Consider those matters when developing your next project and you will have a win/win project in your hands with a satisfied and smiling client as a bonus.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.codediesel.com/software/creating-win-win-projects-using-project-value-analysis/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Where did that bug come from?</title>
		<link>http://www.codediesel.com/software/where-did-that-bug-come-from/</link>
		<comments>http://www.codediesel.com/software/where-did-that-bug-come-from/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 15:44:25 +0000</pubDate>
		<dc:creator>sameer</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.codediesel.com/?p=1988</guid>
		<description><![CDATA[how small changes in code can introduce bugs]]></description>
			<content:encoded><![CDATA[<p>This is the second time this week that I encountered a annoying bug, introduced just by a small change in the code. Just when you think you can get away with minor changes without testing, you are in for a surprise.</p>
<p>The most common sense thing you can do is to test your code even for small changes; whether you are testing it yourself or sending it to the testing team. Seems simple, but how many times have you really done that. Its not that we are stupid, rather software was never so simple. Maybe we are careless sometimes. The moral is plain &#8211; treat even small changes important, and move it through a test before committing it to a version control.<br />
<span id="more-1988"></span><br />
The following figure from Steve Mcconnell&#8217;s <a href="http://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670">Code Complete</a> shows the relation between lines of code changed and errors introduced.</p>
<p><a href="http://www.codediesel.com/wp-content/uploads/2009/11/bug_source.gif"><img src="http://www.codediesel.com/wp-content/uploads/2009/11/bug_source.gif" alt="bug_source" title="bug_source" width="430" height="235" class="aligncenter size-full wp-image-1990" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.codediesel.com/software/where-did-that-bug-come-from/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Software Peter Principle</title>
		<link>http://www.codediesel.com/software/software-peter-principle/</link>
		<comments>http://www.codediesel.com/software/software-peter-principle/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 00:00:35 +0000</pubDate>
		<dc:creator>sameer</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[design]]></category>

		<guid isPermaLink="false">http://www.codediesel.com/?p=1013</guid>
		<description><![CDATA[complexity of a developing software leading to its death]]></description>
			<content:encoded><![CDATA[<p>Having to scrap a project after working on it for more than a year is not really an interesting way to up your morale. But it is one the most common things to occur in software development. </p>
<p>To take a real world example; A development company I know has been developing a shopping cart for the last 14 months ( beats me why anyone has to develop a shopping cart when so many free and excellent are already available ). But it is still nowhere near production ready. There is always <em>something left</em> to be added or cleaned. During the development period more than half a dozen programmers have worked on the project and left, producing a convoluted piece of software, which every new member dreads to touch in fear of breaking something somewhere. Salvaging the project is getting harder by the day.<br />
<span id="more-1013"></span><br />
The above episode is a perfect case of what is known in our field as the &#8216;Software Peter principle&#8217;.  I first came across this principle in chapter 3 of <em>C++ FAQs</em>. Originally borrowed from management, the principle basically describes:</p>
<blockquote><p>a dying project which has little by little become too complex to be understood even by its own developers.</p></blockquote>
<p>Some reasons usually cited being :</p>
<p><strong>Loss of Conceptual Integrity</strong><br />
Conceptual integrity is a measure of how well software conforms to a simple set of design principles. Conceptual integrity ensures that anywhere you look in your software system, you can tell that each small design is part of the same overall structure and not a mishmash of different designs.</p>
<p>Conceptual integrity is achieved when the software’s design proceeds from a small number of agreeing individuals, with a well defined but strong architectural team. In projects devoid of strong teams each individual favors personal interest over the common interest of the project. Adding his own coding style, altering earlier designs to suit his individual taste or deviating from the initial architectural design. Incidentally frameworks provide a means to achieve Conceptual Integrity</p>
<p><strong>Incompetent &#038; Inexperienced programmers</strong><br />
Not much can be done if the developers are not up to the project skills. All you can do is cross your fingers and pray, or at a little more price hire good developers. However hiring good programmers isn&#8217;t always enough. The experience of developing real world projects is way different than developing in an academic environment. Many times developers go about using complex language constructs in the code to showoff their proficiency, when a simple one could easily do.</p>
<p>Like diabetes, the <em>Software Peter Principle</em> is known as a silent killer; by the time symptoms show it is already too late. Salvaging becomes impossible and the only option left is to kill the project and move on. (Although not exactly the same with diabetes. Thank Heavens!)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.codediesel.com/software/software-peter-principle/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>&#8220;why software projects fail&#8221; Poster</title>
		<link>http://www.codediesel.com/visualization/why-software-projects-fail-poster/</link>
		<comments>http://www.codediesel.com/visualization/why-software-projects-fail-poster/#comments</comments>
		<pubDate>Wed, 15 Oct 2008 08:37:21 +0000</pubDate>
		<dc:creator>sameer</dc:creator>
				<category><![CDATA[visualization]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.codediesel.com/?p=116</guid>
		<description><![CDATA[Software projects fail &#8211; that is a fact no developer is immune from; and the reasons for the same are quite simple and well understood. Still we encounter projects that have gone astray because developers or companies do not learn from their mistakes or are unwilling to follow best practices. For many of us, its [...]]]></description>
			<content:encoded><![CDATA[<p>Software projects fail &#8211; that is a fact no developer is immune from; and the reasons for the same are quite simple and well understood. Still we encounter projects that have gone astray because developers or companies do not learn from their mistakes or are unwilling to follow best practices. For many of us, its always the &#8220;next project&#8221; that is going to be well designed.<br />
<span id="more-116"></span><br />
On my book shelf I&#8217;ve a health chart. I had created it after I kept losing track of my daily exercise schedules. There is a quirk in the chart though. Rather than listing what exercise routines I should be doing or what food I should be eating, it lists all the negative aspects of living an unhealthy lifestyle. This spurs me towards action more than if I has just listed the positive aspects of health. Now once on the shelf it acts as a daily reminder and helps me keep my health in check.</p>
<p>The chart below lists some of the reasons that most software projects fail. I&#8217;ve created it so that anyone can print and post it near their workplace, as a constant reminder to the perils of poor development practices. Designing is not my forte, so extend me some latitude if you don&#8217;t like the design.</p>
<p><img src="http://www.codediesel.com/wp-content/themes/Maroon01/images/downloads.png" /><br />
<strong>Download chart as :</strong><br />
1. <a title="why software fails" href="http://www.codediesel.com/wp-content/uploads/2008/10/why-software-fails.gif" target="_blank">Medium resolution Gif</a><br />
2. <a title="why software fails" href="http://www.codediesel.com/data/pdf/why-software-projects-fails.pdf" target="_self">PDF</a></p>
<p style="text-align: center;"><a href="http://www.codediesel.com/wp-content/uploads/2008/10/why-software-fails.gif"><img class="aligncenter size-medium wp-image-117" title="why-software-fails" src="http://www.codediesel.com/wp-content/uploads/2008/10/why-software-fails-300x212.gif" alt="why-software-fails" width="300" height="212" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.codediesel.com/visualization/why-software-projects-fail-poster/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Why clients want software developed cheap.</title>
		<link>http://www.codediesel.com/software/why-clients-want-software-developed-cheap/</link>
		<comments>http://www.codediesel.com/software/why-clients-want-software-developed-cheap/#comments</comments>
		<pubDate>Wed, 16 Jul 2008 11:51:57 +0000</pubDate>
		<dc:creator>sameer</dc:creator>
				<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.codediesel.com/?p=66</guid>
		<description><![CDATA[A couple of weeks back I was asked by a client to quote for a 25 page ecommerce website. After looking at his requirements I quoted him $450, which is quite low by any standards. The client called me with a surprised tone in his voice and told me that in that amount he would [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.codediesel.com/wp-content/uploads/2008/07/2157396025_5a492ec362_m.jpg"><img class="alignleft size-medium wp-image-68" style="padding-right: 15px;" title="2157396025_5a492ec362_m" src="http://www.codediesel.com/wp-content/uploads/2008/07/2157396025_5a492ec362_m.jpg" alt="rails" width="242" height="182" /></a>A couple of weeks back I was asked by a client to quote for a 25 page ecommerce website.  After looking at his requirements I quoted him $450, which is quite low by any standards. The client called me with a surprised tone in his voice and told me that in that amount he would be able to buy a new computer and he was willing to pay me not more than $200 for the same. This is not an isolated case, but one from a dozen or so client interactions. I don&#8217;t want to imply that the clients are cheap; all of the clients I have dealt with are very good business people. Its just that they don&#8217;t know the value of software; and one of the main reasons for that is piracy.<br />
<span id="more-66"></span><br />
<strong>Piracy</strong><br />
A year ago a relative of mine got an assembled PC, which came with a 260GB HD, CDROM, AMD processor and about 12GB of pirated software. Software right from Photoshop, Dreamweaver, AutoCAD to Oracle. My rough estimation of the total cost of the software was about US $21000, while the PC cost was only around $900. This is a common thing here in India and most of the Asian countries. The result of this is that people have no value of software here.</p>
<p>Surprisingly many people think that the software comes free when you buy a new PC. Its like if you buy a wardrobe you get all the clothes for free.</p>
<p>A recent encounter with a businessman I know was a real eye-opener. This guy was telling me about the rampant growth of piracy in the music and movie industry and how he had never bought a single pirated movie or music CD. Being quite impressed with him, I asked him from where had he bought the Vista operating system that he was using on his desktop PC. To my chagrin he expressed surprise at my question. He said that it came bundled with the computer. Since his computer was also assembled by a local vendor, the copy of Vista was surely a pirated one. After telling him about the same, he replied that he thought the operating system and other software like Microsoft Office came free with the computer. After I told him that he was using software worth $1200 illegally he showed surprise, but nowhere was there a hint that he would go out and buy legal copies of the same.</p>
<p><strong>Intangibility of software.</strong><br />
Software, unlike other things in our daily lives, is intangible in nature. You cannot touch or feel it the way you feel a book or a car. And therein lies the problem. Most people when they buy some product want to feel the thing they have bought. They want to possess it. Say you have bought yourself a nice music system. You can enjoy all the tangible pleasures a music system can provide. Unlike software it also has a return monetary value; if you wish you can sell it back to a friend for the same amount of money or at a reduced price. Not so with software, once you have bought it you cannot sell it to another person. Of course when you buy some software product, say Photoshop, you get monetary benefits by providing services to clients by using it. But people are illogical, there motto is &#8211; if you cannot see or touch something it should be free!<br />
<strong></strong></p>
<p><strong>What we can do.</strong><br />
The only way to get out of this mess is to educate people around you.  Whether they are school children, business people, home users or even those who don&#8217;t use a computer, we need to get them to understand the value of software; the amount being spent by companies on development; the hard work and toil of programmers and that their are alternatives like open source softwares if you want a free solution.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.codediesel.com/software/why-clients-want-software-developed-cheap/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Which is the most popular version of PHP today</title>
		<link>http://www.codediesel.com/php/which-is-the-most-popular-version-of-php-today/</link>
		<comments>http://www.codediesel.com/php/which-is-the-most-popular-version-of-php-today/#comments</comments>
		<pubDate>Fri, 09 May 2008 09:20:58 +0000</pubDate>
		<dc:creator>sameer</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.codediesel.com/?p=37</guid>
		<description><![CDATA[The graphic below displays the market share of each PHP version as on march 2008. The blue graph represents the sum of all preceding versions. PHP 5.2.5 now is the most popular version of PHP followed closely by PHP 4.4.8 and 4.4.7. This information can be helpful if you are planning on creating an Open [...]]]></description>
			<content:encoded><![CDATA[<p>The graphic below displays the market share of each PHP version as on march 2008. The blue graph represents the sum of all preceding versions.</p>
<p>PHP 5.2.5 now is the most popular version of PHP followed closely by PHP 4.4.8 and 4.4.7. This information can be helpful if you are planning on creating an Open source project or are thinking of moving past the version 4 mark in your professional career but are hesitant regarding the version 5 support on servers.<span id="more-37"></span></p>
<p><a title="graph" href="http://www.nexen.net/images/stories/phpversion/200804/versions.en.png" target="_blank"><img class="aligncenter size-full wp-image-39" title="popular php versions" src="http://www.codediesel.com/wp-content/uploads/2008/05/versionsenmini1.png" alt="popular php versions" width="430" height="322" /></a></p>
<p>The below two graphs show the market share of various PHP versions for April 2007 and April 2008.</p>
<p><a href="http://www.nexen.net/images/stories/phpversion/200704/majeure.en.png" target="_blank"><img class="center size-medium wp-image-44" title="php versions 2007" src="http://www.codediesel.com/wp-content/uploads/2008/05/majeureenmini1-300x224.png" alt="php versions" width="300" height="224" /></a></p>
<p><a href="http://www.nexen.net/images/stories/phpversion/200804/majeure.en.png" target="_blank"><img class="center size-medium wp-image-45" title="php versions 2008" src="http://www.codediesel.com/wp-content/uploads/2008/05/majeureenmini2-300x224.png" alt="php versions 2008" width="300" height="224" /></a></p>
<p>As you can see PHP version 5 has reached a market share of 36% from last years 17%, more then double in one year. As PHP version 6.0.0 is nearing the release date, you can expect PHP 5 to hopefully cross the 50% market share by this year end.</p>
<p>I&#8217;am very keen on knowing if any of you are planning on migrating to version 6 after release or have decided to wait a year or year-an-half prior to adoption. Most of the people I know, still stuck with version 4.x.x, have decided to move to PHP 6 directly rather then go through the 5.x.x route.</p>
<p>The data for this analysis was collected by <a title="nexen.net" href="http://www.nexen.net/" target="_blank">Nexen </a>from 28 million servers and you can find a more detailed analysis on their site.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.codediesel.com/php/which-is-the-most-popular-version-of-php-today/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>6 books to master PHP</title>
		<link>http://www.codediesel.com/php/6-books-to-master-php/</link>
		<comments>http://www.codediesel.com/php/6-books-to-master-php/#comments</comments>
		<pubDate>Mon, 21 Apr 2008 09:44:11 +0000</pubDate>
		<dc:creator>sameer</dc:creator>
				<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.codediesel.com/?p=18</guid>
		<description><![CDATA[PHP is a wonderful dynamic language, and the addition of Unicode support, namespaces in the upcoming version 6 will make it even better. If you are new to PHP or are thinking of moving to PHP form other language then the following list of books will provide you with the required knowledge to become a [...]]]></description>
			<content:encoded><![CDATA[<p>PHP is a wonderful dynamic language, and the addition of Unicode support, namespaces in the upcoming version 6 will make it even better.<br />
If you are new to PHP or are thinking of moving to PHP form other language then the following list of books will provide you with the required knowledge to become a seasoned PHP programmer. Of course, the list is subjective and you may have a different list of books in mind.<span id="more-18"></span></p>
<hr size="1" /><a href="http://www.codediesel.com/wp-content/uploads/2008/04/2.gif"><img title="Zend PHP 5 Certification" src="http://www.codediesel.com/wp-content/uploads/2008/04/2.gif" alt="Zend PHP 5 Certification" width="77" height="94" /></a></p>
<p><strong>1.<a href="http://www.amazon.com/architects-Zend-Certification-Study-Guide/dp/0973862149/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1208775291&amp;sr=8-1" target="_blank"> Zend PHP 5 Certification</a></strong> : If you are new to PHP, then you cannot get wrong with this book. This book will get you up and running in no time.; right from the basics to OOP, security, XML processing and more. A warning &#8211; the book doesn&#8217;t go into much detail, so you will have to refer to other books given below for a deeper understanding of the concepts.</p>
<hr size="1" /><a href="http://www.codediesel.com/wp-content/uploads/2008/04/1.gif"><img title="phpinaction" src="http://www.codediesel.com/wp-content/uploads/2008/04/1.gif" alt="php in action" width="75" height="94" /></a></p>
<p><strong>2. <a href="http://www.amazon.com/PHP-Action-Objects-Design-Agility/dp/1932394753/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1208775343&amp;sr=1-1" target="_blank">PHP in Action</a></strong> : If you a beginner or intermediate PHP programmer, then this book will take you to the next level. Design Patterns, unit testing, advanced OOP.</p>
<hr size="1" /><a href="http://www.codediesel.com/wp-content/uploads/2008/04/51.gif"><img class="alignnone size-thumbnail wp-image-22" title="PHP and MySQL Web Development" src="http://www.codediesel.com/wp-content/uploads/2008/04/51.gif" alt="PHP and MySQL Web Development" width="77" height="99" /></a></p>
<p><strong>3. <a href="http://www.amazon.com/PHP-MySQL-Development-Developers-Library/dp/0672326728/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1208775375&amp;sr=1-1" target="_blank">PHP and MySQL Web Development</a></strong> : More pragmatic then the other books posted here. A little old compared to others. No information about MVC or design patterns, but this book you show you how to build real world applications like shopping carts, forums, mailing list managers, content management systems etc. It also has an excellent coverage of MySQL.</p>
<hr size="1" /><a href="http://www.codediesel.com/wp-content/uploads/2008/04/3.gif"><img class="alignnone size-thumbnail wp-image-23" title="PEAR" src="http://www.codediesel.com/wp-content/uploads/2008/04/3.gif" alt="PEAR" width="74" height="94" /></a></p>
<p><strong>4. <a href="http://www.amazon.com/PHP-Programming-PEAR-Schmidt-Stephan/dp/1904811795/ref=pd_bbs_2?ie=UTF8&amp;s=books&amp;qid=1208775417&amp;sr=1-2" target="_blank">PEAR</a></strong><a href="http://www.codediesel.com/wp-admin/PHP Programming with PEAR" target="_blank"> </a>: PEAR is the PHP Extension and Application Repository, and is a framework and distribution system for reusable, high-quality PHP components. If you have been programming PHP for a while then you will surely have come across PEAR. PEAR provides classes for most of your daily programming needs. Whether you want to work with XML, create Excel documents, encryption, text processing; PEAR provides a class for the purpose and for many more then you can shake a stick at.</p>
<hr size="1" /><a href="http://www.codediesel.com/wp-content/uploads/2008/04/6.gif"><img class="alignnone size-thumbnail wp-image-24" title="PHP Cookbook" src="http://www.codediesel.com/wp-content/uploads/2008/04/6.gif" alt="PHP Cookbook" width="78" height="102" /></a></p>
<p><strong>5. <a href="http://www.amazon.com/Cookbook-Cookbooks-OReilly-Adam-Trachtenberg/dp/0596101015/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1208775472&amp;sr=1-1" target="_blank">PHP Cookbook</a> </strong>: The book to get you unstuck. Mostly for intermediate programmers; just the book to refer when you want a quick solution to a particular coding problem.</p>
<hr size="1" /><a href="http://www.codediesel.com/wp-content/uploads/2008/04/7.gif"><img class="alignnone size-thumbnail wp-image-25" title="SQL for MySQL Developers" src="http://www.codediesel.com/wp-content/uploads/2008/04/7.gif" alt="SQL for MySQL Developers" width="70" height="95" /></a></p>
<p><strong>6. <a href="http://www.amazon.com/SQL-MySQL-Developers-Comprehensive-Reference/dp/0131497359/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1208775500&amp;sr=1-1" target="_blank">SQL for MySQL Developers</a></strong> : Most PHP programmers I have encountered have a very limited understanding of SQL. How many intermediate programmers are aware of the &#8216;HAVING&#8217; clause in the SELECT statement or have used sub queries more then 2 level deep. The book provides excellent coverage of SQL as implemented in MySQL. The SELECT statement itself is given 9 chapters of coverage.<br />
The book covers everything from MySQL installation, configuration, security to Stored Procedures in a friendly manner with many exercises at each chapter end.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.codediesel.com/php/6-books-to-master-php/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>

