<?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>The Nir Simionovich blog &#187; Apache</title>
	<atom:link href="http://www.simionovich.com/tag/apache/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.simionovich.com</link>
	<description>The rants and raves of a technogeek</description>
	<lastBuildDate>Mon, 09 Aug 2010 21:08:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Call Analytics &#8211; Closed Alpha testing group</title>
		<link>http://www.simionovich.com/2010/03/14/call-analytics-closed-alpha-testing-group/</link>
		<comments>http://www.simionovich.com/2010/03/14/call-analytics-closed-alpha-testing-group/#comments</comments>
		<pubDate>Sun, 14 Mar 2010 09:09:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AGI]]></category>
		<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[GPL]]></category>
		<category><![CDATA[SIP]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[technnology]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[digium]]></category>
		<category><![CDATA[Elastix]]></category>
		<category><![CDATA[Fonality]]></category>
		<category><![CDATA[FreePBX]]></category>
		<category><![CDATA[freeswitch]]></category>
		<category><![CDATA[GreenfieldTech]]></category>
		<category><![CDATA[PHPAGI]]></category>
		<category><![CDATA[sangoma]]></category>
		<category><![CDATA[TrixBox]]></category>

		<guid isPermaLink="false">http://www.simionovich.com/?p=397</guid>
		<description><![CDATA[Well, it's been almost a month since I've started writing about the humbug project. Now, it's time to actually get you people involved, at least in the initial levels. We are looking to add 10 additional members into the humbug call analytics suite. Currently available analytics during the alpha testing is inbound call analytics.

]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.simionovich.com%2F2010%2F03%2F14%2Fcall-analytics-closed-alpha-testing-group%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.simionovich.com%2F2010%2F03%2F14%2Fcall-analytics-closed-alpha-testing-group%2F&amp;source=nirsimionovich&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Well, it&#8217;s been almost a month since I&#8217;ve started writing about the humbug project. Now, it&#8217;s time to actually get you people involved, at least in the initial levels. We are looking to add 10 additional members into the humbug call analytics suite. Currently available analytics during the alpha testing is inbound call analytics.</p>
<p>Our aim is to gather as much information as we can and as much user requests as we can, humbug is a community oriented project, thus it relies on community oriented input and feature requests. Participating members will  be granted access to the humbug analytics portal, allowing them to gather statistical information regarding their inbound call hits and their top ten DID numbers &#8211; we are working on additional statistics. As new stats will become available, we&#8217;ll role those out into the service as soon as possible.</p>
<p>In order to participate in the closed alpha testing, please send an email to alphatest at humbuglabs.org, and we&#8217;ll send you a short piece of dialplan code to insert into your <a class="zem_slink" title="Asterisk (PBX)" rel="homepage" href="http://www.asterisk.org/">Asterisk</a> server. Technically speaking, we&#8217;ll send you a short AGI command that looks like this:</p>
<p>exten =&gt; _X.,n,AGI(agi://somehost/DataReceiver,some_unique_ident)</p>
<p>The above line needs to be inserted into any place you would like to generate call analytics from. We&#8217;ll also enclose configuration steps for <a class="zem_slink" title="FreePBX" rel="wikipedia" href="http://en.wikipedia.org/wiki/FreePBX">FreePBX</a> (and other FreePBX compatible distributions). We are hard at work for creating a FreePBX integrated module, so you can do a one-click install.</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/30a0c292-bf3e-4955-a2cb-865340d13569/"><img class="zemanta-pixie-img" style="border: medium none; float: right;" src="http://img.zemanta.com/reblog_e.png?x-id=30a0c292-bf3e-4955-a2cb-865340d13569" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related pretty-attribution"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
]]></content:encoded>
			<wfw:commentRss>http://www.simionovich.com/2010/03/14/call-analytics-closed-alpha-testing-group/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A2Billing+Apache vs. A2Billing+Lighttpd</title>
		<link>http://www.simionovich.com/2008/10/14/a2billingapache-vs-a2billinglighttpd/</link>
		<comments>http://www.simionovich.com/2008/10/14/a2billingapache-vs-a2billinglighttpd/#comments</comments>
		<pubDate>Tue, 14 Oct 2008 04:51:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AGI]]></category>
		<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[GPL]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[rants]]></category>
		<category><![CDATA[technnology]]></category>
		<category><![CDATA[A2Billing]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Authentication]]></category>
		<category><![CDATA[Authorization]]></category>
		<category><![CDATA[errord]]></category>
		<category><![CDATA[FreePBX]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[Lighttpd]]></category>
		<category><![CDATA[memory]]></category>

		<guid isPermaLink="false">http://www.simionovich.com/?p=108</guid>
		<description><![CDATA[Ok, it goes without saying: &#8220;A2Billing is one of the most complete Calling Card systems in the Asterisk market today.&#8221; &#8211; on the other hand, it is also true that: &#8220;A2Billing is one of the most complex and convoluted pieces of code ever written!&#8221;. The combination of the above makes for a fairly combustible mixture,]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.simionovich.com%2F2008%2F10%2F14%2Fa2billingapache-vs-a2billinglighttpd%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.simionovich.com%2F2008%2F10%2F14%2Fa2billingapache-vs-a2billinglighttpd%2F&amp;source=nirsimionovich&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Ok, it goes without saying: &#8220;A2Billing is one of the most complete Calling Card systems in the Asterisk market today.&#8221; &#8211; on the other hand, it is also true that: &#8220;A2Billing is one of the most complex and convoluted pieces of code ever written!&#8221;.</p>
<p>The combination of the above makes for a fairly combustible mixture, especially if you have a big system. Now, I recently ran into an issue, where PHP was litterally eating up almost 512MB of ram, in order to run the A2Billing reports. In it self, that didn&#8217;t make much sense to me. However, after inspecting the code, and realizing that A2Billing uses GD in run-time to generate images out of thousands of CDR records, it made perfect sense that it may just be eating up memory.</p>
<p>So, increasing the memory on PHP to go up to 512MB of RAM helps, but creates an interesting probelm. Whenever Apache will invoke a script, it will automatically consume a shitload of RAM, and for each time I intiate a new query, it will spawn a new Apache instance, and consume the same amount of memory. That said, after 6 queries of 512MB, about 50% of the machines RAM was already eaten up &#8211; and Apache will not free it!</p>
<p>At this point, I had 2 choices:</p>
<ol>
<li>Go into the A2Billing code, change the GD code to work right or simply change it completely to something else (maybe flash).</li>
<li>Work around the problem with a mix of proper IT practices.</li>
</ol>
<p>I admit that I hate quite a lot of things (I won&#8217;t list these here); however; nothing ranks up the list as modifying someone elses code, when I know for fact that it will be unmaintainable in the future. So, I choose option number 2.</p>
<p>I&#8217;ve being playing alot with Lighttpd lately, and got some really nice performance from it. So, I said to myself, this would be a great test to see if Lighttpd+FastCGI can solve the problem here. I had to work my way around lighttpd to do what I wanted and verify that my FastCGI server in Lighttpd doesn&#8217;t consume all memory, however, here is what I got working with A2Billing, and really nice.</p>
<p>Step 1: Enable the required modules:</p>
<pre>server.modules              = (</pre>
<pre>                               "mod_access",</pre>
<pre>                               "mod_auth",</pre>
<pre>                               "mod_status",</pre>
<pre>                               "mod_fastcgi",</pre>
<pre>                               "mod_accesslog" )</pre>
<p>Step 2: Enable the FastCGI Server</p>
<pre>fastcgi.server             = ( ".php" =&gt;</pre>
<pre>                               ( "localhost" =&gt;</pre>
<pre>                                 (</pre>
<pre>                                   "socket" =&gt; "/var/run/lighttpd/php-fastcgi.socket",</pre>
<pre>                                   "bin-path" =&gt; "/usr/bin/php-cgi",</pre>
<pre>                                   "idle-timeout" =&gt; 30,</pre>
<pre>                                   "max-procs" =&gt; 1,</pre>
<pre>                                   "min-procs" =&gt; 1</pre>
<pre>                                 )</pre>
<pre>                               )</pre>
<pre>                            )</pre>
<p>Step 3: Modify user permissions (required if you are using FreePBX)</p>
<pre>server.username            = "asterisk"</pre>
<pre>server.groupname           = "asterisk"</pre>
<p>Step 4: Setup authentication and authorization (optional)</p>
<pre>#### auth module</pre>
<pre>## read authentication.txt for more info</pre>
<pre>auth.backend               = "htpasswd"</pre>
<pre>auth.backend.htpasswd.userfile = "/var/www/.htpasswd"</pre>
<pre>auth.require               = ( "/" =&gt;</pre>
<pre>                               (</pre>
<pre>                                 "method"  =&gt; "basic",</pre>
<pre>                                 "realm"   =&gt; "A2Billing Management",</pre>
<pre>                                 "require" =&gt; "valid-user"</pre>
<pre>                               )</pre>
<pre>                             )</pre>
<p>The above configuration made the interface spwan a single FastCGI, insuring that memory usage is never over utilized. I still need 512MB of RAM to run the scripts, but at least now it&#8217;s limited to only 512MB of RAM, out of a machine that has 16GB of RAM.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simionovich.com/2008/10/14/a2billingapache-vs-a2billinglighttpd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache vs. Lighttpd (AKA: Lighty)</title>
		<link>http://www.simionovich.com/2008/08/27/apache-vs-lighttpd-aka-lighty/</link>
		<comments>http://www.simionovich.com/2008/08/27/apache-vs-lighttpd-aka-lighty/#comments</comments>
		<pubDate>Wed, 27 Aug 2008 11:21:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AGI]]></category>
		<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[GPL]]></category>
		<category><![CDATA[SIP]]></category>
		<category><![CDATA[embedded]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[technnology]]></category>
		<category><![CDATA[Ajaz]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[dialer]]></category>
		<category><![CDATA[Lighttpd]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://www.simionovich.com/?p=55</guid>
		<description><![CDATA[For a while now I&#8217;ve been toying around with the idea of utilizing Lighttpd for various web based applications. One of these application is my Automatic Dialer framework, also known as the GTD-API. The main issue with the GTD-API (besides that it is highly reliant on a MySQL database), is the fact that all requests]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.simionovich.com%2F2008%2F08%2F27%2Fapache-vs-lighttpd-aka-lighty%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.simionovich.com%2F2008%2F08%2F27%2Fapache-vs-lighttpd-aka-lighty%2F&amp;source=nirsimionovich&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>For a while now I&#8217;ve been toying around with the idea of utilizing Lighttpd for various web based applications. One of these application is my Automatic Dialer framework, also known as the GTD-API. The main issue with the GTD-API (besides that it is highly reliant on a MySQL database), is the fact that all requests have to be processed via XML-RPC HTTP post requests.</p>
<p>The main issue that I had was this: in a production scenario, a dialer management system will generate over 100 requests to the XML-RPC server. While Apache is fully capable of rendering services at such a speed, its increasing size and boilerplate automatically introduce a management issue. In addition, as I was trying to build a dialer appliance that can be used in any enterprise, the ever expanding Apache wasn&#8217;t a good choice.</p>
<p>While I was looking at both NginX and Lighttpd, the latter captured my eye, thanks to a simple advantage &#8211; The integration of FastCGI based PHP was so easy, that it almost troubling that I used Apache all these years.</p>
<p>At this point, once I got Lighhtpd working with my Dialer, I said to myself: &#8220;It would be really cool to go about and send status reports back from the dialer, directly to the web client activating the call. In addition, I really don&#8217;t want to go about and perform these updates to the database, then query the database &#8211; that would, literally, kill the MySQL server.</p>
<p>So, I implemented a local session storage area for each call, which updated the call status as it traverses. The information was stored on the hard drive, which allowed a better response time than the ever indexing MySQL server. The status reports were picked up from the Lighttpd server via an Ajax client (which I didn&#8217;t write &#8211; I suck at JS) &#8211; and it works quite well.</p>
<p>I wonder, can Lighttpd completely replace Apache? &#8230; time will tell&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simionovich.com/2008/08/27/apache-vs-lighttpd-aka-lighty/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Annoying Thing</title>
		<link>http://www.simionovich.com/2008/06/26/the-annoying-thing/</link>
		<comments>http://www.simionovich.com/2008/06/26/the-annoying-thing/#comments</comments>
		<pubDate>Thu, 26 Jun 2008 07:11:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[GPL]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[rants]]></category>
		<category><![CDATA[technnology]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[IP]]></category>
		<category><![CDATA[IP telephony]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[services]]></category>
		<category><![CDATA[Verizon]]></category>

		<guid isPermaLink="false">http://www.simionovich.com/?p=45</guid>
		<description><![CDATA[When people hear other people talk about &#8220;The Annoying Thing&#8221;, most probably the first thing that pops into their mind is the below video: However, today I&#8217;d like to refer to another annoying phenom, the one that I call: &#8220;letting the piss get to your head &#8211; even if you didn&#8217;t do anything or contribute]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.simionovich.com%2F2008%2F06%2F26%2Fthe-annoying-thing%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.simionovich.com%2F2008%2F06%2F26%2Fthe-annoying-thing%2F&amp;source=nirsimionovich&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>When people hear other people talk about &#8220;The Annoying Thing&#8221;, most probably the first thing that pops into their mind is the below video:</p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/oNnRGtVkr6E&#038;hl=de"></param><embed src="http://www.youtube.com/v/oNnRGtVkr6E&#038;hl=de" type="application/x-shockwave-flash" width="425" height="344"></embed></object></p>
<p>However, today I&#8217;d like to refer to another annoying phenom, the one that I call: &#8220;letting the piss get to your head &#8211; even if you didn&#8217;t do anything or contribute to anything!&#8221;. </p>
<p>As I am a consultant, I work with a multitude of customers, each one with their own craziness and weirdness. Now, there is nothing wrong with being weird or crazy, but being out blunt rude and insulting, that&#8217;s something completely different. For example, when I walk into a meeting, I have the best interest of my customer in mind, however, when that customer mistakes my willingness to assist and promote his company, mistakes that willingness to being a sucker &#8211; that&#8217;s annoying. </p>
<p>Why would an IP carrier tell something in the form of: &#8220;Haaaa&#8230; Are you kidding? they need to pay me for using their product, I&#8217;m promoting it!&#8221; &#8211; that&#8217;s plain rude. Fuck man, your founders built your entire company on this product, when they raised VC money and charged money from their customers, the makers of the product (an open source one), didn&#8217;t make a dime of from you. That statement is blunt out RUDE!</p>
<p>I think that the best option would be to go about an establish inside the Open Source license model a statement that says: &#8220;If the GPL product is used in conjunction with a service, that surpasses the size of X concurrent/registered users, the product shall no longer be considered a GPL product &#8211; but a comercially licensed product, requiring the user to pay royalties to the creator&#8221;. Why is this a good thing? &#8211; very simple, sustainability of Open Source. In one of my previous posts, I talked about the sustainability of Open Source &#8211; defining the border when a usage of an Open Source product is considered commercial &#8211; and requires a form of royalty payment to the project&#8217;s maintainer/creator is a crucial element in making sure the project continues and evolves. </p>
<p>Imagine for example, that the Apache foundation didn&#8217;t exist. The foundation supports and funds (partially) the development behind the Apache web server project and related projects. The project is capable of sustaining itself, as companies which are making commercial usage of Apache are taking an active part in the funding of the project. With the Apache project, there was no need for a definition of &#8220;Commerical Use&#8221;, as the Apache project started from a Commercial need. Other projects start from non-Commercial needs, but evolve into Commercial products &#8211; that case needs to be addressed.<br />
 </p>
]]></content:encoded>
			<wfw:commentRss>http://www.simionovich.com/2008/06/26/the-annoying-thing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The annoyance of incompleteness</title>
		<link>http://www.simionovich.com/2007/11/11/the-annoyance-of-incompleteness/</link>
		<comments>http://www.simionovich.com/2007/11/11/the-annoyance-of-incompleteness/#comments</comments>
		<pubDate>Sun, 11 Nov 2007 12:33:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[rants]]></category>
		<category><![CDATA[technnology]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[DTD]]></category>
		<category><![CDATA[IVR]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.simionovich.com/?p=12</guid>
		<description><![CDATA[There is nothing more annoying than an incomplete specification design, brought to you as a design document. Why does every person that is capable of operating a word processor at a beginner level and operating Visio at a level of a child, believe that they are able to produce a proper design specification or ever]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.simionovich.com%2F2007%2F11%2F11%2Fthe-annoyance-of-incompleteness%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.simionovich.com%2F2007%2F11%2F11%2Fthe-annoyance-of-incompleteness%2F&amp;source=nirsimionovich&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>There is nothing more annoying than an incomplete specification design, brought to you as a design document. Why does every person that is capable of operating a word processor at a beginner level and operating Visio at a level of a child, believe that they are able to produce a proper design specification or ever a proper requirements document?<span id="more-12"></span></p>
<p>I had just received a so-called &#8220;specification document&#8221; from a prospective customer, that had specified the required system as &#8220;a pre-paid IVR system for premium services&#8221;, that was accompanied by a half page flow chart that had 4 blocks on it, without any description of what the system does. Now, I called the customer, explaining to him that the document isn&#8217;t complete, and I&#8217;d like to meet with him in order to write a proper document &#8211; the following conversation took place:</p>
<blockquote><p>Customer: I don&#8217;t think a meeting is needed, if you are too stupid to understand what I want &#8211; then I don&#8217;t think I want to work with you!.</p></blockquote>
<blockquote><p>Me: I&#8217;m very sorry that you think that I&#8217;m not good enough to carry your project, you are welcome to take your business to someone else who is more capable than I am.</p>
<p>Customer: Well, the thing is that you are my last hope, everyone said you can develop anything. I sent this document to a few companies, they all returned price quotes that were too high.</p>
<p>Me: They returned a high price quote because they have no idea what you want, so they gave you a price quote so high, so you would back off and not call them again. I want to help you do the project, but in order to do it, I need you to define your requirements better.</p>
<p>Customer: Are you familiar with the functionality of system X?</p>
<p>Me: Yes, that is a fairly complex system &#8211; development time is around 6-8 weeks, at minimum.</p>
<p>Customer: No, I need it working within 10 days, I already lost 6 weeks of getting price quotes.</p>
<p>Me: I&#8217;m sorry, but in this case, I can&#8217;t really help you, your requirements and time considerations are impractical.</p></blockquote>
<p>At this point, the customer had started screaming on the phone &#8211; which was a point when I had bid the customer farewell and had disconnected the phone call, as I never conduct my business in a manner when people are screaming without listening to what they are shouting.</p>
<p>Now you tell me, was I logical in my response? or maybe the customer is right? why do customers have the impression that building complex systems is a matter of simply installing the computer, slapping a few pieces of code on the machine, test it a few times &#8211; and walla, a running system is ready for production?</p>
<p>Call me old fashioned, but I believe that each development should be backed by a proper specification design, a design document, implementation design, regression testing documents and acceptance tests &#8211; if you don&#8217;t agree, I&#8217;d love to hear about it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simionovich.com/2007/11/11/the-annoyance-of-incompleteness/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
