<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Angel \"Java\" Lopez on Blog</title>
	<atom:link href="http://ajlopez.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://ajlopez.wordpress.com</link>
	<description>Software Development, in the Third Millenium</description>
	<lastBuildDate>Tue, 21 May 2013 20:28:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='ajlopez.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Angel \"Java\" Lopez on Blog</title>
		<link>http://ajlopez.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://ajlopez.wordpress.com/osd.xml" title="Angel \&#34;Java\&#34; Lopez on Blog" />
	<atom:link rel='hub' href='http://ajlopez.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Domain-Specific Languages: Links, News And Resources (3)</title>
		<link>http://ajlopez.wordpress.com/2013/05/13/domain-specific-languages-links-news-and-resources-3/</link>
		<comments>http://ajlopez.wordpress.com/2013/05/13/domain-specific-languages-links-news-and-resources-3/#comments</comments>
		<pubDate>Mon, 13 May 2013 10:58:44 +0000</pubDate>
		<dc:creator>ajlopez</dc:creator>
				<category><![CDATA[Domain-Specific Languages]]></category>
		<category><![CDATA[Links]]></category>
		<category><![CDATA[Programming Languages]]></category>

		<guid isPermaLink="false">https://ajlopez.wordpress.com/?p=1082</guid>
		<description><![CDATA[Previous Post Domain-Specific Languages, implemented in different languages. dsl &#8211; Mini-languages in Python &#8211; Stack Overflow http://stackoverflow.com/questions/1547782/mini-languages-in-python Creating Domain Specific Languages in Python http://www.slideshare.net/Siddhi/creating-domain-specific-languages-in-python Building Your Own Java, Part 2 http://www.infoq.com/presentations/JetBrains-MPS-DSL-2 Alex Shatalin and Václav Pech continue their language building demo using JetBrains MPS started in Part 1 of this presentations (see “Building Your Own [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ajlopez.wordpress.com&#038;blog=378226&#038;post=1082&#038;subd=ajlopez&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><a href="http://ajlopez.wordpress.com/2012/05/10/domain-specific-languages-links-news-and-resources-2/">Previous Post</a></p>
<p>Domain-Specific Languages, implemented in different languages.</p>
<p>dsl &#8211; Mini-languages in Python &#8211; Stack Overflow   <br /><a href="http://stackoverflow.com/questions/1547782/mini-languages-in-python">http://stackoverflow.com/questions/1547782/mini-languages-in-python</a></p>
<p>Creating Domain Specific Languages in Python   <br /><a href="http://www.slideshare.net/Siddhi/creating-domain-specific-languages-in-python">http://www.slideshare.net/Siddhi/creating-domain-specific-languages-in-python</a></p>
<p>Building Your Own Java, Part 2   <br /><a href="http://www.infoq.com/presentations/JetBrains-MPS-DSL-2">http://www.infoq.com/presentations/JetBrains-MPS-DSL-2</a>    <br />Alex Shatalin and Václav Pech continue their language building demo using JetBrains MPS started in Part 1 of this presentations (see “Building Your Own Java, Part 1” on InfoQ). </p>
<p>DSLs in Clojure   <br /><a href="http://www.infoq.com/presentations/DSL-Clojure">http://www.infoq.com/presentations/DSL-Clojure</a></p>
<p>Building Your Own Java, Part 1   <br /><a href="http://www.infoq.com/presentations/JetBrains-MPS-DSL">http://www.infoq.com/presentations/JetBrains-MPS-DSL</a>    <br />Alex Shatalin and Václav Pech hold a hands on demonstration on using JetBrains MPS to generate a new language, including version control, debugging, testing, refactoring, etc. </p>
<p>Mission: Impossible–Purely Declarative User Interface Modeling   <br /><a href="http://www.infoq.com/presentations/S4-Declarative-DSL-UI">http://www.infoq.com/presentations/S4-Declarative-DSL-UI</a></p>
<p>A DSL for Scripting Refactoring in Erlang   <br /><a href="http://www.infoq.com/presentations/Wrangler-Refactoring-Erlang">http://www.infoq.com/presentations/Wrangler-Refactoring-Erlang</a></p>
<p>Webr-DNQ &#8211; Web Application Development with Pleasure   <br /><a href="http://www.infoq.com/presentations/Webr-DNQ">http://www.infoq.com/presentations/Webr-DNQ</a>    <br />Maxim Mazin and Evgenii Schepotiev discuss the advantages of using DSLs by exemplifying application development with JetBrains MPS (Meta Programming System) and the Webr-DNQ framework. </p>
<p>Emulating &quot;self types&quot; using Java Generics to simplify fluent API implementation | Passion For Code   <br /><a href="http://passion.forco.de/content/emulating-self-types-using-java-generics-simplify-fluent-api-implementation">http://passion.forco.de/content/emulating-self-types-using-java-generics-simplify-fluent-api-implementation</a></p>
<p>dlitvakb/deklarativna   <br /><a href="https://github.com/dlitvakb/deklarativna">https://github.com/dlitvakb/deklarativna</a>    <br />A Declarative HTML DSL for Ruby </p>
<p>clojure @ runa :: dynamic pricing through DSLs   <br /><a href="http://www.infoq.com/presentations/clojure-runa-dynamic-pricing-through-DSLs">http://www.infoq.com/presentations/clojure-runa-dynamic-pricing-through-DSLs</a>    <br />Domain Model &#8211; Reference Guide 4.0 &#8211; Mendix Community Platform    <br /><a href="https://world.mendix.com/display/refguide4/Domain+Model">https://world.mendix.com/display/refguide4/Domain+Model</a></p>
<p>Petter&#8217;s Random Thoughts on Software: DSL&#8217;s, UIX and Agile Development, Lessons Learned   <br /><a href="http://pettergraff.blogspot.it/2012/05/overview-over-last-8-months-ive-been.html">http://pettergraff.blogspot.it/2012/05/overview-over-last-8-months-ive-been.html</a></p>
<p>cgrand/parsley   <br /><a href="https://github.com/cgrand/parsley">https://github.com/cgrand/parsley</a>    <br />A DSL for creating total and truly incremental parsers in Clojure </p>
<p>InfoQ: How to Integrate Models And Code   <br /><a href="http://www.infoq.com/articles/combining-model-and-code">http://www.infoq.com/articles/combining-model-and-code</a></p>
<p>My Links   <br /><a href="http://delicious.com/ajlopez/dsl">http://delicious.com/ajlopez/dsl</a></p>
<p>Keep tuned!</p>
<p>Angel “Java” Lopez   <br /><a href="http://www.ajlopez.com">http://www.ajlopez.com</a>    <br /><a href="http://twitter.com/ajlopez">http://twitter.com/ajlopez</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ajlopez.wordpress.com/1082/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ajlopez.wordpress.com/1082/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ajlopez.wordpress.com&#038;blog=378226&#038;post=1082&#038;subd=ajlopez&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ajlopez.wordpress.com/2013/05/13/domain-specific-languages-links-news-and-resources-3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/086e1ed94cfc99c62fa27525e69b1a3b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ajlopez</media:title>
		</media:content>
	</item>
		<item>
		<title>Express: Links, News And Resources (3)</title>
		<link>http://ajlopez.wordpress.com/2013/05/11/express-links-news-and-resources-3/</link>
		<comments>http://ajlopez.wordpress.com/2013/05/11/express-links-news-and-resources-3/#comments</comments>
		<pubDate>Sat, 11 May 2013 10:45:00 +0000</pubDate>
		<dc:creator>ajlopez</dc:creator>
				<category><![CDATA[Express]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Links]]></category>
		<category><![CDATA[NodeJs]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">https://ajlopez.wordpress.com/?p=1079</guid>
		<description><![CDATA[Previous Post A third entry with links about Express, the “standard” Node.js web framework. Simple Screenshot https://github.com/visionmedia/screenshot-app simple screenshot application &#38; web service powered by Express, Redis, node-canvas, palette, and PhantomJS. Khelldar/Angular-Express-Train-Seed · GitHub https://github.com/Khelldar/Angular-Express-Train-Seed A starting point for making an AngularJS app with node.js on the back end, using the Express Train framework Modular [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ajlopez.wordpress.com&#038;blog=378226&#038;post=1079&#038;subd=ajlopez&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><a href="http://ajlopez.wordpress.com/2012/11/02/express-links-news-and-resources-2/">Previous Post</a></p>
<p>A third entry with links about Express, the “standard” Node.js web framework.</p>
<p>Simple Screenshot   <br /><a href="https://github.com/visionmedia/screenshot-app">https://github.com/visionmedia/screenshot-app</a>    <br />simple screenshot application &amp; web service powered by Express, Redis, node-canvas, palette, and PhantomJS. </p>
<p>Khelldar/Angular-Express-Train-Seed · GitHub   <br /><a href="https://github.com/Khelldar/Angular-Express-Train-Seed">https://github.com/Khelldar/Angular-Express-Train-Seed</a>    <br />A starting point for making an AngularJS app with node.js on the back end, using the Express Train framework </p>
<p>Modular web applications with Node.js and Express on Vimeo   <br /><a href="http://vimeo.com/56166857">http://vimeo.com/56166857</a>    <br />This short screencast describes how you can use Express&#8217; app mounting feature to create modular self-contained applications to construct your product.    <br />By <a href="http://twitter.com/tjholowaychuk">@tjholowaychuk</a>, Express author </p>
<p>node-money &#8211; Cloud9   <br /><a href="https://c9.io/renatoargh/node-money">https://c9.io/renatoargh/node-money</a>    <br />Sample app with access control </p>
<p>Structuring a node.js web application with Express | Gama &amp; Ferraz   <br /><a href="http://zeppelin-ci.org/structuring-a-node-js-web-application-with-express/">http://zeppelin-ci.org/structuring-a-node-js-web-application-with-express/</a>    <br />Explain node-money example </p>
<p>thinkphp/express-basic · GitHub   <br /><a href="https://github.com/thinkphp/express-basic">https://github.com/thinkphp/express-basic</a>    <br />A simple Website on Node.js with Express, Jade and Stylus deploying on Heroku </p>
<p>jesusabdullah/node-ecstatic · GitHub   <br /><a href="https://github.com/jesusabdullah/node-ecstatic">https://github.com/jesusabdullah/node-ecstatic</a>    <br />A simple static file server middleware that works with both Express and Flatiron </p>
<p>node-home-automation &#8211; Node.js based home automation server application &#8211; Google Project Hosting   <br /><a href="http://code.google.com/p/node-home-automation/">http://code.google.com/p/node-home-automation/</a></p>
<p>astalker/nblog · GitHub   <br /><a href="https://github.com/astalker/nblog">https://github.com/astalker/nblog</a>    <br />A Simple CMS module for Node Js using Express, EJS and Mongo </p>
<p>genem   <br /><a href="https://github.com/madhums/node-genem">https://github.com/madhums/node-genem</a>    <br />A MVC generator for node.js (uses express, mongoose, jade and passport.js) </p>
<p>How an Event Loop works « Matt&#8217;s Hacking Blog   <br /><a href="http://baudehlo.wordpress.com/2013/02/14/how-an-event-loop-works/">http://baudehlo.wordpress.com/2013/02/14/how-an-event-loop-works/</a></p>
<p>Cross-domain AJAX, Express.js and Access-Control-Allow-Origin &#8211; /var/blog &#8211; John Roepke &#8211; Boston Area Web and Open Source Software Developer   <br /><a href="http://john.sh/blog/2011/6/30/cross-domain-ajax-expressjs-and-access-control-allow-origin.html">http://john.sh/blog/2011/6/30/cross-domain-ajax-expressjs-and-access-control-allow-origin.html</a></p>
<p>anddimario/mucontent · GitHub   <br /><a href="https://github.com/anddimario/mucontent">https://github.com/anddimario/mucontent</a>    <br />MuContent &#8211; CMS based on ExpressJs for create multisite, multilanguage and modular web application with Node.Js </p>
<p>mdalpi/battleship-node · GitHub   <br /><a href="https://github.com/mdalpi/battleship-node">https://github.com/mdalpi/battleship-node</a>    <br />Battleship Game with chat support written in Node.JS </p>
<p>smurthas/gdata-js · GitHub   <br /><a href="https://github.com/smurthas/gdata-js">https://github.com/smurthas/gdata-js</a>    <br />Simple Google Data API client for OAuth 2.0 </p>
<p>agrueneberg/Corser · GitHub   <br /><a href="https://github.com/agrueneberg/Corser">https://github.com/agrueneberg/Corser</a>    <br />A highly configurable, middleware compatible implementation of CORS for Node.js. </p>
<p>express.js middleware to support CORS pre-flight requests   <br /><a href="https://gist.github.com/2344435">https://gist.github.com/2344435</a></p>
<p>jawerty/Node2Blog · GitHub   <br /><a href="https://github.com/jawerty/node2blog">https://github.com/jawerty/node2blog</a>    <br />A simple and easy to setup node.js blog template. For the casual blogger </p>
<p>http &#8211; Extracting POST data with Express &#8211; Stack Overflow   <br /><a href="http://stackoverflow.com/questions/11002046/extracting-post-data-with-express/14125262#14125262">http://stackoverflow.com/questions/11002046/extracting-post-data-with-express/14125262#14125262</a></p>
<p>express.io &#8211; realtime-web framework for nodejs   <br /><a href="http://express-io.org/">http://express-io.org/</a></p>
<p>My Links   <br /><a href="http://delicious.com/ajlopez/express">http://delicious.com/ajlopez/express</a></p>
<p>Keep tuned!</p>
<p>Angel “Java” Lopez   <br /><a href="http://www.ajlopez.com">http://www.ajlopez.com</a>    <br /><a href="http://twitter.com/ajlopez">http://twitter.com/ajlopez</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ajlopez.wordpress.com/1079/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ajlopez.wordpress.com/1079/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ajlopez.wordpress.com&#038;blog=378226&#038;post=1079&#038;subd=ajlopez&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ajlopez.wordpress.com/2013/05/11/express-links-news-and-resources-3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/086e1ed94cfc99c62fa27525e69b1a3b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ajlopez</media:title>
		</media:content>
	</item>
		<item>
		<title>TDD Kata (4): Lawnmover</title>
		<link>http://ajlopez.wordpress.com/2013/05/10/tdd-kata-4-lawnmover/</link>
		<comments>http://ajlopez.wordpress.com/2013/05/10/tdd-kata-4-lawnmover/#comments</comments>
		<pubDate>Fri, 10 May 2013 09:52:32 +0000</pubDate>
		<dc:creator>ajlopez</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Agile Software Devevelopment]]></category>
		<category><![CDATA[C Sharp]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Test-Driven Development]]></category>

		<guid isPermaLink="false">https://ajlopez.wordpress.com/?p=1075</guid>
		<description><![CDATA[Previous Post In the previous post, I commented about by experience at pre-round at Google Code Jam. The exercise B was Lawnmover: https://code.google.com/codejam/contest/2270488/dashboard#s=p1 Problem Alice and Bob have a lawn in front of their house, shaped like an N metre by M metre rectangle. Each year, they try to cut the lawn in some interesting [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ajlopez.wordpress.com&#038;blog=378226&#038;post=1075&#038;subd=ajlopez&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><a href="http://ajlopez.wordpress.com/2013/05/08/tdd-kata-3-tatet-237-tomek/">Previous Post</a></p>
<p>In the previous post, I commented about by experience at pre-round at <a href="https://code.google.com/codejam">Google Code Jam</a>.</p>
<p>The exercise B was Lawnmover:</p>
<p><a title="https://code.google.com/codejam/contest/2270488/dashboard#s=p1" href="https://code.google.com/codejam/contest/2270488/dashboard#s=p1">https://code.google.com/codejam/contest/2270488/dashboard#s=p1</a></p>
<blockquote><p>Problem</p>
<p>Alice and Bob have a lawn in front of their house, shaped like an N metre by M metre rectangle. Each year, they try to cut the lawn in some interesting pattern. They used to do their cutting with shears, which was very time-consuming; but now they have a new automatic lawnmower with multiple settings, and they want to try it out.</p>
<p>The new lawnmower has a height setting &#8211; you can set it to any height h between 1 and 100 millimetres, and it will cut all the grass higher than h it encounters to height h. You run it by entering the lawn at any part of the edge of the lawn; then the lawnmower goes in a straight line, perpendicular to the edge of the lawn it entered, cutting grass in a swath 1m wide, until it exits the lawn on the other side. The lawnmower&#8217;s height can be set only when it is not on the lawn.</p>
<p>Alice and Bob have a number of various patterns of grass that they could have on their lawn. For each of those, they want to know whether it&#8217;s possible to cut the grass into this pattern with their new lawnmower. Each pattern is described by specifying the height of the grass on each 1m x 1m square of the lawn.</p>
<p>The grass is initially 100mm high on the whole lawn.</p></blockquote>
<p>I solved it, see:</p>
<p><a href="https://github.com/ajlopez/TddOnTheRocks/tree/master/Lawnmover">https://github.com/ajlopez/TddOnTheRocks/tree/master/Lawnmover</a></p>
<p>As usual, the commit history by test:</p>
<p><a href="https://github.com/ajlopez/TddOnTheRocks/commits/master/Lawnmover">https://github.com/ajlopez/TddOnTheRocks/commits/master/Lawnmover</a></p>
<p>I could solve the first small set provided by Google. But I failed with the big set, because my algorithm was not efficient enough. The big set should be solved in 8 minutes, and if you cannot, there is no other chance. My initial algorithm (see comments) attacked the largest number in cells. My second algorithm switched to start with the minimal numbers (my first guess was that both algorithms had the same time, but I was wrong). I learnt: some problems in Google are hard to test by hand, we don’t have the use case (input and expected output), that is the main difficult.</p>
<p>More katas are comming.</p>
<p>Keep tuned!</p>
<p>Angel “Java” Lopez<br />
<a href="http://www.ajlopez.com">http://www.ajlopez.com</a><br />
<a href="http://twitter.com/ajlopez">http://twitter.com/ajlopez</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ajlopez.wordpress.com/1075/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ajlopez.wordpress.com/1075/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ajlopez.wordpress.com&#038;blog=378226&#038;post=1075&#038;subd=ajlopez&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ajlopez.wordpress.com/2013/05/10/tdd-kata-4-lawnmover/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/086e1ed94cfc99c62fa27525e69b1a3b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ajlopez</media:title>
		</media:content>
	</item>
		<item>
		<title>TDD Kata (3): Tic-Tac-Toe-Tomek</title>
		<link>http://ajlopez.wordpress.com/2013/05/08/tdd-kata-3-tatet-237-tomek/</link>
		<comments>http://ajlopez.wordpress.com/2013/05/08/tdd-kata-3-tatet-237-tomek/#comments</comments>
		<pubDate>Wed, 08 May 2013 13:42:00 +0000</pubDate>
		<dc:creator>ajlopez</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Agile Software Devevelopment]]></category>
		<category><![CDATA[C Sharp]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Test-Driven Development]]></category>

		<guid isPermaLink="false">https://ajlopez.wordpress.com/?p=1070</guid>
		<description><![CDATA[Previous Post Next Post Two weeks ago, I participated of the pre round of Google Code Jam. Exercise A was TicTacToeTomek: https://code.google.com/codejam/contest/2270488/dashboard Problem Tic-Tac-Toe-Tomek is a game played on a 4 x 4 square board. The board starts empty, except that a single &#8216;T&#8217; symbol may appear in one of the 16 squares. There are [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ajlopez.wordpress.com&#038;blog=378226&#038;post=1070&#038;subd=ajlopez&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><a href="http://ajlopez.wordpress.com/2013/05/06/tdd-kata-2-lenguaje-alien-237-gena/">Previous Post</a><br />
<a href="http://ajlopez.wordpress.com/2013/05/10/tdd-kata-4-lawnmover/">Next Post</a></p>
<p>Two weeks ago, I participated of the pre round of Google Code Jam. Exercise A was TicTacToeTomek:</p>
<p><a href="https://code.google.com/codejam/contest/2270488/dashboard">https://code.google.com/codejam/contest/2270488/dashboard</a></p>
<blockquote>
<h5>Problem</h5>
<p>Tic-Tac-Toe-Tomek is a game played on a 4 x 4 square board. The board starts empty, except that a single &#8216;T&#8217; symbol may appear in one of the 16 squares. There are two players: X and O. They take turns to make moves, with X starting. In each move a player puts her symbol in one of the empty squares. Player X&#8217;s symbol is &#8216;X&#8217;, and player O&#8217;s symbol is &#8216;O&#8217;.</p>
<p>After a player&#8217;s move, if there is a row, column or a diagonal containing 4 of that player&#8217;s symbols, or containing 3 of her symbols and the &#8216;T&#8217; symbol, she wins and the game ends. Otherwise the game continues with the other player&#8217;s move. If all of the fields are filled with symbols and nobody won, the game ends in a draw. See the sample input for examples of various winning positions.</p>
<p>Given a 4 x 4 board description containing &#8216;X&#8217;, &#8216;O&#8217;, &#8216;T&#8217; and &#8216;.&#8217; characters (where &#8216;.&#8217; represents an empty square), describing the current state of a game, determine the status of the Tic-Tac-Toe-Tomek game going on. The statuses to choose from are:</p>
<ul>
<li>&#8220;X won&#8221; (the game is over, and X won)</li>
<li>&#8220;O won&#8221; (the game is over, and O won)</li>
<li>&#8220;Draw&#8221; (the game is over, and it ended in a draw)</li>
<li>&#8220;Game has not completed&#8221; (the game is not over yet)</li>
</ul>
<p>If there are empty cells, and the game is not over, you should output &#8220;Game has not completed&#8221;, even if the outcome of the game is inevitable.</p></blockquote>
<p>An input file can be downloaded with different board positions, and our program should generate an output file with the results: X won, O won, tie, or the game is not finished, yet.</p>
<p>I wrote my solution using TDD, you can see the result at:</p>
<p><a href="https://github.com/ajlopez/TddOnTheRocks/tree/master/TicTacToeTomek">https://github.com/ajlopez/TddOnTheRocks/tree/master/TicTacToeTomek</a></p>
<p>The commit history, with test granularity:</p>
<p><a href="https://github.com/ajlopez/TddOnTheRocks/commits/master/TicTacToeTomek">https://github.com/ajlopez/TddOnTheRocks/commits/master/TicTacToeTomek</a></p>
<p>It was a simple exercise, and well adapted to TDD. Google accepted my solution to a small input file, and to a big one too. I should write about the other exercises (B, C, D) that are a bit more complicated for TDD:</p>
<p>- Each problem should be solved quickly. With TDD, you could implement an algorithm but it could be not efficient.</p>
<p>- The algorithm to implement is not evident, and you should write the increasing difficult input cases.</p>
<p>- Sometimes, given an input state, it is hard to reach (even by hand) a right output solution. Many of my attempts were rejected by Google, without much info about what is the right solution, so you must review manually each result.</p>
<p>Keep tuned!</p>
<p>Angel “Java” Lopez<br />
<a href="http://www.ajlopez.com">http://www.ajlopez.com</a><br />
<a href="http://twitter.com/ajlopez">http://twitter.com/ajlopez</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ajlopez.wordpress.com/1070/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ajlopez.wordpress.com/1070/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ajlopez.wordpress.com&#038;blog=378226&#038;post=1070&#038;subd=ajlopez&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ajlopez.wordpress.com/2013/05/08/tdd-kata-3-tatet-237-tomek/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/086e1ed94cfc99c62fa27525e69b1a3b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ajlopez</media:title>
		</media:content>
	</item>
		<item>
		<title>TDD Kata (2): Alien Language</title>
		<link>http://ajlopez.wordpress.com/2013/05/06/tdd-kata-2-lenguaje-alien-237-gena/</link>
		<comments>http://ajlopez.wordpress.com/2013/05/06/tdd-kata-2-lenguaje-alien-237-gena/#comments</comments>
		<pubDate>Mon, 06 May 2013 09:07:38 +0000</pubDate>
		<dc:creator>ajlopez</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Agile Software Devevelopment]]></category>
		<category><![CDATA[C Sharp]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Test-Driven Development]]></category>

		<guid isPermaLink="false">https://ajlopez.wordpress.com/?p=1068</guid>
		<description><![CDATA[Previous Post Next Post Some week ago, Google Code Jam was mentioned in Spanish list TDDev.  One of the  past problems of this contest was Alien Language. After years of study, scientists at Google Labs have discovered an alien language transmitted from a faraway planet. The alien language is very unique in that every word [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ajlopez.wordpress.com&#038;blog=378226&#038;post=1068&#038;subd=ajlopez&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><a href="http://ajlopez.wordpress.com/2013/04/26/tdd-kata-1-piedra-papel-tijera-lagarto-spock/">Previous Post</a><br />
<a href="http://ajlopez.wordpress.com/2013/05/08/tdd-kata-3-tatet-237-tomek/">Next Post</a></p>
<p>Some week ago, <a href="https://code.google.com/codejam/">Google Code Jam</a> was mentioned in Spanish list <a href="https://groups.google.com/group/tddev-sp?hl=es&amp;pli=1">TDDev</a>.  One of the  <a href="https://code.google.com/codejam/contests.html">past problems</a> of this contest was <a href="https://code.google.com/codejam/contest/90101/dashboard#s=p0">Alien Language</a>.</p>
<blockquote><p>After years of study, scientists at Google Labs have discovered an alien language transmitted from a faraway planet. The alien language is very unique in that every word consists of exactly L lowercase letters. Also, there are exactly D words in this language.</p>
<p>Once the dictionary of all the words in the alien language was built, the next breakthrough was to discover that the aliens have been transmitting messages to Earth for the past decade. Unfortunately, these signals are weakened due to the distance between our two planets and some of the words may be misinterpreted. In order to help them decipher these messages, the scientists have asked you to devise an algorithm that will determine the number of possible interpretations for a given pattern.</p></blockquote>
<blockquote><p>A pattern consists of exactly L tokens. Each token is either a single lowercase letter (the scientists are very sure that this is the letter) or a group of unique lowercase letters surrounded by parenthesis ( and ). For example: (ab)d(dc) means the first letter is either a or b, the second letter is definitely d and the last letter is either d or c. Therefore, the pattern (ab)d(dc) can stand for either one of these 4 possibilities: add, adc, bdd, bdc.</p></blockquote>
<p>I liked the problem. See in the page that we should read an input file with the words and patterns to process. We can download input files from the problem page, and upload an output file with our solution, generated by our problem. Then, Google will return if the answer is correct or not. So, I wrote a solution using  TDD:</p>
<p><a href="https://github.com/ajlopez/TddOnTheRocks/tree/master/AlienLanguage">https://github.com/ajlopez/TddOnTheRocks/tree/master/AlienLanguage</a></p>
<p>You can read commit history, with test granularity, at:</p>
<p><a href="https://github.com/ajlopez/TddOnTheRocks/commits/master/AlienLanguage">https://github.com/ajlopez/TddOnTheRocks/commits/master/AlienLanguage</a></p>
<p>One of the latests things I did was to refactor the detection of words that match a pattern. I could improve it, maybe using a word tree instead of a list of words, as I did in <a href="https://github.com/ajlopez/SimpleBoggle">SimpleBoggle</a>.</p>
<p>At the end, I wrote a console program that accepts an input file and writes an output file, as Google contest requires. I downloaded a big input file from Google, processed it, and uploaded the solution. Google answered: OK:</p>
<p><img alt="" src="http://www.ajlopez.com/images/articles2/tddkata0201.png" /></p>
<p>TDD rules <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Keep tuned!</p>
<p>Angel “Java” Lopez<br />
<a href="http://www.ajlopez.com">http://www.ajlopez.com</a><br />
<a href="http://twitter.com/ajlopez">http://twitter.com/ajlopez</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ajlopez.wordpress.com/1068/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ajlopez.wordpress.com/1068/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ajlopez.wordpress.com&#038;blog=378226&#038;post=1068&#038;subd=ajlopez&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ajlopez.wordpress.com/2013/05/06/tdd-kata-2-lenguaje-alien-237-gena/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/086e1ed94cfc99c62fa27525e69b1a3b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ajlopez</media:title>
		</media:content>

		<media:content url="http://www.ajlopez.com/images/articles2/tddkata0201.png" medium="image" />
	</item>
		<item>
		<title>Mass Programming Language (3) Commands</title>
		<link>http://ajlopez.wordpress.com/2013/05/05/mass-lenguaje-de-programaci-243-n-3-comandos/</link>
		<comments>http://ajlopez.wordpress.com/2013/05/05/mass-lenguaje-de-programaci-243-n-3-comandos/#comments</comments>
		<pubDate>Sun, 05 May 2013 18:16:33 +0000</pubDate>
		<dc:creator>ajlopez</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[C Sharp]]></category>
		<category><![CDATA[Mass]]></category>
		<category><![CDATA[Open Source Projects]]></category>
		<category><![CDATA[Programming Languages]]></category>

		<guid isPermaLink="false">https://ajlopez.wordpress.com/?p=1065</guid>
		<description><![CDATA[Previous Post Today let’s review command implementation in Mass (see repo). In the class library project, I have a dedicated namespace and folder for commands: There are commands for if, while, for, for each, etc… Every command implements the ICommand interface: public interface ICommand { object Execute(Context context); } See that is very similar to [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ajlopez.wordpress.com&#038;blog=378226&#038;post=1065&#038;subd=ajlopez&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><a href="http://ajlopez.wordpress.com/2013/04/30/mass-lenguaje-de-programaci-243-n-2-primeras-expresiones/">Previous Post</a></p>
<p>Today let’s review command implementation in Mass (<a href="http://github.com/ajlopez/Mass">see repo</a>). In the class library project, I have a dedicated namespace and folder for commands:</p>
<p><img src="http://www.ajlopez.com/images/articles2/mass0301.png" /> </p>
<p>There are commands for if, while, for, for each, etc… Every command implements the ICommand interface:</p>
<pre style="background-color:black;color:white;font-size:10pt;"><span style="color:orange;">public</span> <span style="color:orange;">interface</span> ICommand
<span style="color:cyan;">{</span>
    <span style="color:orange;">object</span> Execute<span style="color:cyan;">(</span>Context context<span style="color:cyan;">);</span>
<span style="color:cyan;">}</span></pre>
<p>See that is very similar to IExpression. But I wanted to keep a separation between commands and expressions, at least for this first implementation, in order to have a clear separation of basis concerns.</p>
<p>A typical example of command is WhileCommand, partial code:</p>
<pre style="background-color:black;color:white;font-size:10pt;"><span style="color:orange;">public</span> <span style="color:orange;">class</span> WhileCommand : ICommand
<span style="color:cyan;">{</span>
    <span style="color:orange;">private</span> <span style="color:orange;">static</span> <span style="color:orange;">int</span> hashcode = <span style="color:orange;">typeof</span><span style="color:cyan;">(</span>WhileCommand<span style="color:cyan;">)</span>.GetHashCode<span style="color:cyan;">();</span>

    <span style="color:orange;">private</span> IExpression condition<span style="color:cyan;">;</span>
    <span style="color:orange;">private</span> ICommand command<span style="color:cyan;">;</span>

    <span style="color:orange;">public</span> WhileCommand<span style="color:cyan;">(</span>IExpression condition<span style="color:cyan;">,</span> ICommand command<span style="color:cyan;">)</span>
    <span style="color:cyan;">{</span>
        <span style="color:orange;">this</span>.condition = condition<span style="color:cyan;">;</span>
        <span style="color:orange;">this</span>.command = command<span style="color:cyan;">;</span>
    <span style="color:cyan;">}</span>

    <span style="color:orange;">public</span> <span style="color:orange;">object</span> Execute<span style="color:cyan;">(</span>Context context<span style="color:cyan;">)</span>
    <span style="color:cyan;">{</span>
        <span style="color:orange;">for</span> <span style="color:cyan;">(</span><span style="color:orange;">object</span> value = <span style="color:orange;">this</span>.condition.Evaluate<span style="color:cyan;">(</span>context<span style="color:cyan;">);</span> 
            value <span style="color:cyan;">!</span>= <span style="color:orange;">null</span> <span style="color:cyan;">&amp;&amp;</span> <span style="color:cyan;">!</span><span style="color:orange;">false</span>.Equals<span style="color:cyan;">(</span>value<span style="color:cyan;">);</span>
            value = <span style="color:orange;">this</span>.condition.Evaluate<span style="color:cyan;">(</span>context<span style="color:cyan;">))</span>
        <span style="color:cyan;">{</span>
            <span style="color:orange;">this</span>.command.Execute<span style="color:cyan;">(</span>context<span style="color:cyan;">);</span>
            <span style="color:orange;">if</span> <span style="color:cyan;">(</span>context.HasContinue<span style="color:cyan;">())</span>
                context.ClearContinue<span style="color:cyan;">();</span>
            <span style="color:orange;">if</span> <span style="color:cyan;">(</span>context.HasBreak<span style="color:cyan;">())</span>
            <span style="color:cyan;">{</span>
                context.ClearBreak<span style="color:cyan;">();</span>
                <span style="color:orange;">break</span><span style="color:cyan;">;</span>
            <span style="color:cyan;">}</span>
        <span style="color:cyan;">}</span>

        <span style="color:orange;">return</span> <span style="color:orange;">null</span><span style="color:cyan;">;</span>
    <span style="color:cyan;">}</span>
<span style="color:cyan;">}</span></pre>
<p>In Mass, every null or false value is false. All other value is true. I should refactor the code to have a central method IsFalse to be invoked in the above While code and in other commands, like IfCommand.</p>
<p>Another sample of command is ForEachCommand, partial code:</p>
<pre style="background-color:black;color:white;font-size:10pt;"><span style="color:orange;">public</span> <span style="color:orange;">class</span> ForEachCommand : ICommand
<span style="color:cyan;">{</span>
    <span style="color:orange;">private</span> <span style="color:orange;">string</span> name<span style="color:cyan;">;</span>
    <span style="color:orange;">private</span> IExpression expression<span style="color:cyan;">;</span>
    <span style="color:orange;">private</span> ICommand command<span style="color:cyan;">;</span>

    <span style="color:orange;">public</span> ForEachCommand<span style="color:cyan;">(</span><span style="color:orange;">string</span> name<span style="color:cyan;">,</span> IExpression expression<span style="color:cyan;">,</span> ICommand command<span style="color:cyan;">)</span>
    <span style="color:cyan;">{</span>
        <span style="color:orange;">this</span>.name = name<span style="color:cyan;">;</span>
        <span style="color:orange;">this</span>.expression = expression<span style="color:cyan;">;</span>
        <span style="color:orange;">this</span>.command = command<span style="color:cyan;">;</span>
    <span style="color:cyan;">}</span>

    <span style="color:orange;">public</span> <span style="color:orange;">object</span> Execute<span style="color:cyan;">(</span>Context context<span style="color:cyan;">)</span>
    <span style="color:cyan;">{</span>
        var values = <span style="color:cyan;">(</span>IEnumerable<span style="color:cyan;">)</span><span style="color:orange;">this</span>.expression.Evaluate<span style="color:cyan;">(</span>context<span style="color:cyan;">);</span>

        <span style="color:orange;">foreach</span> <span style="color:cyan;">(</span>var value <span style="color:orange;">in</span> values<span style="color:cyan;">)</span>
        <span style="color:cyan;">{</span>
            context.Set<span style="color:cyan;">(</span><span style="color:orange;">this</span>.name<span style="color:cyan;">,</span> value<span style="color:cyan;">);</span>
            <span style="color:orange;">this</span>.command.Execute<span style="color:cyan;">(</span>context<span style="color:cyan;">);</span>
            <span style="color:orange;">if</span> <span style="color:cyan;">(</span>context.HasContinue<span style="color:cyan;">())</span>
                context.ClearContinue<span style="color:cyan;">();</span>
            <span style="color:orange;">if</span> <span style="color:cyan;">(</span>context.HasBreak<span style="color:cyan;">())</span>
            <span style="color:cyan;">{</span>
                context.ClearBreak<span style="color:cyan;">();</span>
                <span style="color:orange;">break</span><span style="color:cyan;">;</span>
            <span style="color:cyan;">}</span>
        <span style="color:cyan;">}</span>

        <span style="color:orange;">return</span> <span style="color:orange;">null</span><span style="color:cyan;">;</span>
    <span style="color:cyan;">}</span>
<span style="color:cyan;">}</span></pre>
<p>See that for Mass every IEnumerable value can be used as the element provider for ForCommand. I added some methods to the current context to signal the present of a break or continue (in the current version, I added return treatment, too).</p>
<p>And, as usual, all this code was developed using TDD flow: you can read <a href="https://github.com/ajlopez/Mass/commits/master">repo commit history</a>.</p>
<p>Next posts: Lexer, Parser, Mass samples, Mass scripting, using Mass from our .NET programs.</p>
<p>Keep tuned!</p>
<p>Angel “Java” Lopez<br />
  <br /><a href="http://www.ajlopez.com">http://www.ajlopez.com</a> </p>
<p><a href="http://twitter.com/ajlopez">http://twitter.com/ajlopez</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ajlopez.wordpress.com/1065/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ajlopez.wordpress.com/1065/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ajlopez.wordpress.com&#038;blog=378226&#038;post=1065&#038;subd=ajlopez&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ajlopez.wordpress.com/2013/05/05/mass-lenguaje-de-programaci-243-n-3-comandos/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/086e1ed94cfc99c62fa27525e69b1a3b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ajlopez</media:title>
		</media:content>

		<media:content url="http://www.ajlopez.com/images/articles2/mass0301.png" medium="image" />
	</item>
		<item>
		<title>New Month&#8217;s Resolutions: May 2013</title>
		<link>http://ajlopez.wordpress.com/2013/05/03/new-months-resolutions-may-2013/</link>
		<comments>http://ajlopez.wordpress.com/2013/05/03/new-months-resolutions-may-2013/#comments</comments>
		<pubDate>Fri, 03 May 2013 16:18:05 +0000</pubDate>
		<dc:creator>ajlopez</dc:creator>
				<category><![CDATA[NodeJs]]></category>
		<category><![CDATA[Open Source Projects]]></category>

		<guid isPermaLink="false">https://ajlopez.wordpress.com/?p=1063</guid>
		<description><![CDATA[Review of my April’s resolutions: - Update Mass [complete] see repo - Start NodeAima [complete] see repo - Give a one-day course on Node.js [complete] - Update AjGenesis [pending] - Update AjGenesisRuby [pending] - Update SimpleGo [pending] - Update RubySharp [complete] see repo&#160; - Update ClojSharp [pending] Additionally, I worked on: - Update AjFabriqNode [complete] [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ajlopez.wordpress.com&#038;blog=378226&#038;post=1063&#038;subd=ajlopez&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Review of <a href="http://ajlopez.wordpress.com/2013/04/02/new-months-resolutions-april-2013/">my April’s resolutions</a>:</p>
<p>- Update Mass [<strong><font color="#008000">complete</font></strong>] <a href="https://github.com/ajlopez/Mass">see repo</a>    <br />- Start NodeAima [<strong><font color="#008000">complete</font></strong>] <a href="https://github.com/ajlopez/NodeAima">see repo</a>    <br />- Give a one-day course on Node.js [<strong><font color="#008000">complete</font></strong>]    <br />- Update AjGenesis [<strong><font color="#800000">pending</font></strong>]    <br />- Update AjGenesisRuby [<strong><font color="#800000">pending</font></strong>]    <br />- Update SimpleGo [<strong><font color="#800000">pending</font></strong>]    <br />- Update RubySharp [<strong><font color="#008000">complete</font></strong>] <a href="https://github.com/ajlopez/RubySharp">see repo</a>&#160; <br />- Update ClojSharp [<strong><font color="#800000">pending</font></strong>]</p>
<p>Additionally, I worked on:</p>
<p>- Update AjFabriqNode [<strong><font color="#008000">complete</font></strong>] <a href="https://github.com/ajlopez/AjFabriqNode">see repo</a>    <br />- Update NodeSamples [<strong><font color="#008000">complete</font></strong>] <a href="https://github.com/ajlopez/NodeSamples">see repo</a> (see <a href="https://github.com/ajlopez/NodeSamples/tree/master/Fractal/distributed">Distributed Fractal</a>)    <br />- Update SimpleStorm [<strong><font color="#008000">complete</font></strong>] <a href="https://github.com/ajlopez/SimpleStorm">see repo</a>    <br />- Update SimpleBus [<strong><font color="#008000">complete</font></strong>] <a href="https://github.com/ajlopez/SimpleBus">see repo</a>    <br />- Update SimpleBroadcast [<strong><font color="#008000">complete</font></strong>] <a href="https://github.com/ajlopez/SimpleBroadcast">see repo</a>    <br />- Update SimpleGA [<strong><font color="#008000">complete</font></strong>] <a href="https://github.com/ajlopez/SimpleGA">see repo</a></p>
<p>All this work is related to a talk I gave one week ago, about Distributed Applications and Node.js</p>
<p>May’s resolutions:</p>
<p>- Update Mass   <br />- Update RubySharp    <br />- Give a talk, Intro to Ruby    <br />- Update AjGenesis    <br />- Update ClojSharp    <br />- New posts about Mass    <br />- New posts about Distributed Applications and Node.js</p>
<p>More fun and work.</p>
<p>Keep tuned!</p>
<p>Angel “Java” Lopez   <br /><a href="http://www.ajlopez.com">http://www.ajlopez.com</a>    <br /><a href="http://twitter.com/ajlopez">http://twitter.com/ajlopez</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ajlopez.wordpress.com/1063/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ajlopez.wordpress.com/1063/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ajlopez.wordpress.com&#038;blog=378226&#038;post=1063&#038;subd=ajlopez&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ajlopez.wordpress.com/2013/05/03/new-months-resolutions-may-2013/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/086e1ed94cfc99c62fa27525e69b1a3b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ajlopez</media:title>
		</media:content>
	</item>
		<item>
		<title>Mass Programming Language (2) First Expressions</title>
		<link>http://ajlopez.wordpress.com/2013/04/30/mass-lenguaje-de-programaci-243-n-2-primeras-expresiones/</link>
		<comments>http://ajlopez.wordpress.com/2013/04/30/mass-lenguaje-de-programaci-243-n-2-primeras-expresiones/#comments</comments>
		<pubDate>Tue, 30 Apr 2013 09:31:10 +0000</pubDate>
		<dc:creator>ajlopez</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[C Sharp]]></category>
		<category><![CDATA[Mass]]></category>
		<category><![CDATA[Open Source Projects]]></category>
		<category><![CDATA[Programming Languages]]></category>

		<guid isPermaLink="false">https://ajlopez.wordpress.com/?p=1056</guid>
		<description><![CDATA[Previous Post Next Post Before using Mass language in samples (see repo), I want to visit some implementation points. First, a news: now there is a solution (at (en https://github.com/ajlopez/Mass/blob/master/Src/Mass.sln) that can be compiled with Visual Studio C# Express. The Mass solution has a class library project. There is a namespace dedicated to expressions: An [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ajlopez.wordpress.com&#038;blog=378226&#038;post=1056&#038;subd=ajlopez&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><a href="http://ajlopez.wordpress.com/2013/04/25/mass-lenguaje-de-programaci-243-n-1-or-237-genes/">Previous Post</a><br />
<a href="http://ajlopez.wordpress.com/2013/05/05/mass-lenguaje-de-programaci-243-n-3-comandos/">Next Post</a></p>
<p>Before using Mass language in samples (<a href="http://github.com/ajlopez/Mass">see repo</a>), I want to visit some implementation points. First, a news: now there is a solution (at (en <a href="https://github.com/ajlopez/Mass/blob/master/Src/Mass.sln">https://github.com/ajlopez/Mass/blob/master/Src/Mass.sln</a>) that can be compiled with Visual Studio C# Express.</p>
<p>The Mass solution has a class library project. There is a namespace dedicated to expressions:</p>
<p><img alt="" src="http://www.ajlopez.com/images/articles2/mass0201.png" /></p>
<p>An expression implements IExpression:</p>
<pre style="background-color:black;width:600px;color:white;font-size:10pt;">  
<span style="color:orange;">public</span> <span style="color:orange;">interface</span> IExpression
<span style="color:cyan;">{</span>
	<span style="color:orange;">object</span> Evaluate<span style="color:cyan;">(</span>Context context<span style="color:cyan;">);</span>
<span style="color:cyan;">}</span></pre>
<p>A Context keeps a key/value dictionary, to save the current variables:</p>
<pre style="background-color:black;width:600px;color:white;font-size:10pt;">  
<span style="color:orange;">public</span> <span style="color:orange;">void</span> Set<span style="color:cyan;">(</span><span style="color:orange;">string</span> name<span style="color:cyan;">,</span> <span style="color:orange;">object</span> value<span style="color:cyan;">)</span>
<span style="color:cyan;">{</span>
	<span style="color:orange;">this</span>.values<span style="color:cyan;">[</span>name<span style="color:cyan;">]</span> = value<span style="color:cyan;">;</span>
<span style="color:cyan;">}</span>

<span style="color:orange;">public</span> <span style="color:orange;">object</span> Get<span style="color:cyan;">(</span><span style="color:orange;">string</span> name<span style="color:cyan;">)</span>
<span style="color:cyan;">{</span>
	<span style="color:orange;">if</span> <span style="color:cyan;">(</span><span style="color:orange;">this</span>.values.ContainsKey<span style="color:cyan;">(</span>name<span style="color:cyan;">))</span>
		<span style="color:orange;">return</span> <span style="color:orange;">this</span>.values<span style="color:cyan;">[</span>name<span style="color:cyan;">];</span>

	<span style="color:orange;">if</span> <span style="color:cyan;">(</span><span style="color:orange;">this</span>.parent <span style="color:cyan;">!</span>= <span style="color:orange;">null</span><span style="color:cyan;">)</span>
		<span style="color:orange;">return</span> <span style="color:orange;">this</span>.parent.Get<span style="color:cyan;">(</span>name<span style="color:cyan;">);</span>

	<span style="color:orange;">return</span> <span style="color:orange;">null</span><span style="color:cyan;">;</span>
<span style="color:cyan;">}</span></pre>
<p>(notice that it supports nested context: each context can have a parent).</p>
<p>A simple expression is ConstantExpression, that returns a constant, without using the received context. A constant is any .NET value/object:</p>
<pre style="background-color:black;width:600px;color:white;font-size:10pt;">  
<span style="color:orange;">public</span> <span style="color:orange;">class</span> ConstantExpression : IExpression
<span style="color:cyan;">{</span>
	// ...

	<span style="color:orange;">private</span> <span style="color:orange;">object</span> value<span style="color:cyan;">;</span>

	<span style="color:orange;">public</span> ConstantExpression<span style="color:cyan;">(</span><span style="color:orange;">object</span> value<span style="color:cyan;">)</span>
	<span style="color:cyan;">{</span>
		<span style="color:orange;">this</span>.value = value<span style="color:cyan;">;</span>
	<span style="color:cyan;">}</span>

	<span style="color:orange;">public</span> <span style="color:orange;">object</span> Evaluate<span style="color:cyan;">(</span>Context context<span style="color:cyan;">)</span>
	<span style="color:cyan;">{</span>
		<span style="color:orange;">return</span> <span style="color:orange;">this</span>.value<span style="color:cyan;">;</span>
	<span style="color:cyan;">}</span>

	// ...
<span style="color:cyan;">}</span></pre>
<p>Another expression is the one that evaluates a variable name in the current context:</p>
<pre style="background-color:black;width:600px;color:white;font-size:10pt;">  
<span style="color:orange;">public</span> <span style="color:orange;">class</span> NameExpression : IExpression
<span style="color:cyan;">{</span>
	// ...

	<span style="color:orange;">private</span> <span style="color:orange;">string</span> name<span style="color:cyan;">;</span>

	<span style="color:orange;">public</span> NameExpression<span style="color:cyan;">(</span><span style="color:orange;">string</span> name<span style="color:cyan;">)</span>
	<span style="color:cyan;">{</span>
		<span style="color:orange;">this</span>.name = name<span style="color:cyan;">;</span>
	<span style="color:cyan;">}</span>

	<span style="color:orange;">public</span> <span style="color:orange;">object</span> Evaluate<span style="color:cyan;">(</span>Context context<span style="color:cyan;">)</span>
	<span style="color:cyan;">{</span>
		<span style="color:orange;">return</span> context.Get<span style="color:cyan;">(</span><span style="color:orange;">this</span>.name<span style="color:cyan;">);</span>
	<span style="color:cyan;">}</span>

	// ...
<span style="color:cyan;">}</span></pre>
<p>The context is important: it could be the context of the current function, of a closure, of current object, of current module, etc… The same name could refer defers differente associated variables, as in other programming languages.</p>
<p>As usual, all these classes (expressions, Context, …) were written using the flow of TDD. You can check the test project and the <a href="https://github.com/ajlopez/Mass/commits/master">repo commits history</a> were there is evidence of that flow.</p>
<p>Next posts: some additional expressions, commands, using Mass for scripting, using Mass from our .NET programs.</p>
<p>Kee tuned!</p>
<p>Angel “Java” Lopez</p>
<p><a href="http://www.ajlopez.com">http://www.ajlopez.com</a></p>
<p><a href="http://twitter.com/ajlopez">http://twitter.com/ajlopez</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ajlopez.wordpress.com/1056/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ajlopez.wordpress.com/1056/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ajlopez.wordpress.com&#038;blog=378226&#038;post=1056&#038;subd=ajlopez&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ajlopez.wordpress.com/2013/04/30/mass-lenguaje-de-programaci-243-n-2-primeras-expresiones/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/086e1ed94cfc99c62fa27525e69b1a3b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ajlopez</media:title>
		</media:content>

		<media:content url="http://www.ajlopez.com/images/articles2/mass0201.png" medium="image" />
	</item>
		<item>
		<title>TDD Kata (1): Rock Paper Scissors Lizard Spock</title>
		<link>http://ajlopez.wordpress.com/2013/04/26/tdd-kata-1-piedra-papel-tijera-lagarto-spock/</link>
		<comments>http://ajlopez.wordpress.com/2013/04/26/tdd-kata-1-piedra-papel-tijera-lagarto-spock/#comments</comments>
		<pubDate>Fri, 26 Apr 2013 09:40:21 +0000</pubDate>
		<dc:creator>ajlopez</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Agile Software Devevelopment]]></category>
		<category><![CDATA[C Sharp]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Test-Driven Development]]></category>

		<guid isPermaLink="false">https://ajlopez.wordpress.com/?p=1054</guid>
		<description><![CDATA[Two weeks ago, I read at Spanish list TDDev a new kata published at the blog Aprendiendo TDD: Piedra Papel Tijera Lagarto Spock based on a problem published in (Spanish post) http://www.solveet.com/exercises/Kata-Piedra-Papel-Tijera-Lagarto-Spock/20 I took the description from Wikipedia article: http://en.wikipedia.org/wiki/Rock-paper-scissors-lizard-Spock The rules of Rock-paper-scissors-lizard-Spock are: Scissors cut paper Paper covers rock Rock crushes lizard Lizard [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ajlopez.wordpress.com&#038;blog=378226&#038;post=1054&#038;subd=ajlopez&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Two weeks ago, I read at Spanish list <a href="https://groups.google.com/group/tddev-sp?hl=es&amp;pli=1">TDDev</a> a <a href="https://groups.google.com/group/tddev-sp/browse_thread/thread/3b1877112d2c5de2?hl=es">new kata</a> published at the blog <a href="https://aprendiendotdd.wordpress.com/">Aprendiendo TDD</a>:</p>
<p><a href="https://aprendiendotdd.wordpress.com/2013/04/08/kata-tdd-piedra-papel-tijera-lagarto-spock/">Piedra Papel Tijera Lagarto Spock</a></p>
<p>based on a problem published in (Spanish post)</p>
<p><a title="http://www.solveet.com/exercises/Kata-Piedra-Papel-Tijera-Lagarto-Spock/20" href="http://www.solveet.com/exercises/Kata-Piedra-Papel-Tijera-Lagarto-Spock/20">http://www.solveet.com/exercises/Kata-Piedra-Papel-Tijera-Lagarto-Spock/20</a></p>
<p>I took the description from Wikipedia article:</p>
<p><a href="http://en.wikipedia.org/wiki/Rock-paper-scissors-lizard-Spock">http://en.wikipedia.org/wiki/Rock-paper-scissors-lizard-Spock</a></p>
<blockquote><p>The rules of Rock-paper-scissors-lizard-Spock are:</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Scissors">Scissors</a> cut <a href="http://en.wikipedia.org/wiki/Paper">paper</a> </li>
<li>Paper covers <a href="http://en.wikipedia.org/wiki/Rock_(geology)">rock</a> </li>
<li>Rock crushes <a href="http://en.wikipedia.org/wiki/Lizard">lizard</a> </li>
<li>Lizard poisons <a href="http://en.wikipedia.org/wiki/Spock">Spock</a> </li>
<li>Spock smashes (or melts) scissors </li>
<li>Scissors decapitate lizard </li>
<li>Lizard eats paper </li>
<li>Paper disproves Spock </li>
<li>Spock vaporizes rock </li>
<li>Rock breaks scissors </li>
</ul>
</blockquote>
<p>And then, I started to code the solution using TDD, in C#. You can check re result at:</p>
<p><a href="https://github.com/ajlopez/TddOnTheRocks/tree/master/SpockGame">https://github.com/ajlopez/TddOnTheRocks/tree/master/SpockGame</a></p>
<p>The commit history reveals commit by test:</p>
<p><a href="https://github.com/ajlopez/TddOnTheRocks/commits/master/SpockGame">https://github.com/ajlopez/TddOnTheRocks/commits/master/SpockGame</a></p>
<p><img src="http://www.ajlopez.com/images/articles2/tddkata0103.png" /> </p>
<p>See the first test/commit: it didn’t compile. Then, it started to compile, but with red result. Then, I added the minimal code to pass the test, and refactor, and so on.</p>
<p>I decided to have two tests, one per permutation: testing Scissors cut Paper, and other testing Paper is cut by Scissors. I could refactor the test to have an internal method testing in both ways</p>
<p>The initial design was based on:</p>
<p>- Having an instance of Game class (the alternative was to have static methots, directly in the class)</p>
<p>- Having an enumeration for game options (Play.Scissors, etc…)</p>
<p>- Having an enumeration for the play result (PlayResult.Tie, PlayResult.FirstPlayer…)</p>
<p>Instead of having play result, I could put a method that compare two options, deciding which one is “greater”. Today, I could refactor the implementation to use that approach. </p>
<p>See the last refactor: I could leave the code as is, with if command deciding which play wins, <a href="https://github.com/ajlopez/TddOnTheRocks/blob/8bbf7cdf7978a067574c4aaed250a2cb29c852f7/SpockGame/SpockGame/Game.cs">to decide when the first player wins</a>:</p>
<p><img src="http://www.ajlopez.com/images/articles2/tddkata0101.png" /> </p>
<p>But I wrote a&#160; <a href="https://github.com/ajlopez/TddOnTheRocks/blob/723f9dc6c8755ab7f56a4160cf9ca6f3dabe7ec0/SpockGame/SpockGame/Game.cs">new way</a>:</p>
<p><img src="http://www.ajlopez.com/images/articles2/tddkata0102.png" /> </p>
<p>based on Wikipedia article suggestion:</p>
<blockquote><p>One way to remember the rules is to remember the standard &quot;rock-paper-scissors&quot; ordering, where each gesture defeats the one before it, and is defeated by the one after. But then add the two novel gestures near the word they approximately rhyme with:</p>
<ol>
<li>Rock </li>
<li>Spock </li>
<li>Paper </li>
<li>Lizard </li>
<li>Scissors </li>
</ol>
<p>In this expanded list, each gesture is defeated by the following <i>two</i> options, and defeats the preceding two.</p>
</blockquote>
<p>But I feel the previous code is more clear. Sometimes, we must decide between having a clear code vs a clever one.</p>
<p>More TDD katas are coming.</p>
<p>Keep tuned!</p>
<p>Angel “Java” Lopez    <br /><a href="http://www.ajlopez.com">http://www.ajlopez.com</a>     <br /><a href="http://twitter.com/ajlopez">http://twitter.com/ajlopez</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ajlopez.wordpress.com/1054/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ajlopez.wordpress.com/1054/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ajlopez.wordpress.com&#038;blog=378226&#038;post=1054&#038;subd=ajlopez&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ajlopez.wordpress.com/2013/04/26/tdd-kata-1-piedra-papel-tijera-lagarto-spock/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/086e1ed94cfc99c62fa27525e69b1a3b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ajlopez</media:title>
		</media:content>

		<media:content url="http://www.ajlopez.com/images/articles2/tddkata0103.png" medium="image" />

		<media:content url="http://www.ajlopez.com/images/articles2/tddkata0101.png" medium="image" />

		<media:content url="http://www.ajlopez.com/images/articles2/tddkata0102.png" medium="image" />
	</item>
		<item>
		<title>Mass Programming Language (1) Inception</title>
		<link>http://ajlopez.wordpress.com/2013/04/25/mass-lenguaje-de-programaci-243-n-1-or-237-genes/</link>
		<comments>http://ajlopez.wordpress.com/2013/04/25/mass-lenguaje-de-programaci-243-n-1-or-237-genes/#comments</comments>
		<pubDate>Thu, 25 Apr 2013 09:09:02 +0000</pubDate>
		<dc:creator>ajlopez</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[C Sharp]]></category>
		<category><![CDATA[Mass]]></category>
		<category><![CDATA[Open Source Projects]]></category>
		<category><![CDATA[Programming Languages]]></category>

		<guid isPermaLink="false">https://ajlopez.wordpress.com/?p=1052</guid>
		<description><![CDATA[Next Post Three weeks ago, I was working on the implementation of an interpreted language, written in C#. The new language is called Mass (dedicated to  @MArtinSaliaS): https://github.com/ajlopez/Mass The current solution has three projects: a class library, its tests, and a console program, mass.exe, that launches Mass programs You can run a hello.ms: mass hello.ms [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ajlopez.wordpress.com&#038;blog=378226&#038;post=1052&#038;subd=ajlopez&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><a href="http://ajlopez.wordpress.com/2013/04/30/mass-lenguaje-de-programaci-243-n-2-primeras-expresiones/">Next Post</a></p>
<p>Three weeks ago, I was working on the implementation of an interpreted language, written in C#. The new language is called Mass (dedicated to  <a href="http://twitter.com/martinsalias">@MArtinSaliaS</a>):</p>
<p><a href="https://github.com/ajlopez/Mass">https://github.com/ajlopez/Mass</a></p>
<p><img alt="" src="http://www.ajlopez.com/images/articles2/mass0101.png" /></p>
<p>The current solution has three projects: a class library, its tests, and a console program, mass.exe, that launches Mass programs</p>
<p><img alt="" src="http://www.ajlopez.com/images/articles2/mass0102.png" /></p>
<p>You can run a hello.ms:</p>
<pre style="background-color:black;width:600px;color:white;font-size:10pt;">mass hello.ms</pre>
<p>The classic Hello world source code:</p>
<pre style="background-color:black;width:600px;color:white;font-size:10pt;">println<span style="color:cyan;">(</span><span style="color:lightgreen;">"Hello, world"</span><span style="color:cyan;">)</span></pre>
<p>An example with classes and objects</p>
<pre style="background-color:black;width:600px;color:white;font-size:10pt;"><span style="color:orange;">class</span> Person
	<span style="color:orange;">define</span> initialize<span style="color:cyan;">(</span>firstname<span style="color:cyan;">,</span> lastname<span style="color:cyan;">)</span>
		self.firstname = firstname
		self.lastname = lastname
	<span style="color:orange;">end</span>
	
	<span style="color:orange;">define</span> getName<span style="color:cyan;">()</span>
		<span style="color:orange;">return</span> self.lastname + <span style="color:lightgreen;">", "</span> + self.firstname
	<span style="color:orange;">end</span>
<span style="color:orange;">end</span>

adam = new Person<span style="color:cyan;">(</span><span style="color:lightgreen;">"Adam"</span><span style="color:cyan;">,</span> <span style="color:lightgreen;">"TheFirst"</span><span style="color:cyan;">)</span>

println<span style="color:cyan;">(</span>adam.getName<span style="color:cyan;">())</span></pre>
<p>An example with access to .NET types and objects:</p>
<pre style="background-color:black;width:600px;color:white;font-size:10pt;">dirinfo = new System.IO.DirectoryInfo<span style="color:cyan;">(</span><span style="color:lightgreen;">"."</span><span style="color:cyan;">)</span>

<span style="color:orange;">for</span> fileinfo in dirinfo.GetFiles<span style="color:cyan;">()</span>
	println<span style="color:cyan;">(</span>fileinfo.Name<span style="color:cyan;">)</span>
<span style="color:orange;">end</span></pre>
<p>The idea is  to have a dynamic language that leverages an underlying language provided with a rich class library and ecosystem, like in <a href="https://github.com/ajlopez/AjSharp">AjSharp</a> and other of my projects. Before Mass, I was working on:</p>
<p>- Implementing Python in C# (see <a href="https://github.com/ajlopez/PythonSharp">PythonSharp</a>)</p>
<p>- Implementing Ruby in C# (see <a href="https://github.com/ajlopez/RubySharp">RubySharp</a>)</p>
<p>- AjSharp (see <a href="https://github.com/ajlopez/AjSharp">repo</a> and <a href="http://ajlopez.wordpress.com/category/ajsharp">post</a>)</p>
<p>But this time I wanted to implement something with simple sintax and semantic. Indeed, I was playing with “simple” ideas for a compiler over Javascript, see <a href="http://ajlopez.wordpress.com/2013/01/02/simplescript-1-first-ideas/">SimpleScript (1) First Ideas</a>.</p>
<p>Then, with Mass, I deliberately wanted to avoid:</p>
<p>- Multiple commands in the same line (I discarded ‘;’ like in Ruby)</p>
<p>- Syntax based in spaces and indentation (Python discarded)</p>
<p>- Function invocation using only the name; Mass impose the explicit use of parenthesis (Ruby discarded; Mass is like JavaScript)</p>
<p>- Base values and classes (integers, strings, lists, etc…) having a crowd of methods (like Ruby and Python). No, Mass prefers to expose and use the underlying language/class library.</p>
<p>Then, I wanted:</p>
<p>- Functional values, as first-class citizens, like in JavaScript. So, having to put explicit parenthesis to invoke a function allows me to use the name of the function as a functional value</p>
<p>- Dynamic objects: each object can be extended at any moment, with new instance variables, object functions, a la JavaScript</p>
<p>- Syntax based in lines: each command has its own line. No command separation</p>
<p>- Syntax based in keywords: the end of a command list is marked with ‘end’, no braces</p>
<p>- As far as possible, only one way to do something, instead of the many ways motto a la Perl</p>
<p>- Complete keywords, then ‘define’ instead of ‘def’</p>
<p>- Simple inheritance at classes. But Mass could be expressive without written classes, using native classes from .NET framework and other libraries. It could be used as an scripting language.</p>
<p>- Explicit setting of variables that are out of the local scope (a topic for next posts)</p>
<p>- Variable scope by file, like in the require of JavaScript/NodeJs/CommonJS</p>
<p>- Module by file, with a require that automatically searches in directories, a la NodeJs/CommonJs. Notably, Mass can consume node_modules folder, so Mass module can be published and installed using NPM!</p>
<p>- Package manager, using NPM. You can use package.json to declare the dependencies, and publish new modules at NPM (using ‘mass-‘ as the suggested namespace).</p>
<p>In upcoming posts, I will write more details about implementation, guiding design ideas, examples. But now, you can see the code and the test examples <a href="https://github.com/ajlopez/Mass">at public repo</a>. And yes, all was written by baby steps, using TDD.</p>
<p>Keep tuned!</p>
<p>Angel “Java” Lopez</p>
<p><a href="http://www.ajlopez.com">http://www.ajlopez.com</a></p>
<p><a href="http://twitter.com/ajlopez">http://twitter.com/ajlopez</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ajlopez.wordpress.com/1052/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ajlopez.wordpress.com/1052/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ajlopez.wordpress.com&#038;blog=378226&#038;post=1052&#038;subd=ajlopez&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ajlopez.wordpress.com/2013/04/25/mass-lenguaje-de-programaci-243-n-1-or-237-genes/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/086e1ed94cfc99c62fa27525e69b1a3b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ajlopez</media:title>
		</media:content>

		<media:content url="http://www.ajlopez.com/images/articles2/mass0101.png" medium="image" />

		<media:content url="http://www.ajlopez.com/images/articles2/mass0102.png" medium="image" />
	</item>
	</channel>
</rss>
