<?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>jmpnadeau&#039;s blog</title>
	<atom:link href="http://jmpnadeau.ca/feed/" rel="self" type="application/rss+xml" />
	<link>http://jmpnadeau.ca</link>
	<description></description>
	<lastBuildDate>Fri, 13 Aug 2010 03:48:30 +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>Why nine women can&#8217;t make a baby in one month</title>
		<link>http://jmpnadeau.ca/2010/08/why-nine-women-cant-make-a-baby-in-one-month/</link>
		<comments>http://jmpnadeau.ca/2010/08/why-nine-women-cant-make-a-baby-in-one-month/#comments</comments>
		<pubDate>Fri, 13 Aug 2010 03:48:30 +0000</pubDate>
		<dc:creator>Jean-Michel</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[brooks law]]></category>
		<category><![CDATA[engineering]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[processes]]></category>
		<category><![CDATA[resources]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://jmpnadeau.ca/?p=59</guid>
		<description><![CDATA[In software engineering, when schedule slips, it can be tempting to redirect or add new resources to an important project. However, most of the time, boosting the number of resources in a project's late stage has exactly the opposed effect: it takes more time. This principle is called Brooks' law.]]></description>
			<content:encoded><![CDATA[
<p>In software engineering, when schedule slips, it can be tempting to redirect or add new resources to an important project. However, most of the time, boosting the number of resources in a project&#8217;s late stage has exactly the opposed effect: it takes more time. This principle is called <a title="Brooks's Law on Wikipedia" href="http://en.wikipedia.org/wiki/Brooks's_law" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Brooks_s_law?referer=');">Brooks&#8217; law</a>.</p>
<p>Adding more people in a project won&#8217;t necessarily make it happen faster. Software engineering is complex. First, it definitely takes some amount of time to the newcomer to understand and get used to the existing environment (existing code, development environment and most importantly, the team). Second, increasing resources also increase communication overhead. The information flow must go through all team members, in a clear and efficient way. Finally, you might also drain your existing resources&#8217; energy and time by asking them to train and to coach the others.</p>
<p>For late software development projects, sometimes finding better ways to do more with less, simplifying processes and eliminating any nuisance to the team is better than giving more.</p>

]]></content:encoded>
			<wfw:commentRss>http://jmpnadeau.ca/2010/08/why-nine-women-cant-make-a-baby-in-one-month/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>empty and ArrayObject</title>
		<link>http://jmpnadeau.ca/2010/08/empty-and-arrayobject/</link>
		<comments>http://jmpnadeau.ca/2010/08/empty-and-arrayobject/#comments</comments>
		<pubDate>Tue, 10 Aug 2010 19:23:51 +0000</pubDate>
		<dc:creator>Jean-Michel</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[arrayobject]]></category>
		<category><![CDATA[empty]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://jmpnadeau.ca/?p=56</guid>
		<description><![CDATA[Many PHP programmers make extended use of ArrayObject. Extending the ArrayObject class allows developers to create objects that behave like traditional arrays in PHP, which is very useful. A frequent problem with those objects, is that when using the empty construct on inaccessible properties, it will call the __isset overloading method. So, if your property is empty but exists, [...]]]></description>
			<content:encoded><![CDATA[
<p>Many PHP programmers make extended use of <a title="PHP: ArrayObject" href="http://php.net/manual/en/class.arrayobject.php" target="_blank" onclick="pageTracker._trackPageview('/outgoing/php.net/manual/en/class.arrayobject.php?referer=');">ArrayObject</a>. Extending the ArrayObject class allows developers to create objects that behave like traditional arrays in PHP, which is very useful. A frequent problem with those objects, is that when using the <a title="PHP: empty" href="http://php.net/manual/en/function.empty.php" target="_blank" onclick="pageTracker._trackPageview('/outgoing/php.net/manual/en/function.empty.php?referer=');">empty</a> construct on inaccessible properties, it will call the <a title="PHP: Overloading" href="http://www.php.net/manual/en/language.oop5.overloading.php#language.oop5.overloading.members" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.php.net/manual/en/language.oop5.overloading.php_language.oop5.overloading.members?referer=');">__isset</a> overloading method. So, if your property is empty but exists, empty will return true.</p>
<p>An easy workaround is assigning your property to another variable, then calling empty on your variable.</p>
<p>Know a better workaround? Feel free to add it in the comments.</p>

]]></content:encoded>
			<wfw:commentRss>http://jmpnadeau.ca/2010/08/empty-and-arrayobject/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Occam&#8217;s Razor</title>
		<link>http://jmpnadeau.ca/2010/08/occams-razor/</link>
		<comments>http://jmpnadeau.ca/2010/08/occams-razor/#comments</comments>
		<pubDate>Fri, 06 Aug 2010 15:55:27 +0000</pubDate>
		<dc:creator>Jean-Michel</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[Random thoughts]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[occam's razor]]></category>

		<guid isPermaLink="false">http://jmpnadeau.ca/?p=26</guid>
		<description><![CDATA[I was reading when I stumbled upon what they call the &#8220;Occam&#8217;s Razor&#8221;. The concept comes from and English logician, William of Ockham. Simply put, Occam&#8217;s Razor suggests that when analyzing a problem, all unnecessary details should be discarded so everyone can focus on the core of the problem. Also, options that lack simplicity should be discarded. This [...]]]></description>
			<content:encoded><![CDATA[
<p>I was reading when I stumbled upon what they call the &#8220;Occam&#8217;s Razor&#8221;.</p>
<p>The concept comes from and English logician, <a title="William of Ockham" href="http://en.wikipedia.org/wiki/William_of_Ockham" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/William_of_Ockham?referer=');">William of Ockham</a>. Simply put, Occam&#8217;s Razor suggests that when analyzing a problem, all unnecessary details should be discarded so everyone can focus on the core of the problem. Also, options that lack simplicity should be discarded. This suggests that the simpler solution might be the better one (and yes, this method has it&#8217;s limits).</p>
<p>Reading on the topic, I discovered that this method is commonly used as a part of the <a title="Occam's Razor" href="http://en.wikipedia.org/wiki/Occam's_razor#Science_and_the_scientific_method" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Occam_s_razor_Science_and_the_scientific_method?referer=');">scientific method</a> and that <a title="Avinash Kaushik And Occam's Razor" href="http://www.kaushik.net/avinash/occams-razor-what" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.kaushik.net/avinash/occams-razor-what?referer=');">Avinash Kaushik likes the concept too</a>.</p>
<p>What do you think?</p>

]]></content:encoded>
			<wfw:commentRss>http://jmpnadeau.ca/2010/08/occams-razor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Friendly URLs and User Generated Content (UGC)</title>
		<link>http://jmpnadeau.ca/2010/08/friendly-urls-and-user-generated-content-ugc/</link>
		<comments>http://jmpnadeau.ca/2010/08/friendly-urls-and-user-generated-content-ugc/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 18:49:30 +0000</pubDate>
		<dc:creator>Jean-Michel</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[friendly urls]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[search engine optimization]]></category>
		<category><![CDATA[user generated content]]></category>

		<guid isPermaLink="false">http://jmpnadeau.ca/?p=30</guid>
		<description><![CDATA[If your website allows users to create content, you will likely want to equip the content&#8217;s URL with the name or title of that content. The classic example, a blog post, would have an URL like this one: http://example.com/blog/1234/title-of-the-post As the SEO experts will explain you, having good keywords or content titles in the URL [...]]]></description>
			<content:encoded><![CDATA[
<p>If your website allows users to create content, you will likely want to equip the content&#8217;s URL with the name or title of that content. The classic example, a blog post, would have an URL like this one: <tt>http://example.com/blog/1234/title-of-the-post</tt></p>
<p>As the <a title="Search Engine Optimization" href="http://en.wikipedia.org/wiki/Search_engine_optimization" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Search_engine_optimization?referer=');">SEO</a> experts will explain you, having good keywords or content titles in the URL should increase the odds that your page is displayed to search engine users first. Also, friendly-URLs are more easy to remember, to type and they look great.</p>
<p>The most common problem with <a title="User Generated Content" href="http://en.wikipedia.org/wiki/UGC" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/UGC?referer=');">UGC</a> is data filtering and normalization. You will want all of your URLs to have URL-friendly characters only so you do not generate broken links. This block of PHP code strips all unwanted characters and builds a clean content &#8220;name&#8221; that can be used in your URLs.</p>
<pre name="code" class="php">// Strip accents
$name = str_replace(
    array('à', 'á', 'â', 'ã', 'ä', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î',
          'ï', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', 'ù', 'ú', 'û', 'ü', 'ý', 'ÿ',
          'À', 'Á', 'Â', 'Ã', 'Ä', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î',
          'Ï', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ù', 'Ú', 'Û', 'Ü', 'Ý'),
    array('a', 'a', 'a', 'a', 'a', 'c', 'e', 'e', 'e', 'e', 'i', 'i', 'i',
          'i', 'n', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u', 'y', 'y',
          'A', 'A', 'A', 'A', 'A', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I',
          'I', 'N', 'O', 'O', 'O', 'O', 'O', 'U', 'U', 'U', 'U', 'Y'),
    $name
);

// Replaces all but alphanumeric characters, underscores and dashes.
$name = preg_replace('/[^\w\d\s_-]+/', '', $name);

// Trim the white space at the start and at the end of the string.
$name = trim($name);

// Replace whitespace with dashes.
$name = str_replace(' ', '-', $name);

// Repleace double dashes with single dashes.
while(strpos($name, '--') !== false)
{
    $name = str_replace('--', '-', $name);
}

// Lowercase all characters.
$name = strtolower($name);

// URL Encode the string.
$name = urlencode($name);</pre>
<p>You think this could have been done in a better way? Feel free to add your idea in the comments.</p>

]]></content:encoded>
			<wfw:commentRss>http://jmpnadeau.ca/2010/08/friendly-urls-and-user-generated-content-ugc/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Do not confuse precision with accuracy</title>
		<link>http://jmpnadeau.ca/2010/07/do-not-confuse-precision-with-accuracy/</link>
		<comments>http://jmpnadeau.ca/2010/07/do-not-confuse-precision-with-accuracy/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 21:15:57 +0000</pubDate>
		<dc:creator>Jean-Michel</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[Random thoughts]]></category>
		<category><![CDATA[accuracy]]></category>
		<category><![CDATA[estimates]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[precision]]></category>

		<guid isPermaLink="false">http://jmpnadeau.ca/?p=21</guid>
		<description><![CDATA[It&#8217;s easy to fall in the trap. Precise numbers help others trust that you are accurate. However, precision is not accuracy. Someone can say, &#8220;Your package will arrive in 5 days, 2 hours and 15 seconds.&#8221;. That is pretty precise, but it may not be accurate. On the other side, &#8220;Your package will arrive in [...]]]></description>
			<content:encoded><![CDATA[
<p>It&#8217;s easy to fall in the trap. Precise numbers help others trust that you are accurate.</p>
<p>However, precision is not accuracy. Someone can say, &#8220;Your package will arrive in 5 days, 2 hours and 15 seconds.&#8221;. That is pretty precise, but it may not be accurate. On the other side, &#8220;Your package will arrive in 5 days.&#8221; is not very precise, but it can be accurate.</p>
<p>An accurate answer or estimate is, most of the time, more precious than a precise one.</p>

]]></content:encoded>
			<wfw:commentRss>http://jmpnadeau.ca/2010/07/do-not-confuse-precision-with-accuracy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CloudCamp Montreal</title>
		<link>http://jmpnadeau.ca/2010/06/cloudcamp_montreal/</link>
		<comments>http://jmpnadeau.ca/2010/06/cloudcamp_montreal/#comments</comments>
		<pubDate>Mon, 07 Jun 2010 21:56:10 +0000</pubDate>
		<dc:creator>Jean-Michel</dc:creator>
				<category><![CDATA[Systems administration]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[cloudcamp]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://jmpnadeau.ca/?p=13</guid>
		<description><![CDATA[Last Friday, I&#8217;ve attended the first CloudCamp event here in Montreal. Being more experienced in traditional systems and services administration, I was very intrigued about what would be the main interests and concerns of the Cloud&#8217;s early adopters. But first, to get there, we first need to agree on what is Cloud Computing. The Definition of Cloud Computing The NIST [...]]]></description>
			<content:encoded><![CDATA[
<p>Last Friday, I&#8217;ve attended the first <a title="CloudCamp Montreal" href="http://www.cloudcamp.org/montreal" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.cloudcamp.org/montreal?referer=');">CloudCamp event here in Montreal</a>. Being more experienced in traditional systems and services administration, I was very intrigued about what would be the main interests and concerns of the Cloud&#8217;s early adopters. But first, to get there, we first need to agree on what is Cloud Computing.</p>
<h3>The Definition of Cloud Computing</h3>
<p>The <a title="National Institute of Standards and Technology" href="http://csrc.nist.gov/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/csrc.nist.gov/?referer=');">NIST</a> (National Institute of Standards and Technology) came out with a very good definition (original document can be found <a title="Cloud Computing" href="http://csrc.nist.gov/groups/SNS/cloud-computing/cloud-def-v15.doc" target="_blank" onclick="pageTracker._trackPageview('/outgoing/csrc.nist.gov/groups/SNS/cloud-computing/cloud-def-v15.doc?referer=');">here</a>):</p>
<blockquote><p>&#8220;Cloud computing is a model for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction. This cloud model promotes availability [...]&#8220;</p></blockquote>
<p>Simply put, the five essential caracteristics of a Cloud are:</p>
<blockquote>
<ul>
<li>On-demand self-service;</li>
<li>Broad network access;</li>
<li>Resources pooling;</li>
<li>Rapid elasticity;</li>
<li>Measured service.</li>
</ul>
</blockquote>
<h3>Security concerns</h3>
<p>The main question business owners should ask themselves when they switch to the cloud is &#8220;how much money will I loose if this thing goes down?&#8221; (because, yes, it could). While the technologies put in place by major Cloud Computing providers is very good, switching is always a trade between flexibility and control. Before going cloud, a few questions should be asked:</p>
<ul>
<li>Will my system be secure?</li>
<li>Will my system be fast and available? (enough bandwidth for your needs?)</li>
<li>Does my system requires specific customizations the provider won&#8217;t support?</li>
</ul>
<p>In business context, this should always be viewed more from a business perspective more than a tech-trends perspective. <strong>Those risks can be calculated</strong>.</p>
<p>There are also many legal issues. Remember that your data can be stored anywhere in the World and the ability to define where you want it to be hosted is not supported by all providers. For instance, if your data is stored in the US, it is subject to the <a title="Patriot Act" href="http://en.wikipedia.org/wiki/USA_PATRIOT_Act" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/USA_PATRIOT_Act?referer=');">Patriot Act</a>.</p>
<h3>Conclusion</h3>
<p>The conversation about security was obviously the main topic of the event. Environment (power consumption, cooling, etc.), application development and management (systems, people, etc.) could have been more discussed. Hope that by next year, most of those security concerns will have been solved by robust and proven solutions so we can dive into other very interesting subjects.</p>
<p>As a side note, Nicolas Roberge posted on his blog cool <a href="http://www.ovologic.com/2010/06/04/retour-sur-le-1er-cloudcamp-montreal/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.ovologic.com/2010/06/04/retour-sur-le-1er-cloudcamp-montreal/?referer=');">pictures of the event</a>.</p>

]]></content:encoded>
			<wfw:commentRss>http://jmpnadeau.ca/2010/06/cloudcamp_montreal/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Built with</title>
		<link>http://jmpnadeau.ca/2010/05/built-with/</link>
		<comments>http://jmpnadeau.ca/2010/05/built-with/#comments</comments>
		<pubDate>Thu, 27 May 2010 02:45:12 +0000</pubDate>
		<dc:creator>Jean-Michel</dc:creator>
				<category><![CDATA[Cool stuff]]></category>

		<guid isPermaLink="false">http://jmpnadeau.ca/?p=7</guid>
		<description><![CDATA[Have you ever dreamed about a neat tool that would allow you to find out easily what technologies a given website use? I&#8217;ve stumbled upon a clean Web application that does it all. It is called Built with. That tool can tell you what HTTP server, CDN, server-side Framework or JavaScript library a website uses. [...]]]></description>
			<content:encoded><![CDATA[
<p>Have you ever dreamed about a neat tool that would allow you to find out easily what technologies a given website use?</p>
<p>I&#8217;ve stumbled upon a clean Web application that does it all. It is called <a title="Built with" href="http://builtwith.com" target="_blank" onclick="pageTracker._trackPageview('/outgoing/builtwith.com?referer=');">Built with</a>. That tool can tell you what HTTP server, CDN, server-side Framework or JavaScript library a website uses. <a title="Built with: cnn.com" href="http://builtwith.com/cnn.com" target="_blank" onclick="pageTracker._trackPageview('/outgoing/builtwith.com/cnn.com?referer=');">Try it with cnn.com</a>.</p>

]]></content:encoded>
			<wfw:commentRss>http://jmpnadeau.ca/2010/05/built-with/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What&#8217;s up?</title>
		<link>http://jmpnadeau.ca/2010/04/hello-world/</link>
		<comments>http://jmpnadeau.ca/2010/04/hello-world/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 21:09:04 +0000</pubDate>
		<dc:creator>Jean-Michel</dc:creator>
				<category><![CDATA[Other]]></category>

		<guid isPermaLink="false">http://jmpnadeau.ca/?p=1</guid>
		<description><![CDATA[If you&#8217;re here, you&#8217;re curious. That&#8217;s good. I am too. This website has been left alone for a while, because I am working on something huge. It&#8217;s called Giftiniti. Giftiniti aims at changing the way we offer and receive gifts. Go, check it out.]]></description>
			<content:encoded><![CDATA[
<p>If you&#8217;re here, you&#8217;re curious. That&#8217;s good. I am too.</p>
<p>This website has been left alone for a while, because I am working on something huge.</p>
<p>It&#8217;s called <a title="Giftiniti" href="http://www.giftiniti.com" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.giftiniti.com?referer=');">Giftiniti</a>. Giftiniti aims at changing the way we offer and receive gifts.</p>
<p>Go, check it out.</p>

]]></content:encoded>
			<wfw:commentRss>http://jmpnadeau.ca/2010/04/hello-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
