<?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>Tabbles &#187; development</title>
	<atom:link href="http://tabbles.net/blog/tag/development/feed/" rel="self" type="application/rss+xml" />
	<link>http://tabbles.net</link>
	<description>Document Management Software, File Tagging</description>
	<lastBuildDate>Thu, 17 May 2012 04:34:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Tribe, Crowdsourcing, Neighbourhood and Friendship: Business 2.0</title>
		<link>http://tabbles.net/blog/crowdsourcing-tribe-business-2-0/</link>
		<comments>http://tabbles.net/blog/crowdsourcing-tribe-business-2-0/#comments</comments>
		<pubDate>Mon, 30 Aug 2010 20:02:51 +0000</pubDate>
		<dc:creator>Andrea</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[crowdsourcing]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[marketing]]></category>

		<guid isPermaLink="false">http://tabbles.net/blog/?p=630</guid>
		<description><![CDATA[How today's business is all about building tribes and crowdsourcing.]]></description>
			<content:encoded><![CDATA[<p>HELLO WORLD</p>
<p>When you&#8217;re inspired, nothing is better than writing a blog post&#8230; you may even risk of inspiring other people!</p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<h1>Crowdsourcing, The Tribe, Product/Market fit, Friendship and Family.</h1>
<p><br class="spacer_" /></p>
<p>Many of you might have heard aboutÂ <a title="Seth Godin's blog" href="http://sethgodin.typepad.com">Seth Godin</a> -Â to everyone else: he&#8217;s a well know marketing Â guru. His super-minimalist writing style makes it a pleasure for everyone to browse through his articles. I dug through his blog a few times and usually ended up shaking my head or saying &#8220;hmmm&#8230;maybe&#8221; at best. Until I read thisÂ <a title="Seth Godin: &quot;find ten...&quot;" href="http://sethgodin.typepad.com/seths_blog/2009/04/first-ten-.html">article</a> and watch this video:</p>
<p>
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="446" height="326" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="wmode" value="transparent" /><param name="bgColor" value="#ffffff" /><param name="flashvars" value="vu=http://video.ted.com/talks/dynamic/SethGodin_2009-medium.flv&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/SethGodin-2009.embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=538&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=seth_godin_on_the_tribes_we_lead;year=2009;theme=media_that_matters;theme=unconventional_explanations;theme=not_business_as_usual;theme=the_rise_of_collaboration;event=TED2009;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;" /><param name="src" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" /><param name="bgcolor" value="#ffffff" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="446" height="326" src="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" flashvars="vu=http://video.ted.com/talks/dynamic/SethGodin_2009-medium.flv&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/SethGodin-2009.embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=538&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=seth_godin_on_the_tribes_we_lead;year=2009;theme=media_that_matters;theme=unconventional_explanations;theme=not_business_as_usual;theme=the_rise_of_collaboration;event=TED2009;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;" bgcolor="#ffffff" wmode="transparent" allowscriptaccess="always" allowfullscreen="true"></embed></object>
</p>
<p>Of all of a sudden a <strong>giant bulb</strong> was flashing over my head. TheÂ <a title="Seth Godin: &quot;find ten...&quot;" href="http://sethgodin.typepad.com/seths_blog/2009/04/first-ten-.html">article</a> I mentioned concludes with the words:</p>
<p><em>&#8220;Three years from now, this advice will be so common as to be boring. Today, it&#8217;s almost certainly the opposite of what you&#8217;re doing.&#8221;</em></p>
<p>Isn&#8217;t that what you call &#8220;having a vision&#8221;? I guess it is.</p>
<p style="text-align: center;">|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;|</p>
<p>A man with a vision is usually not the only imagining stuff. But unlike the average Joe he can <strong>focus, </strong><strong>summarize his vision and put it down in words.</strong> When this happens those who read about the vision may think &#8220;yeah&#8230; I thought about that too&#8230;&#8221; &#8211; but telling about the vision is a different story.</p>
<p>We started building our Tribe way before we read the Seth Godin&#8217;s article. I&#8217;d say it all started the first time we were featured on <a title="GOTD Tabbles" href="http://www.giveawayoftheday.com/tabbles/">GOTD </a>(September 2009). I can&#8217;t remember the details but the next day a guy wrote me offering to translate the software to German (which is now our second market&#8230;). At the time I was watching the Simpsons&#8217; episode featuring the X-Files characters:</p>
<p><br class="spacer_" /></p>
<div id="attachment_632" class="wp-caption aligncenter" style="width: 410px"><a href="http://tabbles.net/blog/wp-content/uploads/2010/08/mulder.jpg" rel="wp-prettyPhoto[g3655]"><img class="size-full wp-image-632" title="Mulder on the Simpsons" src="http://tabbles.net/blog/wp-content/uploads/2010/08/mulder.jpg" alt="Mulder on the Simpsons" width="400" height="267" /></a><p class="wp-caption-text">Mulder on the Simpsons</p></div>
<p><br class="spacer_" /></p>
<p>As I got very positively surprised of receiving such a flattering offer, inspired by the cartoon scene I enthusiastically replied:</p>
<p style="padding-left: 30px;"><em>&#8220;If you do this for us we&#8217;ll send you a free license of our software along with our </em><em>autographed </em><em>naked pictures!&#8221;</em></p>
<p style="text-align: center;"><strong>Not a very professional reply&#8230;no.</strong></p>
<p>But nonetheless this guy did like my answer and instantly became part of the family. Today the guy, <a title="The Amazing Nefycee" href="http://tabbles.net/forum/nefycee-u170.html">nefycee</a>, has his email address @tabbles.net, his Tabbles business card, he blogs on our blogÂ and did for us <strong>way more than we would ever expect from any employee</strong>. Wait&#8230;did I forget to mention the word &#8220;friend&#8221;? Well, I forgot to but here I am now: we couldn&#8217;t help getting friends with nefycee, it just felt the most natural thing in the world <img src='http://tabbles.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Now, I&#8217;m talking about nefycee but I may be rolling out a list of 10-15 names, on top of them I&#8217;d probably put <a title="The Unstoppable Mrdna" href="http://tabbles.net/forum/mrdna-u192.html">mrdna </a>who did flood us with ultra-creative suggestions/comments/feedback/positive energyÂ (I&#8217;ve just found an old <a title="Tabbles advertisemente" href="http://tabbles.net/forum/help-us-discussion-t140.html#p590">proposal for a Tabbles advertisement</a> from him) or the &#8220;Brasilian Dragon&#8221; Leandro, who&#8217;s successfully helping us to solve <a title="Leandro: moving files with Explorer" href="http://tabbles.net/forum/move-files-with-tabbles-instead-of-explorer-t231-10.html">impossible technical problems</a>. And of course (as Seth Godin expects) they&#8217;ve all been <strong>spreading the word</strong> in any possible way.</p>
<p style="text-align: center;">|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;|</p>
<p>I blogged about crowdsourcing a couple of times before. Crowdsourcing is &#8220;<a title="Crowdsourcing on Wikipedia" href="http://en.wikipedia.org/wiki/Crowdsourcing">The act of outsourcing tasks, traditionally performed by an employee or contractor, to a large group of people or community (a crowd), through an open call</a>&#8220;. Â This is our open call:</p>
<p><br class="spacer_" /></p>
<div id="attachment_631" class="wp-caption aligncenter" style="width: 453px"><a href="http://tabbles.net/blog/wp-content/uploads/2010/08/free_license.png" rel="wp-prettyPhoto[g3655]"><img class="size-full wp-image-631" title="Crowdsourcing with Tabbles" src="http://tabbles.net/blog/wp-content/uploads/2010/08/free_license.png" alt="Crowdsourcing with Tabbles" width="443" height="264" /></a><p class="wp-caption-text">Crowdsourcing with Tabbles</p></div>
<p><br class="spacer_" /></p>
<p>When you click on the &#8220;<a title="Get a free Tabbles license" href="http://tabbles.net/forum/get-free-tabbles-license-translate-and-spread-the-word-t139.html">Click here to learn more</a>&#8221; link you are brought to this <a title="Get a free Tabbles license" href="http://tabbles.net/forum/get-free-tabbles-license-translate-and-spread-the-word-t139.html">page</a>. We created the page 10 months ago and so far we got (out of my memory):</p>
<ul>
<li>Tabbles <strong>translated in 11 languages</strong> (and we even politely said &#8220;no&#8221; to a couple of people who offered to translate in 2 more languages&#8230; silly us).</li>
<li>The <strong>User Manual translated</strong> in German and Spanish (!!!) &#8211; now guys, let me tell you that translating a user manual is BIG AND PAINFUL task&#8230; I know that out of first hand experience.</li>
<li>Tabbles mentioned in a number of blogs/website/magazines.</li>
<li>Help in <a title="Tabbles development wave" href="https://wave.google.com/wave/waveref/googlewave.com/w+OsNtHUDjB ">development</a> (!!!!!!!!!).</li>
</ul>
<p><br class="spacer_" /></p>
<p>(PAUSE:Â The list is <strong>not</strong> over, before going further I need to introduce the Product/Market fit concept (articles byÂ <a title="Ash Maurya: Product to Market fit" href="http://www.ashmaurya.com/2009/11/achievingproductmarketfit/">Ash Maurya</a> and <a title="Marc Andreesen on Product/Market fit" href="http://web.archive.org/web/20070701074943/http://blog.pmarca.com/2007/06/the-pmarca-gu-2.html">Marc Andreesen</a>)</p>
<table style="border-color: #e4e816; border-width: 5px; background-color: #f9fad0;" border="5" cellspacing="5" cellpadding="5">
<tbody>
<tr>
<td><strong>Product/Market fit: our equation</strong></td>
</tr>
<tr>
<td>
<p><br class="spacer_" /></p>
<p>Casual users&#8217; feeback + Regular users&#8217; feedback + Tribe&#8217;s feedback => Iterations (keeping ears open)Â => Product/market fit</p>
<p><br class="spacer_" /></p>
</td>
</tr>
</tbody>
</table>
<p>(END OF THE PAUSE)</p>
<p><br class="spacer_" /></p>
<ul>
<li><strong>And most important:</strong> 1 million ideas, comments, suggestions, you name it about all kind of different people from everywhere in the world&#8230; the ideas came through our forum and thisÂ <a title="Why are you uninstalling" href="http://tabbles.net/index.php?option=com_content&amp;view=article&amp;id=89">form</a> (it appears each time one uninstalls, inspired byÂ <a title="Jason Cohen's post on lost sales" href="http://blog.asmartbear.com/more-sales-customer-feedback.html">Jason Cohen&#8217;s post</a>). Those lead us to radically rethinking some ideas (which couldn&#8217;t be accepted by the public) while focusing on the things that people loved and needed. Look at what happened between version 1.1 and 1.5:</li>
</ul>
<p><br class="spacer_" /></p>
<div id="attachment_634" class="wp-caption aligncenter" style="width: 657px"><a href="http://tabbles.net/blog/wp-content/uploads/2010/08/t1_shot_4.jpg" rel="wp-prettyPhoto[g3655]"><img class="size-full wp-image-634  " title="Tabbles 1.1" src="http://tabbles.net/blog/wp-content/uploads/2010/08/t1_shot_4.jpg" alt="Tabbles 1.1" width="647" height="491" /></a><p class="wp-caption-text">Tabbles 1.1 - September 2009</p></div>
<p><br class="spacer_" /></p>
<div id="attachment_635" class="wp-caption aligncenter" style="width: 668px"><a href="http://tabbles.net/blog/wp-content/uploads/2010/08/shots_151-2.jpg" rel="wp-prettyPhoto[g3655]"><img class="size-full wp-image-635  " title="Tabbles 1.5" src="http://tabbles.net/blog/wp-content/uploads/2010/08/shots_151-2.jpg" alt="Tabbles 1.5" width="658" height="495" /></a><p class="wp-caption-text">Tabbles 1.5 - June 2010</p></div>
<p><br class="spacer_" /></p>
<h1>From the Apple/IBM to the Balsamiq model: &#8220;be yourself, be remarkable, the rest is easy!&#8221;.</h1>
<p>We all know about patents and industrial/commercial secrets. We read stories about <em>Company X</em> stealing ideas from <em>Company Y</em>. Most of us have experience with companies trying to keep many secrets from their customers, suppliers, employees, the general public, what have you. And whatever you do, the one thing that matters is to look professional&#8230;cause if you were a tie your BS would magically start making more sense. And of course it all makes sense&#8230; that&#8217;s the &#8220;normal&#8221; way of doing business, therefore it must be the right one, right?</p>
<p>Then one day I bumped into Â this <a title="Balsamiq's first 100k$" href="http://balsamiq.com/blog/?p=424">article from Peldi</a> (balsamiq.com). My first reaction was:</p>
<p><strong>&#8220;Wow, this guy is telling the whole world how much money he&#8217;s making and where the money is coming from!!! AND HE&#8217;S STILL MAKING MONEY!!!&#8221; </strong></p>
<p>That was my own point of no return.Â Within the 10 minutes I realized that everything I knew was plain old-fashioned. It belonged to the paper-press era.</p>
<p>Then I readÂ <a title="&quot;you're a smart company, now act like one&quot;" href="http://blog.asmartbear.com/youre-a-little-company-now-act-like-one.html">this article from Jason Cohen</a> did kick me even further through the <a title="Einstein-Rosen hole" href="http://en.wikipedia.org/wiki/Wormhole">Einstein-Rosen hole</a> I was riding and led me to see the light to a new dimension. I realized that ties also belonged to the time when TV mattered.</p>
<p>Then I noticed that <a title="Balsamiq's blog" href="http://balsamiq.com/blog/">Peldi</a> did create a <a title="list of wireframing tools " href="http://twitter.com/balsamiq/wireframing-tools">twitter list collecting all of his competitors</a>. Of course my first reaction was &#8220;WTF! He&#8217;s telling his own customers where to find his competitors!!!!&#8221;. But since I was already on the shiny side of the stargate, I didn&#8217;t get too shocked. Â I wrote Peldi asking why he did that and he explained that he was simply &#8220;collecting everything that had to do with his micro-cosmos&#8221;. If I weren&#8217;t thinking as traditional marketer, that made <strong>perfect sense</strong>. Â Two words in giant capitals started floating over my head:</p>
<h2 style="text-align: center;">Informal, Unconventional</h2>
<p><br/></p>
<p>Then of course I created our <a title="Tagging apps list on twitter" href="http://twitter.com/#/list/Tabbles/tagging-apps">twitter list of Tagging tools</a>. Shortly Â after this happened, we got a very nice surprise into our mailbox:</p>
<div id="_mcePaste" style="padding-left: 30px;">&#8220;<em>Hello Andrea, just recently discovered Tabbles and found your recent <a title="Goodbye FileSystemWatcher" href="http://tabbles.net/blog/2010/03/01/goodbye-filesystemwatcher-welcome-full-file-manager-solution/">blog entry regarding the filesystemwatcher</a> interesting.</em></div>
<div id="_mcePaste" style="padding-left: 30px;"><em>I have been fighting with file watching for months with my product Â called Taggtool. (<a title="Taggtool" href="http://www.taggtool.com">http://www.taggtool.com</a>)</em></div>
<div id="_mcePaste" style="padding-left: 30px;"><em>I thought I&#8217;d drop you a line and let you know how I handle file change events. [...]</em>&#8220;</div>
<p><br class="spacer_" /></p>
<p>Can you imagine Steve Jobs dropping a line to Steve Ballmer to suggest how to improve the user interface in the next version of Windows? Well, if you take a the billions of $ away, that&#8217;s more or less what happened. And it&#8217;s nothing less than &#8220;business relations miracle&#8221;. Â Is Philip (the guy behindÂ <em><a title="Taggtool" href="http://www.taggtool.com">http://www.taggtool.com</a> ) </em>part of our Tribe? Well, maybe this is a bit stretched&#8230; but for sure he&#8217;s a polite and friendly neighbour, the one you always hope to find whenever you move &#8211; especially if you move to a new and unknown land as we did with Tabbles.</p>
<p>I&#8217;m actually writing this post cause a second event like this happened today, it was even more surprising. It started again from twitter: among our new followers there was a tagging app (<a title="Labeler Software on twitter" href="http://twitter.com/Labeler_app">Labeler Software</a>) I didn&#8217;t know yet. Then I asked myself &#8220;What would Peldi do in this situation?&#8221; and answered myself &#8220;<strong>well, I guess he would politely drop him a line and maybe invite him to join the Tribe&#8230;</strong>&#8221; and so I sent the guy a PM on twitter:</p>
<p style="padding-left: 30px;"><em>&#8220;Privet! <img src='http://tabbles.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Congrats for your labeler! Do you know Tabbles? We&#8217;re looking for coders to help us with it&#8230;interested? </em><a class="tweet-url web" rel="nofollow" href="http://bit.ly/a7ceob" target="_blank"><em>http://bit.ly/a7ceob</em></a><em>&#8220;</em></p>
<p>The link points the public <a title="Tabbles development wave" href="https://wave.google.com/wave/waveref/googlewave.com/w+OsNtHUDjB ">google wave</a> we&#8217;re using to discuss technical topics. To my utmost surprise, one hour later, I checked the wave and noticed that Bohdan (the guy behind the Labeler Software) did writ a line helping us to solve another impossible problem:</p>
<p style="padding-left: 30px;"><em>&#8220;Bohdan Trotsenko: Alternative datastreams may be an option if the file resides on NTFS. Requires P/I. Will help tracking moving but helpless with Word&#8217;s case, as a new file is created.&#8221;</em></p>
<p> <img src='http://tabbles.net/wp-includes/images/smilies/icon_surprised.gif' alt=':-o' class='wp-smiley' /> </p>
<p>How do you call that? How far can we go with the Tribe? Can competitors be part of the Tribe? Can we, our customers, our competitors, their customers and the rest of the World, <strong>all work together to build something very special?</strong></p>
<p>Well, simply put, this experienced triggered something in me. Something that led me to share this rollercoaster with the whole world.Â And maybe someone can even get inspired from my tale.</p>
<p><br class="spacer_" /></p>
<p>Peace,</p>
<p><br class="spacer_" /></p>
<p>Andrea</p>
]]></content:encoded>
			<wfw:commentRss>http://tabbles.net/blog/crowdsourcing-tribe-business-2-0/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>F# by example &#8211; part 2</title>
		<link>http://tabbles.net/blog/fsharp-tutorial-how-fsharp-adapts-to-how-we-think-part2/</link>
		<comments>http://tabbles.net/blog/fsharp-tutorial-how-fsharp-adapts-to-how-we-think-part2/#comments</comments>
		<pubDate>Tue, 10 Aug 2010 07:11:45 +0000</pubDate>
		<dc:creator>Seguso</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[dotnet]]></category>
		<category><![CDATA[F#]]></category>
		<category><![CDATA[fsharp]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://tabbles.net/blog/?p=576</guid>
		<description><![CDATA[Programming tutorial on F#: why it adapts to the way we think, part 2]]></description>
			<content:encoded><![CDATA[<p>This is the second episode of a series meant to illustrate how functional languages, and in particular F#, allow us to write code in a more natural way with respect to imperative languages. Here is the <a href="http://tabbles.net/blog/2010/07/29/fsharp-tutorial-how-fsharp-adapts-to-how-we-think-part1/">previous </a>episode.</p>
<p>Let us deal with a slightly more complicated condition:</p>
<table border="0" cellspacing="5" cellpadding="2">
<tbody>
<tr>
<td style="width: 20px;"></td>
<td style="background-color: #0fa80f;"></td>
<td><span style="font-size: small;"> if there are two dogs with the same name, print &#8220;hello&#8221;</span></td>
</tr>
</tbody>
</table>
<p><br class="spacer_" /></p>
<p>Again, this sentence reflects the way we think. I am now going to show you how to gradually and naturally translate it to F#.</p>
<p>Let us rephrase the sentence as</p>
<table border="0" cellspacing="5" cellpadding="2">
<tbody>
<tr>
<td style="width: 20px;"></td>
<td style="background-color: #0fa80f;"></td>
<td><span style="font-size: small;">if there exist two dogs D1 and D2 such that D1 and D2 have the same name, then print &#8220;hello&#8221;</span></td>
</tr>
</tbody>
</table>
<p><br class="spacer_" /></p>
<p>As you can see, the word &#8220;exist&#8221; highlights two different dogs at once, i.e. a pair of dogs (taken from <em>the set of all pairs of dogs</em>). Translating this sentence in F# would require us to generate all pairs of dogs, in order to pick a pair. Since we do not want to have to do that for now, it is easier to use the logical rule:</p>
<table border="0" cellspacing="5" cellpadding="2">
<tbody>
<tr>
<td style="width: 20px;"></td>
<td style="background-color: #0fa80f;"></td>
<td><span style="font-size: small;">âˆƒx,y: P â‡” âˆƒx: âˆƒy: P</span></td>
</tr>
</tbody>
</table>
<p style="text-align: left;">Â </p>
<p style="text-align: left;">or, in english,</p>
<table border="0" cellspacing="5" cellpadding="2">
<tbody>
<tr>
<td style="width: 20px;"></td>
<td style="background-color: #0fa80f;"></td>
<td><span style="font-size: small;">There exists x and y such that P is true â‡” There exists x such that there exists y such that P is true.</span></td>
</tr>
</tbody>
</table>
<p><br class="spacer_" /></p>
<p>This logical rule allows us to rephrase the sentence in such a way that &#8220;exists&#8221; highlights a single dog. Here is the rewritten sentence:</p>
<table border="0" cellspacing="5" cellpadding="2">
<tbody>
<tr>
<td style="width: 20px;"></td>
<td style="background-color: #0fa80f;"></td>
<td><span style="font-size: small;">if there exists a dog D1 such that there exists another dog D2 such that D1 and D2 have the same name, then print &#8220;hello&#8221;</span></td>
</tr>
</tbody>
</table>
<p><br class="spacer_" /></p>
<p>This sentence is easier to translate to F#. However, we are not done: we have to add a condition expressing something we tend to give for granted, namely the fact that D1 and D2 are <em>different </em>dogs. (Otherwise the above condition will always evaluate to true.) So our sentence becomes:</p>
<table border="0" cellspacing="5" cellpadding="2">
<tbody>
<tr>
<td style="width: 20px;"></td>
<td style="background-color: #0fa80f;"></td>
<td><span style="font-size: small;">If there exists a dog D1 such that there exists a dog D2 such that D1 and D2 have the same name and D1 is different from D2, then print &#8220;hello&#8221;</span></td>
</tr>
</tbody>
</table>
<p><br class="spacer_" /></p>
<p>And we are done. The F# code is almost identical:</p>
<table border="0" cellspacing="5" cellpadding="2">
<tbody>
<tr>
<td style="width: 20px;"></td>
<td style="background-color: #0e42bd;"></td>
<td><span style="font-size: small;">if exists dogs (fun d1 -&gt; exists dogs (fun d2 -&gt; d1.name = d2.name &amp;&amp; d1 &lt;&gt; d2 )) then print &#8220;hello&#8221;.</span></td>
</tr>
</tbody>
</table>
<p><br class="spacer_" /></p>
<p><span style="font-family: 'courier new',courier;">(where the <em>exists </em>function is defined as in the previous episode)<br />
 </span></p>
<p>See you in the next episode!</p>
<p><br class="spacer_" /></p>
<pre>_______</pre>
<table border="0" cellpadding="10">
<tbody>
<tr>
<td><a href="http://www.microsoftstartupzone.com/bsdb/search.aspx?id=3472"><img title="Microsoft Bizspark logo" src="http://tabbles.net/images/BizSparkDB_logo.jpg" alt="Microsoft Bizspark logo" width="120" height="50" /></a></td>
<td><a title="About Yellow blue soft" href="http://www.yellowbluesoft.com">Yellow blue soft</a> is a proudÂ <a title="Tabbles @Microsoft Bizspark" href="http://www.microsoftstartupzone.com/bsdb/search.aspx?id=3472">Microsoft Bizspark partner</a>.Â <a title="Tabbles home" href="http://tabbles.net">Tabbles</a> (our flagship product) is developed entirely in F#, and WPF using Visual Studio 2010.</td>
</tr>
</tbody>
</table>
<p>_______</p>
]]></content:encoded>
			<wfw:commentRss>http://tabbles.net/blog/fsharp-tutorial-how-fsharp-adapts-to-how-we-think-part2/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>How F# adapts to the way we think &#8211; part1</title>
		<link>http://tabbles.net/blog/fsharp-tutorial-how-fsharp-adapts-to-how-we-think-part1/</link>
		<comments>http://tabbles.net/blog/fsharp-tutorial-how-fsharp-adapts-to-how-we-think-part1/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 14:39:12 +0000</pubDate>
		<dc:creator>Seguso</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[dotnet]]></category>
		<category><![CDATA[F sharp]]></category>
		<category><![CDATA[F#]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://tabbles.net/blog/?p=520</guid>
		<description><![CDATA[Programming tutorial on F#: why it adapts to the way we think]]></description>
			<content:encoded><![CDATA[<p>This is the <strong>first episode of a series</strong> meant to show how easily F# adapts to the way we think. I assume no knowledge of functional languages, but I do assume knowledge of an imperative language such as C#.</p>
<p>___</p>
<p>Suppose in your application you want to do the following:</p>
<p style="padding-left: 30px;"><span style="color: #339966;">if there is a dog whose name is jerry, print &#8220;hello&#8221;.</span></p>
<p>This is how we think, i.e. how the original thought forms in our mind. But, in order to implement this thought in ordinary imperative languages (such as C++ or C# before .NET 3), we&#8217;d have to translate it more or less like that:</p>
<pre><span style="color: #0000ff;">for each d in dogs</span></pre>
<pre><span style="color: #0000ff;">   if d.name = jerry then</span></pre>
<pre><span style="color: #0000ff;">      print "hello"</span></pre>
<p>which is not close to the original sentence. As the conditions to write become more complicated, this kind of code tends to become unreadable and unmantainable.</p>
<p><br class="spacer_" /></p>
<p>Let us now see how much more natural it is to express the same idea in F#, and how much closer to the original sentence the F# code is.</p>
<p>In order to translate this to F#, it is useful to slightly rephrase our original thought like that:</p>
<p style="padding-left: 30px;"><span style="color: #339966;">if there is a dog D whose name is jerry, then print &#8220;hello&#8221;.</span></p>
<p>This is closer to F#, but let us rephrase it again slightly:</p>
<p style="padding-left: 30px;"><span style="color: #339966;">if there exists a dog D such that D.name = jerry, then print &#8220;hello&#8221;.</span></p>
<p>now the above is practically F#. In fact, the real F# code is:</p>
<pre style="padding-left: 30px;"><span style="color: #0000ff;">if exists dogs (fun d -&gt; d.name = "jerry") then print "hello"</span></pre>
<p>as you can see, it reads almost the way you think:</p>
<table border="0" cellspacing="10" cellpadding="10">
<tbody>
<tr style="text-align: center;">
<td>
<pre><span style="color: #0000ff;">if</span></pre>
</td>
<td>
<pre><span style="color: #0000ff;">exists</span></pre>
</td>
<td>
<pre><span style="color: #0000ff;">dogs</span></pre>
</td>
<td>
<pre><span style="color: #0000ff;">(fun d</span></pre>
</td>
<td style="text-align: center;">
<pre><span style="color: #0000ff;">-&gt;</span></pre>
</td>
<td>
<pre><span style="color: #0000ff;">d.name = "jerry") then print "hello"</span></pre>
</td>
</tr>
<tr>
<td style="text-align: center;"><span style="color: #339966;">if</span></td>
<td style="text-align: center;"><span style="color: #339966;">there exists</span></td>
<td style="text-align: center;"><span style="color: #339966;">a dog</span></td>
<td style="text-align: center;"><span style="color: #339966;">d</span></td>
<td style="text-align: center;"><span style="color: #339966;">such that</span></td>
<td style="text-align: center;"><span style="color: #339966;">d.name = &#8220;jerry&#8221;) then print &#8220;hello&#8221;</span></td>
</tr>
</tbody>
</table>
<p><br class="spacer_" /></p>
<p><strong>End note:</strong></p>
<p>In the above, the <em>exists </em>function is defined as follows:</p>
<pre style="padding-left: 30px;"><span style="color: #0000ff;">let exists x y = List.exists y x</span></pre>
<pre><span style="color: #0000ff;">
</span></pre>
<p><strong>In the <a title="F Sharp: part 2" href="http://tabbles.net/blog/2010/08/10/fsharp-tutorial-how-fsharp-adapts-to-how-we-think-part2/">next episode</a></strong><strong> I&#8217;ll deal with more complicated (but still very common) sentences and show how naturally they translate to F#.</strong></p>
<pre><span style="color: #000000;">_______</span></pre>
<table style="width: 600px;" border="0" cellpadding="10">
<tbody>
<tr>
<td><a href="http://www.microsoftstartupzone.com/bsdb/search.aspx?id=3472"><img class="alignnone" title="Microsoft Bizspark logo" src="http://tabbles.net/images/BizSparkDB_logo.jpg" alt="Microsoft Bizspark logo" width="120" height="50" /></a></td>
<td><a title="About Yellow blue soft" href="http://www.yellowbluesoft.com">Yellow blue soft</a> is a proud   <a title="Tabbles @Microsoft Bizspark" href="http://www.microsoftstartupzone.com/bsdb/search.aspx?id=3472">Microsoft Bizspark partner</a>.  <a title="Tabbles home" href="http://tabbles.net"><span style="color: #000000; font-size: small;">Tabbles</span></a> (our flagship product) is developed entirely in F#, and WPF using Visual Studio 2010.</td>
</tr>
</tbody>
</table>
<p>_______</p>
]]></content:encoded>
			<wfw:commentRss>http://tabbles.net/blog/fsharp-tutorial-how-fsharp-adapts-to-how-we-think-part1/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>FileSystemWatcher (.net wrapper): doesn&#8217;t work on FAT32 (removable or Samba)</title>
		<link>http://tabbles.net/blog/filesystemwatcher-net-wrapper-doesnt-work-on-fat32/</link>
		<comments>http://tabbles.net/blog/filesystemwatcher-net-wrapper-doesnt-work-on-fat32/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 16:55:33 +0000</pubDate>
		<dc:creator>Andrea</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[Fat32]]></category>
		<category><![CDATA[features]]></category>
		<category><![CDATA[FileSystemWatcher]]></category>
		<category><![CDATA[Leandro]]></category>
		<category><![CDATA[Ntfs]]></category>

		<guid isPermaLink="false">http://tabbles.net/blog/?p=513</guid>
		<description><![CDATA[FileSystemWatcher (.net wrapper): doesn't work on FAT32. The low-level Win32 function has an option to enable the "Fat32 mode"]]></description>
			<content:encoded><![CDATA[<p>HELLO WORLD,</p>
<p>We&#8217;ve always perceived the FileSystemWatcher as &#8220;moody&#8221;, meaning that it would work on some disks and not on some other&#8230; but we couldn&#8217;t quite understand the reasons behind it. It would work on fixed HD but <strong>not always on removable drives</strong>&#8230;</p>
<p>A few days ago we bought 2 of those fantastic mini <a href="http://www.digitus.info/en/products/accessories/?c=1208&amp;p=17380">NAS-adapters</a>, which work indeed fine even if they:</p>
<p>1) Â have an embedded Linux using Samba to manage the sharing.</p>
<p>2) support only FAT32 partitions.</p>
<p>Of course we started testing Tabbles furiously and we immediately started yelling &#8220;OMG, the FileSystemWatcher doesn&#8217;t work on Network drives!&#8221;. The reason of such a panic attack is that our auto-tagging rules and one click-tagging are based on the FileSystemWatcher and Tabbles looses much of its appeal without those.</p>
<p>After a bit of yelling and hair-tearing we googled &#8220;FileSystemWatcher Samba&#8221; until we stumble on this <a title="FileSystemWatcher on Samba" href="http://support.teamdev.com/thread/1986">article</a> suggesting to use the &#8220;Win9xWatcherStrategy class&#8221;&#8230; deeply moved in the heart, Maurizio tries immediately to implement this but soon enough he finds out that the method &#8220;Win9xWatcherStrategy&#8221; doesn&#8217;t exist in the FileSystemWatcherClass. This means that we&#8217;ll probably bin the .net FileSystemWatcher wrapper, and move to the lower-level Win32 function.</p>
<p><strong>For any of you using Tabbles Portable: be aware that for the moment the auto-tagging rules work only if your USB drive is formatted as NTFS</strong>&#8230; sorry for that but we&#8217;ll try to fix this soon!</p>
<p>&#8212;&#8212;</p>
<p>But we also have some good news here: totally out of the blue, Mr. <a title="Leandro on the Tabbles forum" href="http://tabbles.net/forum/leandro-u353.html">Leandro &#8220;O DragÃ£o&#8221;</a> posted on our forum a solution to the annoying problem of Â <a title="FileSystemWatcher blues" href="http://tabbles.net/blog/2010/03/01/goodbye-filesystemwatcher-welcome-full-file-manager-solution/">Tabbles not being able to track files moved with Explorer</a>, have a look at this <a title="Moving files with Explorer" href="http://tabbles.net/forum/move-files-with-tabbles-instead-of-explorer-t231-10.html#p1768">thread</a>. This is among the most exciting thing that happened to us in the past months&#8230;we don&#8217;t really know a lot about it yet, but so far it looks really promising &#8211; Kudos to Leandro! <img src='http://tabbles.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </p>
<div id="attachment_518" class="wp-caption aligncenter" style="width: 266px"><a href="http://tabbles.net/blog/wp-content/uploads/2010/07/mr-burns-picture.jpg" rel="wp-prettyPhoto[g513]"><img class="size-medium wp-image-518" title="Mr. Burns" src="http://tabbles.net/blog/wp-content/uploads/2010/07/mr-burns-picture-256x300.jpg" alt="Mr. Burns" width="256" height="300" /></a><p class="wp-caption-text">Mr. Burns</p></div>
<p style="text-align: center;">(Not sure why, but I believe Mr. Burns would be proud of us!)</p>
<p style="text-align: center;">
<p style="text-align: center;"> <img src='http://tabbles.net/wp-includes/images/smilies/icon_mrgreen.gif' alt=':mrgreen:' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://tabbles.net/blog/filesystemwatcher-net-wrapper-doesnt-work-on-fat32/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Shared-tabbles is in beta</title>
		<link>http://tabbles.net/blog/shared-tabbles-is-in-beta/</link>
		<comments>http://tabbles.net/blog/shared-tabbles-is-in-beta/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 11:03:42 +0000</pubDate>
		<dc:creator>Andrea</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[cool]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[feature]]></category>
		<category><![CDATA[forum]]></category>
		<category><![CDATA[shared tabbles]]></category>
		<category><![CDATA[Tabbles]]></category>

		<guid isPermaLink="false">http://tabbles.net/blog/?p=487</guid>
		<description><![CDATA[The shared-tabbles feature is in beta: download it from our forum! ]]></description>
			<content:encoded><![CDATA[<p>HELLO WORLD</p>
<p>Our most anticipated feature is now available for beta testing. Â This is what it looks like right now:</p>
<div id="attachment_488" class="wp-caption aligncenter" style="width: 310px"><a href="http://tabbles.net/blog/wp-content/uploads/2010/07/t_shared_2.png" rel="wp-prettyPhoto[g487]"><img class="size-medium wp-image-488" title="The shared-tabbles feature is in beta" src="http://tabbles.net/blog/wp-content/uploads/2010/07/t_shared_2-300x265.png" alt="The shared-tabbles feature is in beta" width="300" height="265" /></a><p class="wp-caption-text">The shared-tabbles feature is in beta</p></div>
<h2>Check the <a title="Shared-tabbles thread on the Tabbles forum" href="http://tabbles.net/forum/shared-tabbles-public-beta-t296.html">shared-tabbles thread</a> on the forum (or subscribe via <a title="Feeds of the shared-tabble thread" href="http://tabbles.net/forum/feed.php?f=20&amp;t=296">RSS</a>).</h2>
<p>We&#8217;re looking to hear from as many of you as possible out there! <img src='http://tabbles.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </p>
<p>Andrea &amp; Maurizio</p>
]]></content:encoded>
			<wfw:commentRss>http://tabbles.net/blog/shared-tabbles-is-in-beta/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

