<?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>Cypris&#039; lookout &#187; Musing</title>
	<atom:link href="http://blog.nkadesign.com/category/musing/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.nkadesign.com</link>
	<description>Renaud Bompuis on the interwebs!</description>
	<lastBuildDate>Sat, 14 Jan 2012 06:30:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Programming podcasts</title>
		<link>http://blog.nkadesign.com/2011/programming-podcasts/</link>
		<comments>http://blog.nkadesign.com/2011/programming-podcasts/#comments</comments>
		<pubDate>Wed, 07 Sep 2011 03:37:34 +0000</pubDate>
		<dc:creator>Renaud Bompuis</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[Musing]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.nkadesign.com/?p=719</guid>
		<description><![CDATA[Podcasts are a great way to get educated and entertained. As a developer we are lucky to have a choice of some fine podcasts from industry leaders. If you commute, jog, travel, you can easily use that time away from the computer to get better informed and reflect about our field.]]></description>
			<content:encoded><![CDATA[<p>As a developer it&#8217;s often hard to stay current with your field. New technologies and new ways of doing programming pop up every day, it&#8217;s difficult to know if you should invest any time in learning them or if they are just passing fads.</p>

<p>Podcasts are a great way to get exposed to these new things: if you commute, jog, travel, you can easily use that time away from the computer to get better informed and reflect about our field.</p>

<p>I have a 20 minute walk between home and my office. That&#8217;s more than 3h of free time per week that I can spend thinking, listening to music or getting entertained and educated through relevant podcasts.</p>

<p>These are my preferred shows so far:</p>

<p><img src="/wp-content/uploads/2011/09/hanselminutes.jpg" alt="Hanselminutes podcast" title="Hanselminutes podcast" width="51" height="51" align="left" hspace="5" vspace="5" border="0" /> <strong><a href="http://www.hanselminutes.com/">Hanselminutes</a></strong> <a href="http://itunes.apple.com/us/podcast/hanselminutes/id117488860"><img src="/wp-content/uploads/2011/09/viewinitunes_enbws.png" alt="Subscribe with iTunes" /></a><br />
A 30 minute or so podcast about technologies, usually closely or distantly related to Microsoft development. Scott is an excellent interviewer and his <a href="http://www.hanselman.com/blog/">blog</a> is a must read too.</p>

<p><img src="/wp-content/uploads/2011/09/herdingcode.jpg" alt="Herding Code" title="Herding Code" width="51" height="51" align="left" hspace="5" vspace="5" border="0" /> <strong><a href="http://herdingcode.com/">Herding Code</a></strong> <a href="http://itunes.apple.com/podcast/herding-code/id284067914"><img src="/wp-content/uploads/2011/09/viewinitunes_enbws.png" alt="Subscribe with iTunes" /></a><br />
A 60 minute show with a bunch of well-known developers, <a href="http://odetocode.com/">K. Scott Allen</a>, <a href="http://weblogs.asp.net/kdente/">Kevin Dente</a>, <a href="http://lazycoder.com/weblog/">Scott Koon (Lazycoder)</a>, and <a href="http://weblogs.asp.net/jgalloway/">Jon Galloway</a> discussing wide-ranging topics with their guests.</p>

<p><img src="/wp-content/uploads/2011/09/dotnetrocks.jpg" alt=".Net Rocks!" title=".Net Rocks!" width="51" height="51" align="left" hspace="5" vspace="5" border="0" /><strong><a href="http://dotnetrocks.com/">.Net Rocks</a></strong> <a href="http://itunes.apple.com/podcast/.net-rocks!/id130068596"><img src="/wp-content/uploads/2011/09/viewinitunes_enbws.png" alt="Subscribe with iTunes" /></a><br />
The unavoidable 60 minute grand-father or all .Net podcasts. Funny and always informative. Also check out the related <a href="http://dnrtv.com/">DnrTV</a> for on-topic screencasts, excellent for getting started on a new technology.</p>

<p><img src="/wp-content/uploads/2011/09/polymorphic.jpg" alt="PolymorphicPodcast.com" title="PolymorphicPodcast.com" width="51" height="51" align="left" hspace="5" vspace="5" border="0" /><strong><a href="http://polymorphicpodcast.com/">The Polymorphic podcast</a></strong> <a href="http://itunes.apple.com/podcast/polymorphic-podcast/id73330909"><img src="/wp-content/uploads/2011/09/viewinitunes_enbws.png" alt="Subscribe with iTunes" /></a><br />
A nice podcast, the host, Craig Shoemaker, is a great inteviewer. Only drawback is that shows are not regularly produced.</p>

<p><img src="/wp-content/uploads/2011/09/stackexchange.jpg" alt="The Stack Exchange podcast" title="The Stack Exchange podcast podcast" width="51" height="51" align="left" hspace="5" vspace="5" border="0" /><strong><a href="http://blog.stackoverflow.com/category/podcasts/">The StackExchange podcast</a></strong> <a href="http://itunes.apple.com/us/podcast/the-stack-exchange-podcast/id279215411"><img src="/wp-content/uploads/2011/09/viewinitunes_enbws.png" alt="Subscribe with iTunes" /></a><br />
Sometimes random, mildly irritating at times (guests sound quality, audio sync between guest, ramblings about Stackoverflow&#8217;s principles) but usually both enlightenning and funny. Topics revolve around <a href="http://stackoverflow.com/">Stackoverflow</a> and the various <a href="http://stackexchange.com/sites">StackExchange</a> sites. It&#8217;s always worth listenting to <a href="http://www.joelonsoftware.com/">Joel Spolsky</a>, he tends to see clearly in an industry that often borders on the BS.</p>

<p><img src="/wp-content/uploads/2011/09/thisdeveoperslife.jpg" alt="This Developer's Life podcast" title="This Developer's Life podcast" width="51" height="51" align="left" hspace="5" vspace="5" border="0" /><strong><a href="http://www.thisdeveloperslife.com/">This Developer&#8217;s Life</a></strong> <a href="http://itunes.apple.com/us/podcast/this-developers-life/id389727545"><img src="/wp-content/uploads/2011/09/viewinitunes_enbws.png" alt="Subscribe with iTunes" /></a><br />
Last but not least, a beautifully produced podcast that covers more philosophical topics through interviews and real-life experiences. It&#8217;s not about technology, it&#8217;s about the human aspect of being a coder, and what it means to be one.</p>

<p>Whichever you choose, any of these podcasts are bound to expand your knowledge, educate and entertain you!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nkadesign.com/2011/programming-podcasts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WPF and Silverlight: it will take a while&#8230;</title>
		<link>http://blog.nkadesign.com/2008/wpf-and-silverlight-it-will-take-a-while/</link>
		<comments>http://blog.nkadesign.com/2008/wpf-and-silverlight-it-will-take-a-while/#comments</comments>
		<pubDate>Sun, 10 Feb 2008 08:45:07 +0000</pubDate>
		<dc:creator>Renaud Bompuis</dc:creator>
				<category><![CDATA[Musing]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.nkadesign.com/2008/wpf-and-silverlight-it-will-take-a-while/</guid>
		<description><![CDATA[Decoupling the User Interface from the underlying code has been one of the holy grails of application development. Layers of indirection and new patterns have been invented over time to try to separate what the user does from the back-end data. It&#8217;s been a long and difficult journey but WPF is the last attempt at [...]]]></description>
			<content:encoded><![CDATA[<p><img width="64" vspace="5" hspace="5" height="64" border="0" align="left" title="technology01.png" alt="technology01.png" src="/wp-content/uploads/technology01.png"/>Decoupling the User Interface from the underlying code has been one of the holy grails of application development.
Layers of indirection and new patterns have been invented over time to try to separate what the user does from the back-end data. It&#8217;s been a long and difficult journey but WPF is the last attempt at completely separating the user interface from the gut of an application, leaving graphic designer do what they do best and programmers do what they do best.<br />
I think this disconnect has actually hindered the adoption of WPF to a great extent.<br />
I also believe that Silverlight, while showing great promises, is going to take a long time to get off the ground.</p>

<p><img src='http://blog.nkadesign.com/wp-content/uploads/2008/02/silverlight1.png' alt='Silverlight' align="right" />Good graphic designers who work on User Interfaces are too few and far between, and large organisations will take time to get staff with a sufficient level of expertise to be useful in developing meaningful WPF/Silverlight applications.<br />
Until now, the bulk of the development effort was done by developers. Most ISV only have developers onboard.</p>

<p>As far as I can tell, it seems that main reason behind this slow adoption is that WPF/Silverlight has only been noticed by developers and they don&#8217;t know what to make with it.<br />
WPF/Silverlight are not really developer-friendly: the development infrastructure is there but we&#8217;re left with a blank canvas and nothing to drag and drop onto it.</p>

<p>There will be a great gap, probably lasting a few years, before there are enough experiments in these new user interfaces that some useful lowest common denominator can be exploited by non-designers.<br />
We&#8217;ll have to wait for tool vendors to provide the bulk of user interface blocks and for a few new patterns to appear before all the designer-challenged developers like me can make decent interfaces without requiring a professional graphic designer in their midst.<br />
In the mean time, we&#8217;ll probably have useless, but pretty, applications, some useful, but ugly ones and a lot of people scratching their head trying to couple the designers and the developers in a working relationship.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nkadesign.com/2008/wpf-and-silverlight-it-will-take-a-while/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>People, mind your dates&#8230; plz?</title>
		<link>http://blog.nkadesign.com/2007/people-mind-your-dates-plz/</link>
		<comments>http://blog.nkadesign.com/2007/people-mind-your-dates-plz/#comments</comments>
		<pubDate>Sat, 15 Dec 2007 15:34:46 +0000</pubDate>
		<dc:creator>Renaud Bompuis</dc:creator>
				<category><![CDATA[Musing]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.nkadesign.com/2007/people-mind-your-dates-plz/</guid>
		<description><![CDATA[What does 04/05/01 mean to you? Let&#8217;s make it easy: is that date in 2001 or 2004? And if I write it like 04/05/2001, is it really better? are we in April or May? And the answer is&#8230; If you are from North America and a handful other countries 04/05/01 would mean 5th of April [...]]]></description>
			<content:encoded><![CDATA[<p><img src="/wp-content/uploads/technology02.png" alt="technology02.png" title="technology02.png" align="left" width="64" height="64" hspace="5" vspace="5" border="0" />What does 04/05/01 mean to you?<br />
Let&#8217;s make it easy: is that date in 2001 or 2004?<br />
And if I write it like 04/05/2001, is it really better? are we in April or May?<br />
And the answer is&#8230;</p>

<p><img src='/wp-content/uploads/2007/12/chcal.gif' alt='Chinese Calendar' style="float:right;margin-left:10px;margin-bottom:5px;" /> If you are from North America and a handful other countries 04/05/01 would mean 5th of April 2001.<br />
If you&#8217;re in Asia or some eastern countries, if could be 1st of May 2004.<br />
For the rest of the world, it would look like 4th of May 2001.</p>

<p>We cannot ignore any longer the importance of writing dates in a format that is understandable by everyone.<br />
Still too often, <a href="http://www.dnrtv.com/default.aspx?showNum=13">web sites</a> -even big <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=18b1d59d-f4d8-4213-8d17-2f6dde7d7aac&#038;DisplayLang=en">companies</a>- with a global audience state dates in a format that is probably obvious where they live but not consistently so to everyone else.</p>

<p>Developers are sometimes guilty of this sin, as can be seen in the format chosen to <a href="http://msdn2.microsoft.com/en-us/library/bb221200.aspx">specify dates in Microsoft Access SQL</a>, which requires that hard-coded dates be formatted in the US rather than the more neutral <a href="http://en.wikipedia.org/wiki/ISO_8601">ISO8601</a> format.<br />
I wonder how many bugs that little egocentric feature caused in business applications that where <a href="http://www.vbforums.com/showthread.php?t=297258">developed by foreign coders</a>&#8230;<br />
I know it also happened to me at least once&#8230;</p>

<p><img src='/wp-content/uploads/2007/12/russcal.gif' alt='Russian Calendar' style='float:left;margin-right:10px;margin-bottom:5px;' />The worst thing is that when you write 04/05/06, you may very well have thought about the rest of the world and meant DD/MM/YY; alas, unless the context grants us some clarification or the actual date is unequivocal, there is sometimes no way for a lot of us to know for sure what you really meant.</p>

<p>We should ban the use of the short date format in communications that may be read by more than 3 people, in today&#8217;s world, that&#8217;s pretty much all communication.</p>

<p>Instead a simple format such as 05MAY2006 is clear an unequivocal: it&#8217;s easy to read and understand, regardless of where you live.<br />
You&#8217;re free to add spaces, dashes, dots, comas or slashes to it if you want, you can use 2006MAY05 if you prefer or even MAY05,2006, whatever pleases you: it still remains readable.</p>

<p>The rule is simple:<em>write the year in full and never write the month as a two-digit number, that&#8217;s reserved for the day</em></p>

<p>The point is that you, me and the rest of the world can read it and understand exactly what was meant; it&#8217;s an easy problem to solve.<br />
Surely that means something to you?</p>

<h3>References</h3>

<ul>
<li><a href="http://en.wikipedia.org/wiki/Date_format">http://en.wikipedia.org/wiki/Date_format</a></li>
<li><a href="http://www.moserware.com/2008/02/does-your-code-pass-turkey-test.html">Does you code pass the Turkey test?</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.nkadesign.com/2007/people-mind-your-dates-plz/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Thank you spammers&#8230;</title>
		<link>http://blog.nkadesign.com/2007/thank-you-spammers/</link>
		<comments>http://blog.nkadesign.com/2007/thank-you-spammers/#comments</comments>
		<pubDate>Thu, 31 May 2007 06:06:48 +0000</pubDate>
		<dc:creator>Renaud Bompuis</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[Musing]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://blog.nkadesign.com/2007/thank-you-spammers/</guid>
		<description><![CDATA[I&#8217;ve been tired of spam on my websites. The few hundreds messages spammers leave everyday are a bit of a nuisance. Now though, I&#8217;ve decided to make them work harder to get their messages ignored. Last week, reCAPTCHA came online. It&#8217;s an effort inspired by none other than Luis Von Ahn, so you know it&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p><img src="/wp-content/uploads/security01.png" alt="security01.png" title="security01.png" align="left" width="64" height="64" hspace="5" vspace="5" border="0" />I&#8217;ve been tired of spam on my websites. The few hundreds messages spammers leave everyday are a bit of a nuisance.
Now though, I&#8217;ve decided to make them work harder to get their messages ignored.<br />
Last week, <a href="http://recaptcha.net/"><em>reCAPTCHA</em></a> came online. It&#8217;s an effort inspired by none other than <a href="http://en.wikipedia.org/wiki/Luis_von_Ahn">Luis Von Ahn</a>, so you know it&#8217;s good.</p>

<p><a title="Professor Luis Von Ahn   [Photo by Robin Rombach, Post-Gazette]" style="border:0;" href="/wp-content/uploads/images/LuisVonAhn.jpg" rel="lightbox"><img title="Professor Luis Von Ahn" src="/wp-content/uploads/images/LuisVonAhnSM.jpg" style="float:right;margin-left:10px;margin-bottom:5px;" /></a>If you don&#8217;t know him then he&#8217;s the mastermind being similar projects that centre around a simple premise: make humans do the work that computers can&#8217;t do.<br />
One of his on-going projects is the <em><a href="http://www.espgame.org/">ESP Game</a></em> where 2 online players are trying to come up with a common description of a random picture. It&#8217;s apparently an addictive game and it helps solve a problem that computers are terrible at today: describing accurately the content of photographs.<br />
<a href="http://images.google.com/imagelabeler/">Google</a> is using his research to make image search more useful by returning content more relevant to your queries.</p>

<p>So, what&#8217;s the relevance with the <a href="http://en.wikipedia.org/wiki/Captcha">CAPCTHA</a>?<br />
CAPTCHASs were invented to resolve a simple problem: stopping computers from automatically filling-in web forms to create accounts on popular free services that they would use to send spam from.<br />
They are a visual version of the <a href="http://en.wikipedia.org/wiki/Turing_test">Turing Test</a>, elaborated by the WWII genius cryptanalyst <a href="http://en.wikipedia.org/wiki/Alan_Turing">Alan Turing</a> as a way to test how far machines could behave like humans: not knowing who she was interacting with, if a person could not tell the difference between a human and a machine, then the machine passes the test. It&#8217;s a measure of the success -or lack of-  of artificial intelligence and the idea spawned many others, including CAPTCHAs.</p>

<p><img src="/wp-content/uploads/images/captcha-example.gif" width="116" height="57" style="float:left;margin-right:10px;margin-bottom:5px" />CAPTCHAs simply require that small problem be solved before a web form can be submitted. Typical problems include blurry and distorted images of text or numbers that would be very hard for computers alone to decipher, but that our brain has no problem solving.<br />
There are an estimated 60 millions of CAPTCHAs being solved by human beings every single day. That&#8217;s a huge amount of lost brain power as nothing really useful comes out of it (apart from preventing spam, of course).</p>

<p><img src="/wp-content/uploads/images/recpatcha_logo2_nobottom.gif" style="float:right;margin-left:10px;margin-bottom:5px" /><a href="http://recaptcha.net/"><em>reCAPTCHA</em></a>&#8216;s genius idea is to use that brain power to solve a problem that we would actually like computers to solve: digitizing books.<br />
There are millions of books that were printed in the days before computers became ubiquitous, and there exist no electronic version of them except scanned images of their pages.<br />
<em>Optical Character Recognition</em> software is getting very good, but when the scan is of poor quality or the book is old, many words cannot be automatically recognised.<br />
Humans on the other hand are quite good at reading words, even if they are badly distorted and barely recognisable.<br />
Instead of making up a distorted image that you would have to recognise, reCaptcha simply presents you with 2 words: one it knows and one it doesn&#8217;t and you&#8217;re asked to guess both.<br />
Every unknown word is checked multiple times by different people and you thus end-up with a very accurate interpretation of the word that can be fed back into the electronic version of the book being scanned.</p>

<p>CAPTCHA do not entirely solve the problem of spamming, but they are an financial issue to spammers: automated electronic system cannot solve good CAPTCHAs, so some <a href="http://petmail.lothar.com/design.html#auto34">spammer rely on low-paid humans</a> to do the dirty work for them.</p>

<p>It&#8217;s fine by me: poor people are getting paid to do something useful (help digitise books) and spammers are wasting their money doing so. In my case, they lose even more, because I use moderation to read comments before they are visible and <a href="http://akismet.com/">Askimet</a> to detect spam, which means that however hard they try, their spam never gets anywhere anyway.</p>

<p>In the fight against spammers, it makes me happy to know I&#8217;m costing them <em>something</em> for a change&#8230;</p>

<h3>References:</h3>

<ul>
<li>Breaking visual CAPTCHA<br />
<a href="http://www.cs.sfu.ca/~mori/research/gimpy/">http://www.cs.sfu.ca/~mori/research/gimpy/</a></li>
<li>Vulnerabilities of some CAPTCHA implementations (<a href="http://groups.google.com/group/recaptcha/browse_frm/thread/fd2dc5d846b0530d?">reCAPTCHA isn&#8217;t</a>)<br />
<a href="http://www.puremango.co.uk/cm_breaking_captcha_115.php">http://www.puremango.co.uk/cm_breaking_captcha_115.php</a></li>
<li>Luis Von Ahn&#8217;s website<br />
<a href="http://www.cs.cmu.edu/~biglou/">http://www.cs.cmu.edu/~biglou/</a></li>
<li>Lecture on Human computation by Luis von Ahn (technical, but very inspiring)<br />
<a href="http://video.google.com/videoplay?docid=-8246463980976635143">http://video.google.com/videoplay?docid=-8246463980976635143</a></li>
<li>The Internet Archive, benefiting from solving ReCAPTCHA, also a incommensurable source of free books<br />
<a href="http://www.archive.org/details/texts">http://www.archive.org/details/texts</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.nkadesign.com/2007/thank-you-spammers/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Chosing a development platform</title>
		<link>http://blog.nkadesign.com/2006/chosing-a-development-platform/</link>
		<comments>http://blog.nkadesign.com/2006/chosing-a-development-platform/#comments</comments>
		<pubDate>Sun, 01 Oct 2006 08:39:54 +0000</pubDate>
		<dc:creator>Renaud Bompuis</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Musing]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://blog.nkadesign.com/?p=33</guid>
		<description><![CDATA[LAMP, Zend, .Net, Struts, Ruby on Rails, Catalyst, and a hundred other development platforms all compete for you attention, all pretending to be the only thing you&#8217;ll ever need to satisfy your every needs in web or UI development. Making a decision is really hard: you want the best for your new project and want [...]]]></description>
			<content:encoded><![CDATA[<p><img src="/wp-content/uploads/technology02.png" alt="technology02.png" title="technology02.png" align="left" width="64" height="64" hspace="5" vspace="5" border="0" /><a href="http://en.wikipedia.org/wiki/LAMP_%28software_bundle%29">LAMP</a>, Zend, .Net, <a href="http://struts.apache.org/">Struts</a>, <a href="http://www.rubyonrails.org/">Ruby on Rails</a>, <a href="http://www.catalystframework.org/">Catalyst</a>, and a hundred other development platforms all compete for you attention, all pretending to be the only thing you&#8217;ll ever need to satisfy your every needs in web or UI development.<br />
Making a decision is really hard: you want the best for your new project and want to make the right decision. In most cases, that means not cursing yourself down the line for a choice that didn&#8217;t turn out as expected.</p>

<p>When you start looking into all these platforms you can be blown away by the ease of implementation and elegance of some; your head spins at all the features and claims being made and it becomes hard to achieve a rational decision.</p>

<p>I&#8217;ve been faced with that very issue recently and it sucks. Actually, the time spent investigating all these possibilities is really what is being sucked away.<br />
Of course, learning about new technologies is not just fun, it&#8217;s also essential: you have to keep on top of what&#8217;s new and decide if you want to join in on the fun or just stay comfortably where you are.</p>

<p>I also realized that you need to get away from the coolness factor of each these much touted technologies and actually <em>try</em> to be objective.<br />
During my investigation, I tried to decide what were the really important factors that I should consider to make a rational choice.</p>

<p>I came up with the list of the following 10 questions that I think everyone should ask themselves when choosing a platform for an important project.</p>

<h3>1- Is the platform wide enough?</h3>

<p>New technologies that can show amazing productivity get all the buzz. After all, that&#8217;s what we developer want: enough with the nuts &amp; bolts! Give us a toolbox with all new shinny power tools!
The problem is that often these technologies are impressive, but looking beyond the sample projects into what actual users get confronted to, you start noticing discussion threads that should obviously signal that the platform is not wide enough.<br />
Choosing a technology that hasn&#8217;t achieved its goals can be a huge problem down the line: you implement 80% of your project in record time, only to realise that the platform you chose doesn&#8217;t support proper cross-browser detection, or that its implementation of security is way too lax, or that it only support XML for data storage and now you actually need a real database for performance reasons&#8230;<br />
In those cases, you can of course develop those areas yourself and contribute to the project, but doing so supposes that you planed it all along and you factored that in your schedule, both in time and in cost.</p>

<h3>2- Is it popular?</h3>

<p>In other words: are other professional people actually using that platform in real life?
I&#8217;m not talking about Joe Developer using it for his local community church website. I&#8217;m talking about businesses or large organisations actually using that software platform successfully.<br />
If all you need is a simple 3 page website, then professional popularity amongst the Top 500 business companies is probably not that important. On the other hand, if you plan to build a large project, or you know that your project could grow large in the future, then you probably want to ensure that others have taken it there before you.</p>

<h3>3- Is it mature?</h3>

<p>Has the platform existed for long enough that it went through enough abuse to withstand almost anything you can throw at it?<br />
A technology that is only a couple year old may be too young to have evolved to the point where it actually can solve most common and not-so-common problems. Technology evolves through iterations: each one is a good long hard look at what didn&#8217;t work and tries to fix, improve and extend.<br />
A young technology may be more cutting-edge and exciting, but when you need to commit to it for a big project, its age may quickly come as an issue; its shinny surface may blind you to the black holes waiting below&#8230;</p>

<h3>4- Are local developers available?</h3>

<p>Always think about the future. When you&#8217;re gone from the project, who is going to look after it?
Getting a web project entirely in <a href="href=&quot;http://www.rebol.com/">Rebol</a> may be cool and fun, but how many people in your city actually use that thing anyway?<br />
Aren&#8217;t you creating a liability if you&#8217;re dead-set on choosing a platform that cannot be maintained?</p>

<h3>5- Is it scalable?</h3>

<p>Most projects start small but dream of ending-up big.<br />
It&#8217;s usually fine at the beginning when the number of users and visitors is manageable, but what happens when you start to be successful?<br />
After all, that&#8217;s why we craft our projects: we want them to succeed, we want the world to see them. When the world starts coming though, will the terrific platform we&#8217;ve chosen break at the seams?<br />
How much overhead does the platform create? It is flexible in its database support? Is there a way to implement clustering or persisting sessions accross multiple servers?<br />
What&#8217;s the cost in memory and CPU resources? How many simultaneous connections can you get?   What are the bottlenecks? What do you need to do to compensate for them? How much would it cost?</p>

<h3>6- Do you have control?</h3>

<p>Some frameworks work hard for you and can make you really productive. Sometime though, they try too hard and hide too much from you.<br />
When a feature doesn&#8217;t exactly work the way you want you have to dig deep into the entrails of the beast to make sense of it and change its behaviour.<br />
A platform that was all nice and pretty can get very dirty and complex inside, making it difficult to adapt to your needs.<br />
A platform should do most of the hard work but still allow you to redefine its default behaviour without much hassle. It should be built with extensibility in mind, making easy thing easy and difficult things possible.<br />
A case in point are <a href="http://en.wikipedia.org/wiki/Fourth-generation_programming_language">4G</a> development platforms: they usually have a fairly narrow field of expertise and tend to use graphics and nice simple paradigms to quickly build complex tasks but when you are faced with a specific issue that hasn&#8217;t been solved by the platform, you often have to resort to ugly hacks to get around their limitations.</p>

<h3>7- Does it satisfies the essential constraints for your project?</h3>

<p>When being blinded by something cool, we often become skewed in our judgement and guilty of lowering the importance of constraints that are actually critical for our project.<br />
In all honesty, I really wanted to use Ruby on Rail, and I liked the principle and elegance of it so much that I came to seriously consider it, that is, until I came to my senses and looked into something that is critical to my project: support for complex Asian languages.<br />
Ruby is being developed in Japan, so you could think that it should be able to handle complex ideographic characters well.<br />
Turns out that the Japanese are not terribly fond of Unicode and, unless I&#8217;m mistaken, prefer to use <a href="http://en.wikipedia.org/wiki/Code_page">Code Pages</a> instead. The result is that Ruby doesn&#8217;t have great support for Unicode, and that sucks.<br />
That&#8217;s why Unicode was created: to attempt to simplify all this patchwork of implementations that are not compatible with each other.<br />
Because I needed to be able to handle English, Mandarin, Cantonese and probably any other language out there, Unicode is the only viable option to abstract the issue of language enough that it becomes manageable.<br />
So because of Ruby&#8217;s poor support for Unicode, it would not be rational to use Ruby on Rails for my particular project as it would probably greatly increase the complexity and hacks necessary to manage complex Asian languages in a unified and simple way.</p>

<h3>8- Documentation?</h3>

<p>All framework have a more or less steep learning curve: you need to think differently to adapt to the particular framework&#8217;s frame of mind, so to speak.<br />
Make sure that the framework has a lively community, that it has more documentation than you can swallow and that documentation is well organised.<br />
Make sure also that there are samples, tutorials, webcasts, videos or whatever that cover the principle aspects of it.<br />
A beautiful framework no-one talks about means that no-one will answer when you have a question. A beautiful framework without documentation is useless. A beautiful framework with lots of disorganised docs means that you&#8217;re going to waste a lot of time experimenting instead of building your project.</p>

<h3>9- Support?</h3>

<p>Here I mean support in the wide sense of the word: who is behind the framework. Are they likely to stay in business long after your project has been completed?<br />
Are they commercial or Open Source? In either case there are issues for and against: a commercial venture backed by a small company may falter and disappear overnight. Similarly, an exciting open source project managed by only 2 people can suffer the same fate when they decide to move on. 
Support also includes what help is available to you when you encounter issues. Is there any guarantee that you could have your important technical questions answered?<br />
If you encounter a large issue, is there someone to help you?<br />
I would contend that the best and most serious projects should have professional help available: you can always fall back on paying someone to help you through, whether it&#8217;s the original developers, a paid-for support hotline or a third-party specialist, it&#8217;s important that you know you can get your answers when you&#8217;re stuck.<br />
Developing for an important project without safety net is dangerous: you can waste a lot of time and effort, endangering the very project you are undertaking, if you stumble on a problem you cannot solve yourself.<br />
Large frameworks like .Net or big Open Source projects usually have enough users and support groups and specialists that it&#8217;s likely any question you may have has already been answered somewhere or that you can pay someone to help you out when you need it most.</p>

<h3>10- What do you know best?</h3>

<p>Every framework is based around a particular data-management model. Every framework is built with a particular programming language in mind. Every framework demands that you learn something new.
How comfortable are you with the requirements? how long is it going to take you to start to get really productive?<br />
Like their real-world counterpart, it can take very little time to learn a new language&#8217;s words and syntax but it takes years to become proficient in it. A framework adds another layer of abstraction that you will need to get experienced at.<br />
If you need to both learn a new language and a new framework, chances are that you are at best months away from being able to churn code without having to look into the documentation every 5 minutes.<br />
Learning new languages and concepts is necessary, but again, if you chose that route you must be sure that your project has that learning curve built-in, otherwise you&#8217;re going to move at the pace of a turtle when in fact you chose that particular framework because you though you would be more productive and faster than a sparrow.<br />
If you chose a new framework, make sure that you already possess most of the knowledge it requires: in my particular instance, I chose .Net and C# because I have already worked in that framework and I know it can tackle the project without me having to waste too much time on learning the platform rather than implementing the project.</p>

<p>We all should seize any opportunity to learn something new. Learning is often more exciting than doing the same old thing over and over again and it&#8217;s a necessary part of staying in business. Curiosity is an excellent quality that must be nurtured and indulged.<br />
The issue is <em>when</em> to do it.</p>

<p>Choosing a new development framework is not easy. The best way to tackle the problem is to pose it as a <em>risk analysis</em> study.</p>

<p>The framework you chose should simply be the one that poses the least risk to you succeeding your project.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nkadesign.com/2006/chosing-a-development-platform/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Importance of Conditions of Sales</title>
		<link>http://blog.nkadesign.com/2006/the-importance-of-conditions-of-sales/</link>
		<comments>http://blog.nkadesign.com/2006/the-importance-of-conditions-of-sales/#comments</comments>
		<pubDate>Fri, 02 Jun 2006 23:00:59 +0000</pubDate>
		<dc:creator>Renaud Bompuis</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Musing]]></category>

		<guid isPermaLink="false">http://blog.nkadesign.com/?p=26</guid>
		<description><![CDATA[<img src="/wp-content/uploads/money01.png" alt="Business" title="Business" align="left" width="64" height="64" hspace="5" vspace="5" border="0" />In a past life, working as a project manager for a manufacturer of railway equipment, I had to deal with detailed specifications and conditions of contract that would be big thick documents of hundred of pages each.]]></description>
			<content:encoded><![CDATA[<p><img src="/wp-content/uploads/money01.png" alt="Business" title="Business" align="left" width="64" height="64" hspace="5" vspace="5" border="0" />
In a past life, working as a project manager for a manufacturer of railway equipment, I had to deal with detailed specifications and conditions of contract that would be big thick documents of hundred of pages each.
<span id="more-26"></span></p>

<p>I used to love/hate these. I would hate them when they were clearly biased in the favour of the customer (for these kind of large multi-million dollar contracts, the customer imposes his rules), and I would love them -or at least appreciate them- when they were fair and balanced as they would clarify every party&#8217;s duties and responsibilities.<br />
After leaving that world and starting my own IT business I wanted the relationship with my customers to be as non-threatening and amicable as possible.</p>

<p>I decided -stupidly- not to have stringent legal documents defining the terms of the sales. What I would do instead was spend time making sure that the customer understood everything by explaining at length what they were getting and ensuring that they were no misunderstanding. In my written offers, I would painstakingly describe the technical part of their project and clearly mention what they were getting, when and at what cost.<br />
My rationale was not to scare customers away and instil trust by being verbose and friendly.</p>

<p>Well, that worked for a little while until a particular customer ordered a server as part of a larger web-site project.<br />
Once she confirmed her order to me I promptly ordered the hardware from Dell and paid for it in advance (their requirement for processing the order). A few days later, she phones and calls the whole project off, a project we&#8217;ve been spending time on for nearly 2 months.<br />
She just happened to realise that she wouldn&#8217;t have time to build the content for it.</p>

<p>Well, that&#8217;s where not having stringent sales conditions bit me in the arse. When I told her I already ordered the hardware and couldn&#8217;t refund her until I got my own refund from Dell she started to spin her own fantasies and self-indulged delusions and started to treat me like a common criminal.
She became a complete lunatic and I really didn&#8217;t know how to handle her any longer. I even gave her copies of my correspondence with Dell, bank account statements to show that the server was paid for&#8230;<br />
In the end, I tried to explain where her assumptions were wrong and told her she would get her refund at the latest on a certain date, based on what Dell told me would be the longest waiting period.
Turned out that it took 6 weeks to get my refund, just in time for hers.</p>

<p>The morale of this story is that:</p>

<ul>
<li>you shouldn&#8217;t be naively stupid and think you can base your relationship with a client on trust only.</li>
<li>you should have conditions of sales accessible on your website and refer to them in all your correspondence with your clients.  </li>
<li>you shouldn&#8217;t work with people who can have a propensity for confabulation. That particular customer was a provider of dubious alternative medicines and was clearly a lost cause to reason. My first instinct and moral judgment of not working for her was right and I should have listened to it instead of just thinking about the much-needed cash it could get me&#8230;</li>
</ul>

<p>&#8230;which bring me to the last lesson: don&#8217;t sell your ideals for money, however bad you need it.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nkadesign.com/2006/the-importance-of-conditions-of-sales/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>You Aren&#8217;t Gonna Need It</title>
		<link>http://blog.nkadesign.com/2006/you-arent-gonna-need-it/</link>
		<comments>http://blog.nkadesign.com/2006/you-arent-gonna-need-it/#comments</comments>
		<pubDate>Thu, 01 Jun 2006 01:00:03 +0000</pubDate>
		<dc:creator>Renaud Bompuis</dc:creator>
				<category><![CDATA[Musing]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.nkadesign.com/?p=14</guid>
		<description><![CDATA[<img src="/wp-content/uploads/technology02.png" alt="technology02.png" title="technology02.png" align="left" width="64" height="64" hspace="5" vspace="5" border="0" />Refactoring code is a necessary thing. Unless you work in some very specific environment where casual refactoring is not allowed (like in some safety-critical applications where the most minute change has to be pondered upon by teams and committees for weeks), you cannot code perfectly on the first shot.
More often, you end-up reviewing code and making it clearer, merging parts that are too similar, removing what turned out not to be useful, cleaning up the names, moving things around, etc... there are dozen of refactoring cases that usually help <a href="http://www.codinghorror.com/blog/archives/000589.html" target="_blank">remove the stink out of it</a>.]]></description>
			<content:encoded><![CDATA[<p><img src="/wp-content/uploads/technology02.png" alt="technology02.png" title="technology02.png" align="left" width="64" height="64" hspace="5" vspace="5" border="0" />
Refactoring code is a necessary thing. Unless you work in some very specific environment where casual refactoring is not allowed (like in some safety-critical applications where the most minute change has to be pondered upon by teams and committees for weeks), you cannot code perfectly on the first shot.<br />
More often, you end-up reviewing code and making it clearer, merging parts that are too similar, removing what turned out not to be useful, cleaning up the names, moving things around, etc&#8230; there are dozen of refactoring cases that usually help <a href="http://www.codinghorror.com/blog/archives/000589.html">remove the stink out of it</a>.
<span id="more-14"></span></p>

<p>One self-inflicting problem I&#8217;ve often been confronted to is <em>over-engineering</em>: I tend to <em>over-think</em>, <em>over-design</em> and <em>over-anticipate</em>.<br />
Sometimes it&#8217;s good to just spend time trying to make your code more modular and as future-proof as you can, but often, it leads to code that has no real use <em>right-now</em>, and that ends up having to be modified because when you need it, it&#8217;s not in the form you&#8217;ve implemented it originally.<br />
This is an <em>Extreme Programming</em> practice aptly named <a href="http://xp.c2.com/YouArentGonnaNeedIt.html">You Aren&#8217;t Gonna Need It</a>.</p>

<p>A classic example of <a href="http://xp.c2.com/YouArentGonnaNeedIt.html">YagNi</a> that I am paying dearly is a large application I&#8217;m working on at the moment (at least large from the perspective a single developer).<br />
It&#8217;s a fairly complex database application with an equally demanding winform GUI layer in C# on top.<br />
I built the GUI in a very modular fashion: each bit of information that could be grouped has its own <a href="http://msdn2.microsoft.com/en-us/library/system.windows.forms.usercontrol.aspx">User Control</a>, sealing its particularities.<br />
Then each of these controls is used in panels that embody another layer of functionality.<br />
Each panel is then loaded as needed into a form that display the panels on demand.<br />
The issue is that I now have to make major changes to the application and there are too many layers in these controls, making code hard to change.<br />
I had built it this way for re-use, thinking that it could be useful to have independent specialized controls, say for entering addresses, or customer details, etc.</p>

<p>Well, each of these controls took me a lot of time to craft, trying to make them as independent upon my particular implementation as I could. It turns out though that I&#8217;ve used each control no more than once -maybe twice for a couple- in the whole of the application, and I now realize that it&#8217;s unlikely that I would get another job that would require the exact same user-interface broken down the exact same way.<br />
So my uber-GUI controls are mostly a waste of time and complexity.</p>

<p>I should have simply created the forms directly, using <a href="http://www.devx.com/dotnet/Article/22603">partial classes</a> (a new .Net 2 feature) to separate each logical part into something manageable.<br />
My application would have been faster to develop and faster to run, with a lot less of unnecessary layers of abstraction.</p>

<p>I&#8217;m having a hard time with that, but I&#8217;m getting better, hopefully&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nkadesign.com/2006/you-arent-gonna-need-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>All sites won&#8217;t work with IE7</title>
		<link>http://blog.nkadesign.com/2006/ie7-wont-work-with-all-sites/</link>
		<comments>http://blog.nkadesign.com/2006/ie7-wont-work-with-all-sites/#comments</comments>
		<pubDate>Wed, 31 May 2006 01:00:42 +0000</pubDate>
		<dc:creator>Renaud Bompuis</dc:creator>
				<category><![CDATA[Musing]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://blog.nkadesign.com/?p=12</guid>
		<description><![CDATA[<img src="/wp-content/uploads/technology01.png" alt="technology01.png" title="technology01.png" align="left" width="64" height="64" hspace="5" vspace="5" border="0" />I installed a <a href="http://www.microsoft.com/windows/ie/" target="_blank">beta of IE7</a> last week and was quite pleased at the new interface and tabbed browsing, which has been available to <a href="http://www.opera.com/" target="_blank">Opera</a> and <a href="http://www.mozilla.org/"  target="_blank">Mozilla</a> used and many other browsers for years.
However, looking good and being slick and more standard-compliant hasn't been enough to keep it on my machines.]]></description>
			<content:encoded><![CDATA[<p><img src="/wp-content/uploads/technology01.png" alt="technology01.png" title="technology01.png" align="left" width="64" height="64" hspace="5" vspace="5" border="0" />I installed a <a href="http://www.microsoft.com/windows/ie/" target="_blank">beta of IE7</a> last week and was quite pleased at the new interface and tabbed browsing, which has been available to <a href="http://www.opera.com/" target="_blank">Opera</a> and <a href="http://www.mozilla.org/"  target="_blank">Mozilla</a> used and many other browsers for years.<br />
However, looking good and being slick and more standard-compliant hasn&#8217;t been enough to keep it on my machines.
<span id="more-12"></span></p>

<p>The main issue is that IE7 is now yet-another browser that web designers have to test and include support for.<br />
It may not be a huge deal for most sites, but some do rely on specific browser versions. In my case the problem arose when I tried to connect to my company&#8217;s online bank account. For security reasons (?!) it only supports IE6, not even Firefox so it&#8217;s one of the few sites that requires Internet Explorer.
Problem is that IE7 replaces IE6 entirely, with the unfortunate result that I now can&#8217;t connect to my bank accounts (company accounts only, the portal for personal accounts supports Firefox).<br />
So I&#8217;ve had to remove that beta.</p>

<p>That is certainly a specific issue, but it will be interesting to see how fast websites that rely on specific versions of browsers, be it for security reasons (because they want to simplify their development to a manageable level and support well a single browser) or because they rely heavily on CSS and JavaScript, how fast these websites will adapt.<br />
Early adopters of Vista will now doubt have a few -temporary I&#8217;m sure- surprises.</p>

<p>I think Microsoft made a big mistake when they decided to stop development of IE6 and not incorporate any more improvements into it.<br />
Maybe the company was under too much legal spotlight at the time and leaving the scene for a while was a move to appease those who were concerned about its monopoly on internet browsing.<br />
The unfortunate side-effect was that the browser millions relied-on had still some important flaws. Its User Interface and usability has now been overtaken by Firefox and Opera which benefited from the development interrruption of IE.</p>

<p>I am not sure if IE can become better than Firefox in terms of extensibility: Firefox sports thousands of extensions and themes to customize it. I&#8217;ve got quite a few useful ones that are certainly particular to my way of browsing the net. How is MS going to integrate that into IE7?<br />
What made Firefox popular was its focus on carrying-on where IE6 had left and offering a better browsing environment that could be customized with all the widgets and utilities that you wanted.<br />
If MS doesn&#8217;t incorporate the same level of extensibility, it will carry-on losing a big share of its browser market to Firefox, at least in the personal user world.</p>

<p>But Maybe Microsoft doesn&#8217;t care too much about browser wars any longer.<br />
When you approach perfect standard compliance, which browser you use to render the content isn&#8217;t important any longer. Since MS failed in the past to tie revenues to the browser itself (remember the ill-fated channels that would bring commercial content to your browsers back in the days of IE4? No?, well I&#8217;m not surprised&#8230;) the incentive for building a better browser is elsewhere.</p>

<p>One of the reasons that may be motivating MS is that a lot of its other products are increasingly dependent on the Internet. In a corporate environment, almost all business-oriented services are accessed through a web interface of some kind.<br />
Microsoft must ensure that it retains the monopoly on these implementations to keep control of the complete user experience.<br />
If MS wasn&#8217;t pursuing its IE development, more companies would start to look at alternatives, not only to IE, but also to larger expensive products like Exchange: once you accept that IE isn&#8217;t needed to offer rich client-side user interfaces, and that you don&#8217;t need Exchange either, you&#8217;re endangering Microsoft hold on the corporate market somewhat.<br />
So going further and ensuring tight integration of its products together is paramount.</p>

<p>IE7 is also terribly important to MS on the home user-front: making sure that users use the same browser both at home and at work ensures that they are more likely to stay with what they know rather than accept using a new browser, that may require retraining for some.<br />
That reason may seem feeble, but it ensures that the vast majority of people is not exposed to other alternative technologies.<br />
Without IE7, that risk becomes real as more and more savvy users and corporations are turning to Firefox for its increased security (or at least for the fact that it is a lesser target to malware).</p>

<p>That factor alone may obviously not be sufficient to force a company to move away from MS, but it may be sufficient to poison the mind by making people to consider alternatives they would otherwise be somewhat reluctant to contemplate by fear of the unknown; a fear that MS has not shied away from exacerbing through its <a href="http://lxer.com/module/newswire/view/57261/index.html" target="_blank">FUD campaigns</a>.</p>

<p>Of course, all this requires a few grains of salt, I may be completely wrong&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nkadesign.com/2006/ie7-wont-work-with-all-sites/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

