<?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>Just another Asterisk day... &#187; Uncategorized</title>
	<atom:link href="http://blog.greenfieldtech.net/?feed=rss2&#038;cat=1" rel="self" type="application/rss+xml" />
	<link>http://blog.greenfieldtech.net</link>
	<description>Thoughts of an Open Source company CEO</description>
	<lastBuildDate>Fri, 04 Sep 2009 04:46:30 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Asterisk Projects &#8211; Pricing Models</title>
		<link>http://blog.greenfieldtech.net/?p=51</link>
		<comments>http://blog.greenfieldtech.net/?p=51#comments</comments>
		<pubDate>Sun, 19 Jul 2009 19:42:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Application programming interface]]></category>
		<category><![CDATA[Certification]]></category>
		<category><![CDATA[Consultant]]></category>
		<category><![CDATA[Consulting]]></category>
		<category><![CDATA[Digium]]></category>
		<category><![CDATA[GPL]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Real versus nominal value]]></category>
		<category><![CDATA[VoIP]]></category>

		<guid isPermaLink="false">http://blog.greenfieldtech.net/?p=51</guid>
		<description><![CDATA[...What makes a project big or small? how do you quantify the price/charge for a specific project? - and most importantly, what is the nominal value a project may carry - in order for the customer to do the project on one hand and with my company on the other hand...]]></description>
			<content:encoded><![CDATA[<p>Over the course of the past 30 months, <a title="ASTERISK PROJECTS AND DEVELOPMENT" href="http://www.greenfieldtech.net" target="_blank">my company</a> had completed over 26 different large scale <a class="zem_slink" title="Asterisk (PBX)" rel="homepage" href="http://www.asterisk.org/">Asterisk</a> based projects and over 40 small scale projects. Whenever we encounter a new project, we are always faced with the same issues: &#8220;What makes a project big or small? how do you quantify the price/charge for a specific project? &#8211; and most importantly, what is the nominal value a project may carry &#8211; in order for the customer to do the project on one hand and with my company on the other hand&#8221;.</p>
<p>At GreenfieldTech, we take high pride at the &#8220;no hidden costs&#8221; methodology. This means that when you get a price quote, you&#8217;ll get a complete price quote for everything, ranging from consulting, through development up to install and support &#8211; nothing is left out, nothing is left for chance. Initially, it makes for a slightly higher price, however, when compared to other price quotes &#8211; it is simpler to read and to the point. However, most companies don&#8217;t work in such a methodology, thus, the price quote will usually be based upon &#8220;The umbrella concept&#8221;.</p>
<h1>The manual opening umbrella</h1>
<p>The manual opening umbrella is one of the oldest methodologies in the world, and is taken from the world of construction. The idea is very simple: the customer receives a highly enticing low entry price and pays an arm and a leg for each change or addition.</p>
<p>Many solution providers who utilize this methodology do so by simply creating an overly complicated price quote, a highly detailed specification document that doesn&#8217;t say much &#8211; usually followed by the ever annoying sales person indicating that: &#8220;oh, that&#8217;s not covered in the original quote, that will be an extra&#8221;. Solution providers utilizing this methodology usually do so due to a simple fact: &#8220;They have no clear solution track or a clear view of the end goal&#8221;. The project would usually lengthen beyond the projected time scale, usually by a factor of more than 30%, ending up in losses or law suits.</p>
<p>The customer will usually try to protect itself by contractually obliging the solution provider to a specific end of project date, with specific penalties. However, my experience shows that while the penalties are fairly often utilized, these are not utilized to the fullest &#8211; mainly due to the fact that the customer wants the project completed, while the solution provider may halt the project pending a proper ruling on the the matter &#8211; in other words, the customer is in a lose-lose scenario.</p>
<h1>The spring opening umbrella</h1>
<p>This methodology is slightly faster than the previous one, where the solution provider will provide a slightly less complicated price quote &#8211; however, will include many disclaimers into the price quote &#8211; indicating various changes of pricing and high margins of price change at will. The most common practice for this methodology is to indicate that: &#8220;Actual price will be calculated according to the actual work performed&#8221;. This methodology is very much common in the &#8220;Work-Only&#8221; or &#8220;Consulting&#8221; business, where there is no set time frame. What happens many times is that the consultant would linger the initial contracted work, then, as the contracted time reaches its end &#8211; it will &#8220;spring&#8221; out a new indication that a new purchase order is required. Now, working according to the above methodology seams like a good way for the customer to protect itself, however, in many cases &#8211; it is exactly the opposite.</p>
<h1>So, what are we supposed to do?</h1>
<p>A good consultant should be able to distinguish between a &#8220;project base&#8221; job and a &#8220;hours basis&#8221; job. When choosing a consultant, verify that his history of projects is versatile, which means, that he&#8217;s able to acustom himself to your requirments &#8211; both technical and financial. Flexability is a virtue, however, if a consultant is too flexible, it is usually an indication of poor experience or complete lack of it. Most consultant who are taking a certain job &#8220;type&#8221; for the first time would lower their cost, mainly to get the job &#8211; however, they would utilize their customer to &#8220;learn the ropes&#8221;. There is nothing wrong with learning the ropes on your customer&#8217;s expense, as long as the customer is aware of it.</p>
<p>Remember, as consultant we have duty to our customers first then to our business. Sure, we are all in this for the money, after all, that&#8217;s what puts food on the table and pays the bills, however, the needs of your customer come first. If you are unable to price a project on your own, consult with other freelancers and reach out to them. Tell them your story and your dilemma, usually, someone had already encountered such an issue in the past &#8211; and will be able to render a solid and useful advice.</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/af890f72-6f62-4c83-a3fc-7ae40b4fccfc/"><img class="zemanta-pixie-img" style="border: medium none; float: right;" src="http://img.zemanta.com/reblog_e.png?x-id=af890f72-6f62-4c83-a3fc-7ae40b4fccfc" 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://blog.greenfieldtech.net/?feed=rss2&amp;p=51</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rich platform, Poor documentation</title>
		<link>http://blog.greenfieldtech.net/?p=41</link>
		<comments>http://blog.greenfieldtech.net/?p=41#comments</comments>
		<pubDate>Sun, 31 May 2009 22:12:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Adhearsion]]></category>
		<category><![CDATA[Amoocon]]></category>
		<category><![CDATA[Application programming interface]]></category>
		<category><![CDATA[GPL]]></category>
		<category><![CDATA[Jay Philipps]]></category>
		<category><![CDATA[Languages]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[OpenSER]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://blog.greenfieldtech.net/?p=41</guid>
		<description><![CDATA[I've grown fairly accustomed to the fact that most Open Source projects tend to have a poor documentation. Sure, if you look at the code itself, you'll find a plethora of code documentation, explaining how certain pieces of the code work, however, when it comes to operational documentation - that portion lacks tremendously.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve grown fairly accustomed to the fact that most Open Source projects tend to have a poor documentation. Sure, if you look at the code itself, you&#8217;ll find a plethora of code documentation, explaining how certain pieces of the code work, however, when it comes to operational documentation &#8211; that portion lacks tremendously.</p>
<p>In this case, I&#8217;d like to examine two of the Open Source projects I&#8217;ve lately been utilizing more and more, mainly Kamalio (AKA: <a class="zem_slink" title="OpenSER" rel="homepage" href="http://www.kamailio.org/">OpenSER</a>) and <a title="The AdHearsion project" href="http://adhearsion.com" target="_blank">AdHearsion</a>. These two project represet two edge cases in the Open Source world. While OpenSER is strictly a <span class="zem_slink">SIP</span> Proxy and Registrar, controlled entirely by a <span class="zem_slink">configuration file</span> and database, AdHearsion is a programmatic API based on Ruby, built to provide developers an easy traversal into the <a class="zem_slink" title="Asterisk (PBX)" rel="homepage" href="http://www.asterisk.org/">Asterisk</a> and Open Source telephony application development world.</p>
<h1>Kamalio (AKA: OpenSER)</h1>
<p>While Kamalio (AKA: OpenSER) is one the more popular SIP proxies of the world, it&#8217;s documentation lacks proper configuration examples. If you visit the Kamalio project website, you&#8217;ll find a mixture of documents, describing the various features and how to activate these. You will find some simple to following guides on how to integrate Kamalio with other projects, such as Asterisk &#8211; however &#8211; there are no easy to follow, beginner level tutorials.</p>
<p>This reminded me much of the Asterisk early days, where the dialplan language seemed like this horrific mixture of INI type directives and formats and the logic behind it illuded most people. As time progressed, many people started donating documentation and configurations examples to these, many companies started rendering <a title="Asterisk support and Consulting services" href="http://www.greenfieldtech.net/products/support" target="_blank">Asterisk support and consulting services</a> and slowly Asterisk became more and</p>
<p>more widely adopted.</p>
<p>For some strange reason, the community surrounding the Kamalio project doesn&#8217;t provide documentation that is usable by newbie users. Think about it, if I&#8217;m a newbie user, what kind of documentation am I looking for:</p>
<ul>
<li>Compile, install and execute Kamalio correctly &#8211; documentation for this is available.</li>
<li>Setup a basic system for routing calls between registered users &#8211; documentation is available.</li>
<li>Setup a basic system to route calls outbound to the PSTN &#8211; documentation missing.</li>
<li>Setup a basic system to support Radius based AAA functions &#8211; documentation missing.</li>
<li>Setup a basic system to support internal and external call routing &#8211; documentation missing.</li>
</ul>
<div class="zemanta-img zemanta-action-dragged" style="margin: 1em; display: block;">
<div>
<dl class="wp-caption alignright" style="width: 253px;">
<dt class="wp-caption-dt"><a href="http://www.amazon.com/Building-Telephony-Systems-OpenSER-step-/dp/1847193730%3FSubscriptionId%3D0G81C5DAZ03ZR9WH9X82%26tag%3Dzemanta-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D1847193730"><img title="Cover of " src="http://ecx.images-amazon.com/images/I/41-%2BmVguHqL._SL300_.jpg" alt="Cover of " width="243" height="300" /></a></dt>
<dd class="wp-caption-dd zemanta-img-attribution" style="font-size: 0.8em;"><a href="http://www.amazon.com/Building-Telephony-Systems-OpenSER-step-/dp/1847193730%3FSubscriptionId%3D0G81C5DAZ03ZR9WH9X82%26tag%3Dzemanta-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D1847193730">Cover via Amazon</a></dd>
</dl>
</div>
</div>
<p>In other words, three of the most basic tutorials are simply missing. One may argue that Radius isn&#8217;t basic and that MySQL support is more basic and provided &#8211; true. However, if I&#8217;m trying to integrate Kamalio into an existing ISP/Carrier infrastructure, it is fairly basic that I already have a RADIUS server on the network &#8211; and I&#8217;d like to use that.</p>
<p>The only piece of valid documentation that I managed to gather was a book from Packt Publishing called: &#8220;Building telephony systems with OpenSER&#8221;, and even that talks way too much about MySerWeb, a WEB based frontend to OpenSER.</p>
<h1>Adhearsion</h1>
<p>I admit it, I&#8217;m an Adhearsion newbie &#8211; well, I&#8217;m also a Ruby newbie &#8211; but that&#8217;s something completely different. Before we start talking about Adhearsion&#8217;s documentation, let&#8217;s talk about something really annoying about the Adhearsion website &#8211; the URLs are confusing!</p>
<p>If you go about and browse to <a title="Jay Philips Blog" href="http://www.adhearsion.com" target="_blank">http://www.adhearsion.com</a>, you are automatically redirected to http://jicksta.com/, which is Jay&#8217;s blog. Now, as much as I do respect Jay, this is a really weird way of getting people to visit your blog &#8211; isn&#8217;t it? Now, if you visit <a title="The AdHearsion project homepage" href="http://adhearsion.com" target="_blank">http://adhearsion.com</a>, you reach your true destination &#8211; The Adhearsion project home page. Ok, I may be nitpicking here &#8211; but I&#8217;ll write this off as a configuration error somewhere (DNS, Apache, index file, etc).</p>
<p>Now, Adhearsion is a wonderful example of how to do documentation for a project: easy to follow tutorials, a full API documentation (slightly complicated to follow, however), an installation guide that even a newbie can follow in 5 minutes &#8211; in other words, all the makings of a really usefull tool, built by people who have usability and ease of development at their priority.</p>
<p>I really hope that as time progresses, we&#8217;ll see more documentation on the Adhearsion website, especially one that is pointed at real newbies. A tutorial that I feel is in order is &#8220;Adhearsion for PHPAGI developers&#8221;. The traversal from PHP to Ruby is hard enough, so traversing from PHPAGI to Adhearsion is a complete change of though patterns and skill sets.</p>
<p>You are probably wondering why I&#8217;m talking and learning Adhearsion, after all, I did write a book about PHPAGI. Well, after meeting Jason Goecke at Amoocon, I&#8217;ve been convinced by him to give Adhearsion a try &#8211; and I&#8217;ve decided to adopt it. I&#8217;ll be launching the www.adhearsion.org.il soon (well, at least the minute I fee comfortable with Adhearsion).</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/6e2d8e84-851b-4035-841d-817400e5a9c0/"><img class="zemanta-pixie-img" style="border: medium none; float: right;" src="http://img.zemanta.com/reblog_e.png?x-id=6e2d8e84-851b-4035-841d-817400e5a9c0" 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://blog.greenfieldtech.net/?feed=rss2&amp;p=41</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
