<?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>Hitesh Sarda &#187; TOTW</title>
	<atom:link href="http://hitesh.in/tag/totw/feed/" rel="self" type="application/rss+xml" />
	<link>http://hitesh.in</link>
	<description>Thoughts on life, technology, education and entrepreneurship</description>
	<lastBuildDate>Fri, 30 Dec 2011 06:00:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Text processing options</title>
		<link>http://hitesh.in/2010/text-processing-options/</link>
		<comments>http://hitesh.in/2010/text-processing-options/#comments</comments>
		<pubDate>Sun, 25 Apr 2010 10:54:13 +0000</pubDate>
		<dc:creator>Hitesh</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[lexical-analysis]]></category>
		<category><![CDATA[nltk]]></category>
		<category><![CDATA[regex]]></category>
		<category><![CDATA[TOTW]]></category>

		<guid isPermaLink="false">http://hitesh.in/?p=565</guid>
		<description><![CDATA[The last two weeks, I have been researching options for processing free text. I think I have explored the entire spectrum of possibilities. Below are some notes that I can revisit in a few months and not spend the same &#8230; <a href="http://hitesh.in/2010/text-processing-options/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The last two weeks, I have been researching options for processing free text. I think I have explored the entire spectrum of possibilities. Below are some notes that I can revisit in a few months and not spend the same effort again.</p>
<h3>Background</h3>
<p>I was looking at a way to process auto-generated tweets, like the ones on <a href="http://twitter.com/moneyvidya_com">http://twitter.com/moneyvidya_com</a>. Some sample tweets:</p>
<blockquote>
<ul>
<li>#moneyvidya arunthestocksguru (5 Star rated) says Buy Vijay Shanthi Builders &#8211; 6m (Monday 29 March 2010 @ 09:55 &#8230; <a href="http://bit.ly/bd5JgC">http://bit.ly/bd5JgC</a></li>
<li>#moneyvidya arunthestocksguru (5 Star rated) says Buy Bhagwati Banquets &amp; Hotels &#8211; 6m (Monday 29 March 2010 @ 09&#8230; <a href="http://bit.ly/9MzRDG">http://bit.ly/9MzRDG</a></li>
<li>#moneyvidya NSV (5 Star rated) says Buy ACC &#8211; 6m (Wednesday 24 March 2010 @ 09:55 AM): <a href="http://bit.ly/b5xTrN">http://bit.ly/b5xTrN</a></li>
<li>#moneyvidya justsurjit (5 Star rated) says Sell Sesa Goa &#8211; Intraday (Monday 22 March 2010 @ 10:31 AM): <a href="http://bit.ly/9lLo8U">http://bit.ly/9lLo8U</a></li>
</ul>
</blockquote>
<p>As it is clear, the text follows a specific format, but has its own little variations. I intended to process the &#8216;insights&#8217; and see each expert&#8217;s success rate. Although I never got around actually completing the task, I did learn a lot about text processing.</p>
<h3>Approach</h3>
<h4>The apprentice &#8211; Regular Expressions</h4>
<p>The first approach was the most obvious one &#8211; regular expressions. I am sure RegEx would have addressed the particular task at hand. But the parsing expression would become a convoluted mess very soon. So I started looking for better alternatives.</p>
<h4>The strict teacher &#8211; Lexical Analysis</h4>
<p>Lexical analysis starts where regular expression give up. This also needs pretty strict rules on the allowed input text, but the rules could be a lot more flexible and easy to comprehend.</p>
<p>I especially enjoyed using <a href="http://irony.codeplex.com/" target="_blank">Irony</a>, which makes it trivial to convert <a href="http://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form" target="_blank">BNF</a> formed rules to C# code. There is a good gentle introduction to <a href="http://www.codeproject.com/KB/recipes/YourFirstDSL.aspx" target="_blank">lexical analysis using Irony</a> on code project.</p>
<h4>The guru &#8211; Natural Language Processing</h4>
<p>Processing test using tools like <a href="http://www.nltk.org/" target="_blank">NLTK</a>, allows you to parse and understand any unstructured text and understand it. Although this gives you maximum freedom, it also needs a lot of work to get right. For this to produce good results, be sure you have lots of data to be able to tweak and test your implementation. I guess this is the reason Google and co., can do so much better at translation, since they have huge data available for improving.</p>
<h3>Conclusions</h3>
<p>I don&#8217;t have one <img src='http://hitesh.in/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . I guess, there are several ways to solve a problem, and half the solution is to identify the best way to solve the given problem. As for me, it was a good learning exercise and may come in handy if I ever write a DSL.</p>
]]></content:encoded>
			<wfw:commentRss>http://hitesh.in/2010/text-processing-options/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The great runtime shootout</title>
		<link>http://hitesh.in/2009/the-great-runtime-shootout/</link>
		<comments>http://hitesh.in/2009/the-great-runtime-shootout/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 21:32:58 +0000</pubDate>
		<dc:creator>Hitesh</dc:creator>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Boo]]></category>
		<category><![CDATA[CLI]]></category>
		<category><![CDATA[CLR]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JVM]]></category>
		<category><![CDATA[TOTW]]></category>

		<guid isPermaLink="false">http://hitesh.in/?p=196</guid>
		<description><![CDATA[It is becoming more and more obvious that there are just two runtimes left to execute code, the Java Virtual Machine (JVM) and the Common Language Infrastructure (CLI). So, I decided to see how they stack up. Looks like both &#8230; <a href="http://hitesh.in/2009/the-great-runtime-shootout/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It is becoming more and more obvious that there are just two runtimes left to execute code, the <em>Java Virtual Machine</em> (JVM) and the <em>Common Language Infrastructure</em> (CLI). So, I decided to see how they stack up. Looks like both environments have something for everyone.</p>
<p>Here is a list of programming languages available on these runtimes.</p>
<p><a href="http://hitesh.in/wp-content/uploads/2009/08/slide0001_image001_thumb.png"><img style="display: inline; border: 0px initial initial;" title="JVM vs. CLR" src="http://hitesh.in/wp-content/uploads/2009/08/slide0001_image001_thumb.png" border="0" alt="JVM vs CLI" width="650" height="518" /></a></p>
<ol>
<li>Can run on CLI using IKVM.NET</li>
<li>Can run on JVM using Mainsoft solution</li>
<li>Not yet usable</li>
<li>Can run on CLR, but is behind the JVM implementation</li>
</ol>
<p>The main reason for the research was to identify a new language I should pick-up. I looked at Python and Ruby, but both have some sore thumbs that I just can&#8217;t stand. I really liked Boo and Groovy; they are similar to C#/Java in syntax and incorporate the good things from Python. Although I like Boo&#8217;s syntax and approach more than Groovy, Groovy has a more mature implementation and ecosystem. I will try to use Groovy for some hobby project and get a feel to things.</p>
]]></content:encoded>
			<wfw:commentRss>http://hitesh.in/2009/the-great-runtime-shootout/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Playing with Small Basic</title>
		<link>http://hitesh.in/2009/playing-with-small-basic/</link>
		<comments>http://hitesh.in/2009/playing-with-small-basic/#comments</comments>
		<pubDate>Sun, 05 Jul 2009 04:58:01 +0000</pubDate>
		<dc:creator>Hitesh</dc:creator>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[smallbasic]]></category>
		<category><![CDATA[TOTW]]></category>

		<guid isPermaLink="false">http://hitesh.in/?p=104</guid>
		<description><![CDATA[Yesterday I stumbled upon SmallBasic, while looking for something else. It is an interesting little project by Microsoft to create an entry level language to teach programming. It is a mix of toned down BASIC and Logo. Since the language &#8230; <a href="http://hitesh.in/2009/playing-with-small-basic/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Yesterday I stumbled upon <a href="http://www.smallbasic.com/" target="_blank">SmallBasic</a>, while looking for something else. It is an interesting little project by Microsoft to create an entry level language to teach programming. It is a mix of toned down <a href="http://en.wikipedia.org/wiki/BASIC" target="_blank">BASIC</a> and <a href="http://en.wikipedia.org/wiki/Logo_%28programming_language%29" target="_blank">Logo</a>. Since the language (or is it an application) is still in infancy, <a href="http://blogs.msdn.com/smallbasic/archive/2009/06/16/the-newest-leanest-and-the-meanest-is-here.aspx" target="_blank">version 0.5 released recently</a>, I will try not to be too harsh on it.</p>
<h4>Sample program with obligatory screenshot</h4>
<h6>Showing Flickr Image</h6>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum1">   1:</span> url = Flickr<span style="color: #cc6633">.GetPictureOfMoment</span>()</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum2">   2:</span> <span style="color: #0000ff">img</span> = ImageList<span style="color: #cc6633">.LoadImage</span>(url) </pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum3">   3:</span> GraphicsWindow<span style="color: #cc6633">.Title</span> = url </pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum4">   4:</span> GraphicsWindow<span style="color: #cc6633">.DrawImage</span>(<span style="color: #0000ff">img</span>,0,0) </pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum5">   5:</span> GraphicsWindow<span style="color: #cc6633">.Height</span> = ImageList<span style="color: #cc6633">.GetHeightOfImage</span>(<span style="color: #0000ff">img</span>) </pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum6">   6:</span> GraphicsWindow<span style="color: #cc6633">.Width</span> = ImageList<span style="color: #cc6633">.GetWidthOfImage</span>(<span style="color: #0000ff">img</span>)</pre>
<p><!--CRLF--></div>
</div>
<p><a href="http://hitesh.in/wp-content/uploads/2009/07/image.png"><img title="small basic" border="0" alt="image" src="http://hitesh.in/wp-content/uploads/2009/07/image_thumb.png" width="587" height="484" /></a></p>
<h4>The Good:</h4>
</p>
<p><span id="more-104"></span></p>
<ul>
<li>The interface is toy like and very simple. Will surely win favours with 10 year olds.<a href="http://hitesh.in/wp-content/uploads/2009/07/image1.png"><img title="Small Basic Window" border="0" alt="image" src="http://hitesh.in/wp-content/uploads/2009/07/image_thumb1.png" width="557" height="484" /></a> </li>
<li>The limited with just 15 keywords is good too. </li>
<li>The learner does not need to initialise variables, there is no <code>new</code>. </li>
<li>No variable scopes, everything is global. </li>
<li>Before you think it will bring forth another set of programmers, like the much maligned VB programmers, remember this is for 10 yr olds. </li>
<li>In general, it feels light weight and fast. </li>
</ul>
<h4>The Bad</h4>
<ul>
<li>The application itself depends on .NET 3.5 which still does not have a large installed base. </li>
<li>For sake of simplicity, all libraries are more or less global objects. This approach might not scale when more libraries are added. </li>
<li>The turtle is non-interactive and verbose. How I long for the good old code which went something like: </li>
</ul>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum1">   1:</span> FD 100 </pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum2">   2:</span> RT 90 </pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum3">   3:</span> REPEAT 4</pre>
<p><!--CRLF--></div>
</div>
<ul>
<li>Same application in SmallBasic: </li>
</ul>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum1">   1:</span> <span style="color: #0000ff">For</span> i=1 <span style="color: #0000ff">To</span> 4</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum2">   2:</span> Turtle.Move(100) </pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum3">   3:</span> Turtle.TurnRight() </pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum4">   4:</span> EndFor</pre>
<p><!--CRLF--></div>
</div>
<ul>
<li>The result: </li>
<li><a href="http://hitesh.in/wp-content/uploads/2009/07/image2.png"><img title="Output of Logo square" border="0" alt="Output of Logo square" src="http://hitesh.in/wp-content/uploads/2009/07/image_thumb2.png" width="139" height="162" /></a>
<p><em>Notice there is no area to type the next command, all commands to turtle have to be specified upfront.</em> </li>
</ul>
<h4>The Ugly</h4>
<ul>
<li>The syntax is very ugly. Why the curly brackets? </li>
</ul>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum1">   1:</span> <span style="color: #008000">'You need the curly brackets for all function calls.</span></pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum2">   2:</span> GraphicsWindow.Show() </pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum3">   3:</span> <span style="color: #008000">'Why not drop the brackets for zero argument functions?</span></pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum4">   4:</span> GraphicsWindow.Show </pre>
<p><!--CRLF--></div>
</div>
<ul>
<li>The current syntax forces the learner to understand the different between a property and a function. Completely unimportant for the target audience. </li>
<li>To add to that it is not consistent, you still have a few functions that have a property pattern (GetSomething, SetSomething) </li>
<li>What would look better, VB.NET style or a mix of original BASIC and ruby? </li>
</ul>
<h4>Conclusion</h4>
<p>I really dig for anything related to teaching programming to children. Although my daughter is too young to program, I draw from my experiences of learning programming. I, like countless others, was introduced to BASIC and Logo as the first programming language. But I was not interested in adding 2 numbers or drawing a square. I became interested in programming when I was introduced to dBase III (remember it?). When I found I could save and retrieve data and manipulate it, I was sold.</p>
<p>Similarly, I think, today&#8217;s internet generation might be sold on network based interactivity. SmallBasic takes initial steps in that direction by having a Network object and a Flickr object. This will be a good direction to pursue and add more libraries for APIs from other web apps. <a href="http://hacketyhack.net/" target="_blank">Hackety Hack</a> approach, I guess.</p>
<p>The other thing interesting to this generation is gaming and multimedia. Although <a href="http://scratch.mit.edu/" target="_blank">Scratch</a>, <a href="http://www.alice.org/" target="_blank">Alice</a>, <a href="http://www.phunland.com/wiki/Home" target="_blank">Phun</a> and others like <a href="http://phrogram.com/Default.aspx" target="_blank">Phrogram</a> are filling that need, a few libraries towards that end (animations, effects, sound, video), will not hurt at all.</p>
<p>In conclusion, I think this is a very interesting start, but needs to cover much ground, while remaining true to the promise of simplicity.</p>
]]></content:encoded>
			<wfw:commentRss>http://hitesh.in/2009/playing-with-small-basic/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Javafx 1.2 &#8211; First impressions</title>
		<link>http://hitesh.in/2009/javafx-first-impressions/</link>
		<comments>http://hitesh.in/2009/javafx-first-impressions/#comments</comments>
		<pubDate>Sat, 13 Jun 2009 11:43:10 +0000</pubDate>
		<dc:creator>Hitesh</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[javafx]]></category>
		<category><![CDATA[TOTW]]></category>

		<guid isPermaLink="false">http://www.hitesh.in/?p=25</guid>
		<description><![CDATA[Spent the last couple of days looking at Javafx, Sun&#8217;s response to Silverlight and Flex. It is an interesting mix of ideas. Clearly inspired by dynamic languages as well as Silverlight. Maybe Flex as well, but I couldn&#8217;t tell as &#8230; <a href="http://hitesh.in/2009/javafx-first-impressions/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Spent the last couple of days looking at Javafx, Sun&#8217;s response to Silverlight and Flex. It is an interesting mix of ideas. Clearly inspired by dynamic languages as well as Silverlight. Maybe Flex as well, but I couldn&#8217;t tell as I have not tried Flex.</p>
<h6>Things I liked:</h6>
<ul>
<li><strong>Type inference</strong>: Could have been better, but I will take this any day over the verbose Java alternate</li>
<li><strong>Binding</strong>: In fact this is a great thing. Two way binding and binding with expression.</li>
<li><strong>Triggers</strong>: Need to explore more, but shows promise.</li>
<li><strong>Timelines</strong>: This along with the exceptional support for multimedia will help in creating the next killer app.</li>
<li><strong>Collections</strong>: You can iterate over collections in SQL like syntax which,to me, looks better than LINQ.</li>
<li><strong>Strings and Dates</strong>: Finally they get treated with the respect they deserve, since most of the time one is juggling text and dates.</li>
</ul>
<h6>Things I am meh about:</h6>
<ul>
<li><strong>Declarative UI design</strong>: I believe UI design is best left to designers (software not people)</li>
<li><strong>Using all the available brackets</strong>: All examples look like they have used up every possible punctuation mark
<pre>:,=,{},[],(),;</pre>
</li>
<li><strong>Init vs. assignment</strong>: The ambiguity on where to use a <em>variable : value</em> and where to use a <em>variable = value</em></li>
</ul>
<p>Overall looks good and I am going to spend some time learning the innards of Javafx.</p>
<p>Finally, what I will like to see guidance on how patterns will evolve to address this new form of development. I immediately see a lot of older patterns not longer needed like Singleton, Visitor Pattern, Lazy Loading, Thread Pool Pattern, Observer Pattern and more. Similarly we need to recalibrate a few like the MVC, MVP patterns.</p>
]]></content:encoded>
			<wfw:commentRss>http://hitesh.in/2009/javafx-first-impressions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

