<?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>Cleanish Code</title>
	<atom:link href="http://www.illotus.com/cleanishcode/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.illotus.com/cleanishcode</link>
	<description>Programming, usability etc.</description>
	<lastBuildDate>Thu, 06 May 2010 12:03:34 +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>Learning Programming Languages</title>
		<link>http://www.illotus.com/cleanishcode/2010/05/learning-programming-languages/</link>
		<comments>http://www.illotus.com/cleanishcode/2010/05/learning-programming-languages/#comments</comments>
		<pubDate>Thu, 06 May 2010 12:03:34 +0000</pubDate>
		<dc:creator>illotus</dc:creator>
				<category><![CDATA[software development]]></category>
		<category><![CDATA[studies]]></category>
		<category><![CDATA[career]]></category>
		<category><![CDATA[learning]]></category>

		<guid isPermaLink="false">http://www.illotus.com/cleanishcode/?p=124</guid>
		<description><![CDATA[I think learning new programming languages is both easy and very difficult. Syntax is nearly always easy, but understanding when to use a language and what are its strong points. Failing at this leads to the familiar &#8220;when all you have is a hammer, every problem looks like a nail.&#8221; On the other hand I [...]]]></description>
			<content:encoded><![CDATA[<p>I think learning new programming languages is both easy and very difficult. Syntax is nearly always easy, but understanding when to use a language and what are its strong points. Failing at this leads to the familiar &#8220;when all you have is a hammer, every problem looks like a nail.&#8221; On the other hand I read a quote somewhere along the lines &#8220;a good programmer makes the solution look like the language was made for solving it.&#8221; </p>
<p>Then again there is the huge job of learning all the common libraries and services languages have. Consider this: I&#8217;ve used Java on and off for various little programs at the university over the years, but it has been so occasional that I still need to refer to documentation for a lot basic stuff like accessing files etc. It is kinda tough when you don&#8217;t have a very good memory for stuff like that. Similarly for the last year and a half I&#8217;ve needed Perl steadily, but occasionally on my job: I really need the documentation to check pretty basic functions. </p>
<p>The point I&#8217;m rambling to is that routine is in my opinion the biggest factor in mastering a language. If you don&#8217;t use it, you lose it. Basics may stay, but the finer stuff goes away. </p>
<p>My current part time employment is coming to an end and yet again I&#8217;ve been wondering about applying to programming jobs. The thing is, I&#8217;d really like to finish my thesis first. The problem is that while I finish my thesis I lose most of what little routine I have for programming. That makes it tad more difficult to ace interviews in the winter. Luckily I&#8217;ll propably have couple of odd jobs at the Library during the summer, but those are more likely to be configuring software rather than developing it. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.illotus.com/cleanishcode/2010/05/learning-programming-languages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Autosave in games</title>
		<link>http://www.illotus.com/cleanishcode/2010/04/autosave-in-games/</link>
		<comments>http://www.illotus.com/cleanishcode/2010/04/autosave-in-games/#comments</comments>
		<pubDate>Tue, 06 Apr 2010 16:16:53 +0000</pubDate>
		<dc:creator>illotus</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[user experience]]></category>

		<guid isPermaLink="false">http://www.illotus.com/cleanishcode/?p=121</guid>
		<description><![CDATA[Earlier today I played Batman Arkham Asylum for a while and quit at some point. I&#8217;m about 80% through and just started the game to finish it tonight. No can do: corrupt save and that was that as there is only one save slot per &#8220;game&#8221;. The reason apparently is that I shut my Xbox [...]]]></description>
			<content:encoded><![CDATA[<p>Earlier today I played Batman Arkham Asylum for a while and quit at some point. I&#8217;m about 80% through and just started the game to finish it tonight. No can do: corrupt save and that was that as there is only one save slot per &#8220;game&#8221;. The reason apparently is that I shut my Xbox 360 while the game was autosaving. So essentially the game uses a flawed autosave mechanism. </p>
<p>It&#8217;s pretty horrible user experience that shutting down the console at wrong moment you can destroy hours of work accidentally. The correct way would be to have at least one backup autosave slot for the same gaming continuum to make sure that shutdown doesn&#8217;t completely wipe out player&#8217;s progress in the game. It isn&#8217;t end of the world the player is thrown back to the checkpoint before last. </p>
<p>Compare this to for example Fallout 3, which autosaves every time you change between game areas. It always does a fresh save. Even if the last save gets corrupted you can load the previous one. Of course Fallout 3 also has manual save option, which is even better for security(and user control). </p>
<p>In general autosave is a very nice idea from user experience point of view even if it takes away some control from the user. From game developer perspective it is pretty good option to make your game to be played in a certain way. However, it does mean you need to be very careful that in no checkpoint the player can be in so dire straits that continuing would be extremely difficult. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.illotus.com/cleanishcode/2010/04/autosave-in-games/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Teamwork For The Win</title>
		<link>http://www.illotus.com/cleanishcode/2010/04/teamwork-for-the-win/</link>
		<comments>http://www.illotus.com/cleanishcode/2010/04/teamwork-for-the-win/#comments</comments>
		<pubDate>Sat, 03 Apr 2010 18:27:25 +0000</pubDate>
		<dc:creator>illotus</dc:creator>
				<category><![CDATA[studies]]></category>

		<guid isPermaLink="false">http://www.illotus.com/cleanishcode/?p=119</guid>
		<description><![CDATA[Lately I&#8217;ve been doing research for my thesis. The thing is, planning card sorting and heuristic evaluation alone without a lot of experience isn&#8217;t much fun. I&#8217;d extrapolate this to any kind of reasonable difficult pursuit. It&#8217;s always easier with a team or partner even if every one is inexperienced. Of course this is parallel [...]]]></description>
			<content:encoded><![CDATA[<p>Lately I&#8217;ve been doing research for my thesis. The thing is, planning card sorting and heuristic evaluation alone without a lot of experience isn&#8217;t much fun. I&#8217;d extrapolate this to any kind of reasonable difficult pursuit. It&#8217;s always easier with a team or partner even if every one is inexperienced. </p>
<p>Of course this is parallel to all the stuff I&#8217;ve been doing for my thesis. In usability testing, card sorting and heuristic evaluation you do find usability problems with just one test subject, but with more patterns start to emerge and the data you get is more meaningful. Similarly I naturally believe that the research portion of my thesis would be better if I did as a part of a team or with a partner.</p>
<p>I definitely prefer working in teams even though I&#8217;ve worked mostly independently. It&#8217;s a general win-win, in a working team you generally improve every member in the two most important aspects: skill and motivation. Can&#8217;t for the life of me remember whether it was <a href="http://randsinrepose.com/">Rands</a> or <a href="http://www.scottberkun.com/">Scott Berkun</a> who wrote about the skill and will as the aspects manager must massage. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.illotus.com/cleanishcode/2010/04/teamwork-for-the-win/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fileserver, part 3, setting up ACL permissions</title>
		<link>http://www.illotus.com/cleanishcode/2010/02/fileserver-part-3-setting-up-acl-permissions/</link>
		<comments>http://www.illotus.com/cleanishcode/2010/02/fileserver-part-3-setting-up-acl-permissions/#comments</comments>
		<pubDate>Sun, 14 Feb 2010 21:40:23 +0000</pubDate>
		<dc:creator>illotus</dc:creator>
				<category><![CDATA[hardware]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[opensolaris]]></category>
		<category><![CDATA[zfs]]></category>

		<guid isPermaLink="false">http://www.illotus.com/cleanishcode/?p=104</guid>
		<description><![CDATA[Finally I have nearly everything moved to the new server. I&#8217;ve ended up using ACL for handling permissions for the CIFS shares. ACL isn&#8217;t too difficult to understand, but there aren&#8217;t too many resources on the net on it. Finding Daz&#8217;s &#8220;OpenSolaris cifs/smb server – configuring ACL’s on shares&#8221; article really helped. For example for [...]]]></description>
			<content:encoded><![CDATA[<p>Finally I have nearly everything moved to the new server. I&#8217;ve ended up using ACL for handling permissions for the CIFS shares. ACL isn&#8217;t too difficult to understand, but there aren&#8217;t too many resources on the net on it. Finding <a href="http://sigtar.com/2009/02/14/opensolaris-cifssmb-server-configuring-acls-on-shares/">Daz&#8217;s &#8220;OpenSolaris cifs/smb server – configuring ACL’s on shares&#8221; article </a> really helped. For example for the media files I did the following:<br />
<span id="more-104"></span></p>

<div class="wp_syntax"><div class="code"><pre class="unix" style="font-family:monospace;color: blue;"># groupadd mguest
# groupadd media
# useradd -g mguest mguest
&nbsp;
# zfs set aclinherit=passthrough tank/media
# zfs set aclmode=passthrough tank/media
&nbsp;
# /usr/bin/chmod -R  A=\
&gt; owner@:rwxpdDaARWcCos:fd-----:allow,\
&gt; group:media:rwxpdDaARWc--s:fd-----:allow,\
&gt; group:mguest:rxaARWcs:fd-----:allow,\
&gt; everyone@:rwxpdDaARWcCos:fd-----:deny \
&gt; /tank/media/</pre></div></div>

<p>So basically every read only device uses the mguest user account and anyone who needs to edit the stuff belongs to media group. For some reason</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;color: blue;">group<span style="color: #008000;color: #CCC;">:</span>mguest<span style="color: #008000;color: #CCC;">:</span>read_set<span style="color: #008000;color: #CCC;">:</span>fd<span style="color: #008000;color: #CCC;">:</span>allow</pre></div></div>

<p> didn&#8217;t work for read access. </p>
<p>One catch is to remember to <strong>use /usr/bin/chmod</strong> and not /usr/gnu/bin/chmod as the latter doesn&#8217;t support ACL.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.illotus.com/cleanishcode/2010/02/fileserver-part-3-setting-up-acl-permissions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cloning a Running Windows 2008 Server to a Virtual Machine</title>
		<link>http://www.illotus.com/cleanishcode/2010/02/cloning-windows-2008-server-to-a-virtual-machine/</link>
		<comments>http://www.illotus.com/cleanishcode/2010/02/cloning-windows-2008-server-to-a-virtual-machine/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 12:06:10 +0000</pubDate>
		<dc:creator>illotus</dc:creator>
				<category><![CDATA[hardware]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[fileserver]]></category>
		<category><![CDATA[user experience]]></category>

		<guid isPermaLink="false">http://www.illotus.com/cleanishcode/?p=91</guid>
		<description><![CDATA[I&#8217;m ready to migrate my 1½ year old Windows 2008 installation to a virtual machine and finding out about the options run into Disk2vhd. It&#8217;s made by the Sysinternals team at Microsoft and what it does is snapshot of any drive to a VHD, virtual hard disk. The cool thing is that you can clone [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m ready to migrate my 1½ year old Windows 2008 installation to a virtual machine and finding out about the options run into <a href="http://technet.microsoft.com/en-us/sysinternals/ee656415.aspx">Disk2vhd</a>. It&#8217;s made by the Sysinternals team at Microsoft and what it does is snapshot of any drive to a VHD, virtual hard disk. The cool thing is that you can <strong>clone running Windows system with it</strong>. </p>
<p><a href="http://www.illotus.com/cleanishcode/pics/w08osolhost.png"><img src="http://www.illotus.com/cleanishcode/pics/w08osolhost_thumb.png" alt="Windows 2008 server migrated to VirtualBox on top of Opensolaris" /></a></p>
<p>The cloning is as simple as:</p>
<ol>
<li><a href="http://download.sysinternals.com/Files/Disk2vhd.zip">download Disk2vhd</a> and extract it to some folder.</li>
<li>Start the software and choose which partition you want to clone.</li>
<li>Wait for the cloning to finish, in my case this took about 50 minutes</li>
<li>Copy the resulting .vhd file to your virtual machine host.</li>
<li>Start your virtual machine software and make a new VM.</li>
<li>Mount the disk on the VM you just made and boot.</li>
<li>If everything went right you should now have a clone of your Windows system running in a VM</li>
</ol>
<p>I just tried this and just like that I have my old Windows 2008 running in a VirtualBox virtual machine on top of OpenSolaris.</p>
<p>If you are migrating a Windows installation to VirtualBox you might want to check out the how-to on <a href="http://www.virtualbox.org/wiki/Migrate_Windows"migrate existing Windows installations</a> on the VirtualBox website.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.illotus.com/cleanishcode/2010/02/cloning-windows-2008-server-to-a-virtual-machine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fileserver, part 2 &#8211; taping raid card</title>
		<link>http://www.illotus.com/cleanishcode/2010/02/fileserver-part-2-taping-raid-card/</link>
		<comments>http://www.illotus.com/cleanishcode/2010/02/fileserver-part-2-taping-raid-card/#comments</comments>
		<pubDate>Sat, 06 Feb 2010 15:26:09 +0000</pubDate>
		<dc:creator>illotus</dc:creator>
				<category><![CDATA[hardware]]></category>
		<category><![CDATA[fileserver]]></category>

		<guid isPermaLink="false">http://www.illotus.com/cleanishcode/?p=87</guid>
		<description><![CDATA[I have my server running now with the following hardware: Asus P7F-X motherboard Intel Xeon x3440 processor 4GB Kingston ECC DDR3 6 Western Digital 1,5TB drives, model nro WD15EARS 2 Samsung F3 500GB drives Dell SAS 5/i sata raid card Nexus Edge case The first problem I ran into was no boot, if the raid [...]]]></description>
			<content:encoded><![CDATA[<p>I have my server running now with the following hardware:</p>
<ul>
<li>Asus P7F-X motherboard</li>
<li>Intel Xeon x3440 processor</li>
<li>4GB Kingston ECC DDR3</li>
<li>6 Western Digital 1,5TB drives, model nro WD15EARS</li>
<li>2 Samsung F3 500GB drives</li>
<li>Dell SAS 5/i sata raid card</li>
<li>Nexus Edge case</li>
</ul>
<p>The first problem I ran into was no boot, if the raid card was installed. <a href="http://www.overclock.net/raid-controllers-software/359025-perc-5-i-raid-card-tips.html">Solution was taping two pins from the pci-e connector</a>. Now I have the system running and OpenSolaris build 132 installed. I still have to setup the shares and stress test the system. </p>
<p><strong>Most importantly everything works out of the box with the build 132.</strong></p>
<p>I haven&#8217;t been exposed to Unix much so setting everything up is bit of a chore. A lot of things zfs makes really simple, but there is still lot to learn. If I still care in couple of weeks I might write a guide, though there isn&#8217;t much of a need as <a href="http://breden.org.uk/2008/03/02/a-home-fileserver-using-zfs/">Simon Breden already has a very good guide</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.illotus.com/cleanishcode/2010/02/fileserver-part-2-taping-raid-card/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Steve Krug&#8217;s new book on usability testing</title>
		<link>http://www.illotus.com/cleanishcode/2010/01/steve-krugs-new-book-on-usability-testing/</link>
		<comments>http://www.illotus.com/cleanishcode/2010/01/steve-krugs-new-book-on-usability-testing/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 10:52:23 +0000</pubDate>
		<dc:creator>illotus</dc:creator>
				<category><![CDATA[usability]]></category>
		<category><![CDATA[learning]]></category>

		<guid isPermaLink="false">http://www.illotus.com/cleanishcode/?p=70</guid>
		<description><![CDATA[Great guide to low-cost usability testing. 168 pages, so reading it slowly takes 2 hours and those hours just fly by. Generally books on the practical part of testing are kinda boring, but this one is really easy to read.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.amazon.com/Rocket-Surgery-Made-Easy-Yourself/dp/0321657292%3FSubscriptionId%3DAKIAJSXSFM7LMKYLSM5Q%26tag%3Dbeginnerspoke-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D0321657292">Great guide to low-cost usability testing</a>. 168 pages, so reading it slowly takes 2 hours and those hours just fly by. Generally books on the practical part of testing are kinda boring, but this one is really easy to read. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.illotus.com/cleanishcode/2010/01/steve-krugs-new-book-on-usability-testing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fileserver, part 1</title>
		<link>http://www.illotus.com/cleanishcode/2010/01/fileserver-part-1/</link>
		<comments>http://www.illotus.com/cleanishcode/2010/01/fileserver-part-1/#comments</comments>
		<pubDate>Sun, 24 Jan 2010 14:13:19 +0000</pubDate>
		<dc:creator>illotus</dc:creator>
				<category><![CDATA[hardware]]></category>
		<category><![CDATA[fileserver]]></category>
		<category><![CDATA[opensolaris]]></category>
		<category><![CDATA[zfs]]></category>

		<guid isPermaLink="false">http://www.illotus.com/cleanishcode/?p=55</guid>
		<description><![CDATA[I have this AMD 4850e/4GB non-ECC RAM/2,6TB/WS2008 serving files and other needs around the apartment. No RAID, no formal backups etc. Some of the more important stuff is on couple of disks and in the cloud etc. At first I intented to buy only 2 more hard drives, adding maybe 2-3TB. Then I got this [...]]]></description>
			<content:encoded><![CDATA[<p>I have this <strong>AMD 4850e/4GB non-ECC RAM/2,6TB/WS2008</strong> serving files and other needs around the apartment. No RAID, no formal backups etc. Some of the more important stuff is on couple of disks and in the cloud etc. </p>
<p>At first I intented to buy only <strong>2</strong> more hard drives, adding maybe <strong>2-3TB</strong>. Then I got this idea <strong>wouldn&#8217;t it be fun to do away with all the separate disks and handle all the storage as one pool</strong>. This lead me to <a href="http://breden.org.uk/2008/03/02/a-home-fileserver-using-zfs/">ZFS and this wonderful write-up about it</a>.<br />
<span id="more-55"></span></p>
<h3>Hardware choices</h3>
<p>While I haven&#8217;t bought anything except sil3124-based sata raid card and couple of Dell raid cards(<strong>$27 for the 2</strong>, surprised it they work), but this is how the escalation has gone so far:</p>
<ol>
<li>Buy <strong>4 1,5TB drives</strong> to use in RAIDZ configuration added to the existing server</li>
<li>Upgrade desktop to <strong>Intel Core i5-750 </strong>and use the<strong> E6600/4GB </strong>for the fileserver</li>
<li>Get <strong>Xeon/server mobo/4GB ECC RAM</strong> and a huge case for the fileserver</li>
</ol>
<p>I&#8217;m basing the current choice on the positive idea that if I don&#8217;t need the fileserver to be that beefy I can use it as a desktop. It&#8217;ll be interesting to see whether Intel Lynnfield Xeon with power management uses less power than the <strong>AMD 4850e.</strong> Tested the current server with OpenSolaris livecd and it <strong>idles at 100W, compared to idling at 50W</strong> when using <strong>WS2008</strong>. </p>
<h3>Hard disk choices</h3>
<p>There is no perfect choice for home use if you intend to use any sort of RAID. This is because of <a href="http://en.wikipedia.org/wiki/Time-Limited_Error_Recovery">TLER</a>. <a href="http://opensolaris.org/jive/thread.jspa?threadID=121871&#038;tstart=0">Good discussion of it found at OpenSolaris forums</a>.</p>
<p>1,5TB is currently the sweet spot price-wise as you can get Samsung or Western Digital drive for roughly <strong>€85-90</strong> from various German online shops. However these drives aren&#8217;t rated for RAID use and in error situations can become unresponsive which in turn can result in them getting dropped from RAID ARRAY. <strong>Pretty much all the drives rated for RAID operation cost roughly 30-50% more. </strong>That is a huge premium in my case because I would pay for the extra performance that I wouldn&#8217;t need.</p>
<p>This basically means that I&#8217;m propably going to try my luck with the consumer class drives as the cost is an issue.<strong> 6 1,5TB</strong> drives cost roughly <strong>€520</strong> compared to <strong>8 1TB</strong> RAID drives that cost <strong>€800</strong> for the same storage space. Getting to <strong>6TB</strong> usable with RAIDZ2 would cost in excess of <strong>€1100</strong> with <strong>Western Digital RE4 2TB</strong> drives. It would be pretty much cheaper operation to just get two sets of 1,5TB drives and mirror them. Except for the power usage and likely also noise.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.illotus.com/cleanishcode/2010/01/fileserver-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Webapp business</title>
		<link>http://www.illotus.com/cleanishcode/2010/01/webapp-business/</link>
		<comments>http://www.illotus.com/cleanishcode/2010/01/webapp-business/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 10:27:45 +0000</pubDate>
		<dc:creator>illotus</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[webapp]]></category>

		<guid isPermaLink="false">http://www.illotus.com/cleanishcode/?p=52</guid>
		<description><![CDATA[I&#8217;ve been toying with Django for a week or so and started building a simple CRUD app. Essentially it is a todo list software. Mainly this is because it is suitably small project and it is also scratching my own itch. For the latter correct solution would be to be lazy and use Todoist or [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been toying with Django for a week or so and started building a simple <a href="http://en.wikipedia.org/wiki/Create,_read,_update_and_delete">CRUD</a> app. Essentially it is a todo list software. Mainly this is because it is suitably small project and it is also scratching my own itch. For the latter correct solution would be to be lazy and use <a href="http://todoist.com">Todoist</a> or <a href="http://www.rememberthemilk.com">Remember the Milk</a>. </p>
<p>If I get the software out and about within the next 6 months I might actually try to monetize it. I doubt there is a lot of money in it, though to my understanding the RTM guys do make a living with it. The price range for the extra features of Pro or Premium version is $3/month to $25/year. Even for a single developer you do need reasonable amount of subscribers to make a living. Anyways, we&#8217;ll see if anything comes out of this. There&#8217;s pretty much work involved in making everything ajaxy. </p>
<p>Still, this is interesting exercise, especially as both Django and Python are really new to me and so is the whole web framework world. Back when I worked on a .Net webapp using VB.Net pretty much everything had to be done by hand. Luckily these days I&#8217;m a lot better developer and much more interested in the whole field of sotfware development.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.illotus.com/cleanishcode/2010/01/webapp-business/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Usability Implications of Requiring Parameters in Objects&#8217; Constructors</title>
		<link>http://www.illotus.com/cleanishcode/2010/01/usability-implications-of-requiring-parameters-in-objects-constructors/</link>
		<comments>http://www.illotus.com/cleanishcode/2010/01/usability-implications-of-requiring-parameters-in-objects-constructors/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 11:20:37 +0000</pubDate>
		<dc:creator>illotus</dc:creator>
				<category><![CDATA[usability]]></category>
		<category><![CDATA[best practice]]></category>

		<guid isPermaLink="false">http://www.illotus.com/cleanishcode/?p=44</guid>
		<description><![CDATA[Interesting finding from a research article by Jeffrey Stylos and Steven Clarke A comparative study was performed to assess how professional programmers use APIs with required parameters in objects’ constructors as opposed to parameterless “default” constructors. It was hypothesized that required parameters would create more usable and selfdocumenting APIs by guiding programmers toward the correct [...]]]></description>
			<content:encoded><![CDATA[<p>Interesting finding from <a href="http://portal.acm.org/citation.cfm?id=1248828&#038;dl=">a research article</a> by Jeffrey Stylos and Steven Clarke</p>
<blockquote><p>A comparative study was<br />
performed to assess how professional programmers<br />
use APIs with required parameters in objects’<br />
constructors as opposed to parameterless “default”<br />
constructors. It was hypothesized that required<br />
parameters would create more usable and selfdocumenting<br />
APIs by guiding programmers toward the<br />
correct use of objects and preventing errors. However,<br />
in the study,<strong> it was found that, contrary to<br />
expectations, programmers strongly preferred and<br />
were more effective with APIs that did not require<br />
constructor parameters.</strong></p></blockquote>
<p>So essentially the explicit approach of</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="csharp" style="font-family:monospace;color: blue;">var foo <span style="color: #008000;color: #CCC;">=</span> <span style="color: #008000;color: #8FB394;">new</span> FooClass<span style="color: #000000;color: #CCC;">&#40;</span><span style="color: #000000;color: #CCC;">&#41;</span><span style="color: #008000;color: #CCC;">;</span>
foo.<span style="color: #0000FF;">Bar</span> <span style="color: #008000;color: #CCC;">=</span> barValue<span style="color: #008000;color: #CCC;">;</span>
foo.<span style="color: #0000FF;">Use</span><span style="color: #000000;color: #CCC;">&#40;</span><span style="color: #000000;color: #CCC;">&#41;</span><span style="color: #008000;color: #CCC;">;</span></pre></td></tr></table></div>

<p>was better than the denser</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="csharp" style="font-family:monospace;color: blue;">var foo <span style="color: #008000;color: #CCC;">=</span> <span style="color: #008000;color: #8FB394;">new</span> FooClass<span style="color: #000000;color: #CCC;">&#40;</span>barValue<span style="color: #000000;color: #CCC;">&#41;</span><span style="color: #008000;color: #CCC;">;</span>
foo.<span style="color: #0000FF;">Use</span><span style="color: #000000;color: #CCC;">&#40;</span><span style="color: #000000;color: #CCC;">&#41;</span><span style="color: #008000;color: #CCC;">;</span></pre></td></tr></table></div>

<p>(code examples straight from the article.)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.illotus.com/cleanishcode/2010/01/usability-implications-of-requiring-parameters-in-objects-constructors/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
