<?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>mga/blog &#187; programación</title>
	<atom:link href="http://www.mauriciogiraldo.com/blog/category/programacion/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mauriciogiraldo.com/blog</link>
	<description>ISSN 2011-0146</description>
	<lastBuildDate>Thu, 26 Jan 2012 16:03:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Presentando Stereogranimator</title>
		<link>http://www.mauriciogiraldo.com/blog/2012/01/26/presentando-stereogranimator/</link>
		<comments>http://www.mauriciogiraldo.com/blog/2012/01/26/presentando-stereogranimator/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 16:03:16 +0000</pubDate>
		<dc:creator>mga</dc:creator>
				<category><![CDATA[arte]]></category>
		<category><![CDATA[diseño]]></category>
		<category><![CDATA[historia]]></category>
		<category><![CDATA[interacción]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.mauriciogiraldo.com/blog/?p=872</guid>
		<description><![CDATA[GIF made with the NYPL Labs Stereogranimator Publico esta foto hecha con el Stereogranimator como abrebocas para un post que publicaré más adelante sobre mi trabajo en la Biblioteca Pública de New York.]]></description>
			<content:encoded><![CDATA[<p><a href="http://stereo.nypl.org/view/210"><img alt="GIF made with the NYPL Labs Stereogranimator - view more at http://stereo.nypl.org/gallery/index" src="http://stereo.nypl.org/view/210.gif" /><br />GIF made with the NYPL Labs Stereogranimator</a></p>
<p>Publico esta foto hecha con el <a href="http://stereo.nypl.org">Stereogranimator</a> como abrebocas para un post que publicaré más adelante sobre mi trabajo en la <a href="http://nypl.org">Biblioteca Pública de New York</a>.</p>
<p><a href="http://www.mauriciogiraldo.com/blog/2012/01/26/presentando-stereogranimator/" rel="bookmark">Presentando Stereogranimator</a> originalmente escrito en <a href="http://www.mauriciogiraldo.com/blog">mga/blog</a> en January 26, 2012.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mauriciogiraldo.com/blog/2012/01/26/presentando-stereogranimator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Body Type</title>
		<link>http://www.mauriciogiraldo.com/blog/2011/06/29/body-type/</link>
		<comments>http://www.mauriciogiraldo.com/blog/2011/06/29/body-type/#comments</comments>
		<pubDate>Thu, 30 Jun 2011 00:49:20 +0000</pubDate>
		<dc:creator>mga</dc:creator>
				<category><![CDATA[arte]]></category>
		<category><![CDATA[diseño]]></category>
		<category><![CDATA[interacción]]></category>
		<category><![CDATA[kinect]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[tipografí­a]]></category>

		<guid isPermaLink="false">http://www.mauriciogiraldo.com/blog/?p=856</guid>
		<description><![CDATA[Update: I have released most of the code for this project so that you can take a look. Send any improvements! ;) A typeface is an environment for someone&#8217;s expression: using typefaces we write documents, create posters and subtitle movies. We follow the type creator&#8217;s restrictions and design decisions (kerning, spacing, proportion) when using her [...]]]></description>
			<content:encoded><![CDATA[<p><em>Update: I have released most of the <a href="http://code.google.com/p/bodytype/">code for this project</a> so that you can take a look. Send any improvements! ;)</em></p>
<p><iframe src="http://player.vimeo.com/video/25793769?title=0&amp;byline=0&amp;portrait=0&amp;color=80ceff" width="475" height="356" frameborder="0"></iframe></p>
<p>A typeface is an environment for someone&#8217;s expression: using typefaces we write documents, create posters and subtitle movies. We follow the type creator&#8217;s restrictions and design decisions (kerning, spacing, proportion) when using her fonts. Good typefaces are created by highly-skilled people and can take several years to create. <em>Body Type</em> aims to allow anyone to create a highly expressive and personal typeface using only their body and hand gestures.</p>
<p><em>Body Type</em> is an excercise on freestyle computing and was built using OpenFrameworks, the Microsoft Kinect sensor, OpenNI, FontForge, Potrace, ImageMagick, PHP, TouchOSC and the Apple iPhone.</p>
<p><strong>Background</strong></p>
<p>This project builds on a <a href="http://golancourses.net/2011spring/03/23/project-4-body-font-mauricio-giraldo/">previous exercise on generative art</a> that made use of the Kinect OpenNI skeleton system to create letterforms. I decided to take the idea further and create a self-contained application that would allow anyone to create a <a href="http://en.wikipedia.org/wiki/TrueType">TrueType</a> font using their body and gestures. The software should allow people to create type using their body in a way evocative of light painting photography:</p>
<p><a href="http://www.flickr.com/photos/sovietuk/1780992565/" title="love more. by tricky ™, on Flickr"><img src="http://farm3.static.flickr.com/2357/1780992565_e1c5a92c89.jpg" width="500" height="333" alt="love more."/></a></p>
<p><strong>Technical information</strong></p>
<p><em>Body Type</em> was created using the Microsoft Kinect sensor which was controlled by a C++ application created using <a href="http://www.openframeworks.cc/">openFrameworks</a> and its OpenNI extension. This allowed for the 3D input received from the sensor to be converted into variable-width outlines and skeletons. The next issue was creating a TrueType font (.TTF file) from these silhouettes. The font-generation process goes through several stages in order to achieve this:</p>
<ol>
<li>Using openFrameworks to generate a black and white bitmap representation of each letter.</li>
<li><a href="http://www.imagemagick.org/">ImageMagick</a> is used to convert the image to a format compatible with <a href="http://fontforge.sourceforge.net/">FontForge</a>.</li>
<li>FontForge makes use of <a href="http://potrace.sourceforge.net/">Potrace</a> to vectorize the bitmap and then generates the final letterform and font.</li>
<li>Since <em>Body Type</em> was displayed in the STUDIO for Creative Inquiry as part of an exhibition, web functionality was added so that font-creators could send themselves the resulting files. PHP was used to create a compressed ZIP file of all image and TTF files and send it to the specified email address.</li>
</ol>
<p>The created font has six different possible parameters to determine a letterform&#8217;s visual attributes: skeleton lines, skeleton dots, line width, upper body, lower body and hand trails. Since controlling these parameters would be quite complicated to do by using gestures or on-screen menus, a <a href="http://hexler.net/software/touchosc">TouchOSC</a> iOS overlay was created to allow remote control via <a href="http://opensoundcontrol.org/">Open Sound Control</a>:</p>
<p><a href="http://www.flickr.com/photos/mgiraldo/5668581588/" title="Body Type iPhone console by m g a, on Flickr"><img src="http://farm6.static.flickr.com/5030/5668581588_c26cbbce13.jpg" width="320" height="480" alt="Body Type iPhone console"/></a></p>
<p><strong>Results</strong></p>
<p>During the STUDIO exhibition dozens of fonts were created. Below are samples of some of them.</p>
<p><a href="http://www.flickr.com/photos/mgiraldo/5709784934/" title="meta 2 by m g a, on Flickr"><img src="http://farm4.static.flickr.com/3579/5709784934_d9d729f449.jpg" width="500" height="142" alt="meta 2"/></a><br />
By <a href="http://www.design.cmu.edu/show_person.php?t=f&#038;id=TerryIrwin">Terry Irwin</a></p>
<p><a href="http://www.flickr.com/photos/mgiraldo/5678372426/" title="shawn sims outline by m g a, on Flickr"><img src="http://farm6.static.flickr.com/5104/5678372426_38c38f3276.jpg" width="500" height="142" alt="shawn sims outline"/></a><br />
By <a href="http://twitter.com/shawn_sims_">Shawn Sims</a></p>
<p><a href="http://www.flickr.com/photos/mgiraldo/5678620912/" title="heather knight flower alphabet by m g a, on Flickr"><img src="http://farm6.static.flickr.com/5302/5678620912_ba6e33fe5c.jpg" width="500" height="94" alt="heather knight flower alphabet"/></a><br />
By <a href="http://www.marilynmonrobot.com/">Heather Knight</a> (dingbats)</p>
<p><a href="http://www.flickr.com/photos/mgiraldo/5688023016/" title="chinese whispers by m g a, on Flickr"><img src="http://farm6.static.flickr.com/5266/5688023016_213c687672.jpg" width="500" height="98" alt="chinese whispers"/></a><br />
By <a href="http://www.facebook.com/#!/profile.php?id=643284734">Cong Ma</a> (chinese characters)</p>
<p><a href="http://www.flickr.com/photos/mgiraldo/5688066958/" title="faste bold by m g a, on Flickr"><img src="http://farm6.static.flickr.com/5228/5688066958_67535fb7e7.jpg" width="500" height="144" alt="faste bold"/></a><br />
By <a href="http://www.haakonfaste.com/">Haakon Faste</a></p>
<p>Creating the font is just part of the process. A font is made to be used. This project acknowledges the limitations of the fonts created both technically (since they lack proper letter spacing) and alphabetically  (since they contain only representations for letters A to Z and numbers 0 to 9). However, these fonts allow for &#8220;freestyle&#8221; graphic experimentation:</p>
<p><a href="http://golancourses.net/2011spring/wp-content/uploads/blue.jpg"><img src="http://golancourses.net/2011spring/wp-content/uploads/blue-300x300.jpg" alt="" title="by Paulo Pinto" width="300" height="300" class="alignnone size-medium wp-image-6884" /></a><br />
By <a href="http://www.axxostudio.com/">Paulo Pinto</a></p>
<p><a href="http://golancourses.net/2011spring/wp-content/uploads/nadia.jpeg"><img src="http://golancourses.net/2011spring/wp-content/uploads/nadia-300x300.jpg" alt="" title="By Juan Carlos Cammaert" width="300" height="300" class="alignnone size-medium wp-image-6885" /></a><br />
By <a href="http://welovebooks.net/">Juan Carlos Cammaert</a></p>
<p><a href="http://www.flickr.com/photos/mgiraldo/5663272807/" title="Body Type by m g a, on Flickr"><img src="http://farm6.static.flickr.com/5030/5663272807_ca505eab13.jpg" width="324" height="500" alt="Body Type"/></a><br />
By <a href="http://www.mauriciogiraldo.com/blog">Mauricio Giraldo Arteaga</a></p>
<p>Further work can be explored creating complete characters sets.</p>
<p>This project was done as part of the requirements to complete the <a href="http://golancourses.net/2011spring/">Spring 2011 Interactive Art and Computational Design course</a> with Professor Golan Levin in Carnegie Mellon University.</p>
<p><a href="http://www.mauriciogiraldo.com/blog/2011/06/29/body-type/" rel="bookmark">Body Type</a> originalmente escrito en <a href="http://www.mauriciogiraldo.com/blog">mga/blog</a> en June 29, 2011.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mauriciogiraldo.com/blog/2011/06/29/body-type/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Body Type</title>
		<link>http://www.mauriciogiraldo.com/blog/2011/03/26/body-font/</link>
		<comments>http://www.mauriciogiraldo.com/blog/2011/03/26/body-font/#comments</comments>
		<pubDate>Sat, 26 Mar 2011 21:54:27 +0000</pubDate>
		<dc:creator>mga</dc:creator>
				<category><![CDATA[arte]]></category>
		<category><![CDATA[interacción]]></category>
		<category><![CDATA[kinect]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[tipografí­a]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.mauriciogiraldo.com/blog/?p=838</guid>
		<description><![CDATA[UPDATE: &#8220;Light painting&#8221; test: NUEVO: Prueba con &#8220;dibujo con luz&#8221;: &#8211; Body Type is a body-based font generator using OpenFrameworks, OpenNI and the Kinect sensor. Project for the Spring 2011 Interactive Art &#38; Computational Design course in Carnegie Mellon University golancourses.net/2011spring/ &#8211; Body Type es un generador de tipografías basadas en el cuerpo que usa [...]]]></description>
			<content:encoded><![CDATA[<p>UPDATE: &#8220;Light painting&#8221; test:<br />
<em>NUEVO: Prueba con &#8220;dibujo con luz&#8221;:</em></p>
<p><iframe src="http://player.vimeo.com/video/22129794?title=0&amp;byline=0&amp;portrait=0&amp;color=80ceff" width="475" height="356" frameborder="0"></iframe></p>
<p>&#8211;</p>
<p><iframe src="http://player.vimeo.com/video/21396223?title=0&amp;byline=0&amp;portrait=0&amp;color=80ceff" width="475" height="356" frameborder="0"></iframe></p>
<p>Body Type is a body-based font generator using OpenFrameworks, OpenNI and the Kinect sensor.</p>
<p>Project for the Spring 2011 Interactive Art &amp; Computational Design course in Carnegie Mellon University<br />
<a href="http://golancourses.net/?2011spring/" rel="nofollow">golancourses.net/2011spring/</a></p>
<p>&#8211;</p>
<p><em>Body Type es un generador de tipografías basadas en el cuerpo que usa OpenFrameworks, OpenNI y el Kinect.</p>
<p>Proyecto para el curso Interactive Art &amp; Computational Design en Carnegie Mellon University<br />
<a href="http://golancourses.net/?2011spring/" rel="nofollow">golancourses.net/?2011spring/</a></em></p>
<p><a title="mga bold by m g a, on Flickr" href="http://www.flickr.com/photos/mgiraldo/5552701652/"><img src="http://farm6.static.flickr.com/5256/5552701652_0af5068126.jpg" alt="mga bold" width="500" height="374" /></a><br />
<strong>mga bold</strong></p>
<p>&nbsp;</p>
<p><a title="mga outline by m g a, on Flickr" href="http://www.flickr.com/photos/mgiraldo/5552701624/"><img src="http://farm6.static.flickr.com/5027/5552701624_b2336f86fa.jpg" alt="mga outline" width="500" height="375" /></a><br />
<strong>mga outline</strong></p>
<p><a href="http://www.mauriciogiraldo.com/blog/2011/03/26/body-font/" rel="bookmark">Body Type</a> originalmente escrito en <a href="http://www.mauriciogiraldo.com/blog">mga/blog</a> en March 26, 2011.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mauriciogiraldo.com/blog/2011/03/26/body-font/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2D </title>
		<link>http://www.mauriciogiraldo.com/blog/2011/03/19/2d-v-3d/</link>
		<comments>http://www.mauriciogiraldo.com/blog/2011/03/19/2d-v-3d/#comments</comments>
		<pubDate>Sat, 19 Mar 2011 16:39:20 +0000</pubDate>
		<dc:creator>mga</dc:creator>
				<category><![CDATA[arte]]></category>
		<category><![CDATA[interacción]]></category>
		<category><![CDATA[juegos]]></category>
		<category><![CDATA[kinect]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[visualización]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.mauriciogiraldo.com/blog/?p=828</guid>
		<description><![CDATA[&#8211;Texto en inglés como parte de mi estudio en Carnegie Mellon University. Eventualmente haré una versión en español.&#8211; 2D &#60;3 3D is a Kinect-based online multiuser interactive environment. The project is still under development and currently allows multiple web-based users to interact with and augment the physical space of the Kinect participants with virtual objects. [...]]]></description>
			<content:encoded><![CDATA[<p><em>&#8211;Texto en inglés como parte de<a href="http://www.hcii.cmu.edu"> mi estudio en Carnegie Mellon University</a>. Eventualmente haré una versión en español.&#8211;</em></p>
<p><iframe src="http://player.vimeo.com/video/20320187?title=0&amp;byline=0&amp;portrait=0&amp;color=80ceff" width="475" height="356" frameborder="0"></iframe></p>
<p><em>2D &lt;3 3D</em> is a Kinect-based online multiuser interactive environment. The project is still under development and currently allows multiple web-based users to interact with and augment the physical space of the Kinect participants with virtual objects.</p>
<p><strong>Background</strong></p>
<p>3D is the talk of the hour. From cinema to the living room, 3D is becoming simultaneously a selling and a divisive point. The point of this project is to mesh both points of view and make a commentary about the banality of this &#8220;issue&#8221;. The project is inspired by many previous works including:</p>
<p><img class="alignnone size-full wp-image-4282" title="Bauhaus theatre outfits" src="http://golancourses.net/2011spring/wp-content/uploads/bauhaus.jpg" alt="" width="475" height="307" /></p>
<p>The Bauhaus school of art, architecture and design also explored theatre. I was mostly interested in its highly geometric and formal qualities.</p>
<p><img class="alignnone size-full wp-image-4283" title="Sledgehammer" src="http://golancourses.net/2011spring/wp-content/uploads/sledge.jpg" alt="" width="475" height="354" /></p>
<p>Peter Gabriel&#8217;s <em>Sledgehammer</em> video demonstrated an interesting optical phenomenon: human shapes may be inferred by the sole movement of points.</p>
<p><img class="alignnone size-full wp-image-4284" title="uyuyuy" src="http://golancourses.net/2011spring/wp-content/uploads/uyuyuy.jpg" alt="" width="475" height="267" /></p>
<p><em>UYUYUY</em> is a short film by Santiago Caicedo which, while designed to be watched with 3D glasses, is mostly composed of 2D elements.</p>
<p><img class="alignnone size-full wp-image-4285" title="Red" src="http://golancourses.net/2011spring/wp-content/uploads/red.jpg" alt="" width="475" height="294" /></p>
<p>The web has always been a medium of my interest. I try to include web-related functionality in my projects. The <a href="http://www.ff0000.com/">Red Agency website</a> has an interesting chat functionality mixed with navigation and 2D parallax scrolling interface.</p>
<p><strong>Technical exploration</strong></p>
<p>I wanted to have a multiuser conversation between the physical and the virtual; 3D and 2D. This was my first C++ project so the learning curve was quite steep and full of obstacles. I started exploring the networking possibilities in <a href="http://openframeworks.cc/">openFrameworks</a> including ofxOsc and ofxNetwork deciding upon the latter communicating with the web via a <a href="http://www.giantflyingsaucer.com/blog/?p=205">Java-based XMLSocket server</a> (I know &#8220;basic&#8221; web sockets perform better but not enough time to explore that).</p>
<p>The project also uses ofxOpenNI for skeleton detection and ofxBox2d for physics/collision detection. An initial attempt was made to use ofxMSAPhysics but for some reason I could not make it work well with ofxOpenNI. The web interface uses Flash.</p>
<p>One challenge was how to visualize and represent the activity in either end (Flash being the 2D environment and openFrameworks the 3D). Further exploration must be made in order to have a more interesting visual representation in both ends.</p>
<p><strong>Interdependence</strong></p>
<p>The two main components of this project are mutually dependent: the 3D-interacting users require that web users are present and creating objects they can interact with. 2D web users require the &#8220;presence&#8221; of 3D skeletons for them to observe and affect. This &#8220;conversation&#8221; between 2D and 3D is the main element of the project.</p>
<p><object type="application/x-shockwave-flash" width="475" height="373" data="http://www.flickr.com/apps/video/stewart.swf?v=71377" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><param name="flashvars" value="intl_lang=en-us&#038;photo_secret=127bd54a1f&#038;photo_id=5466749473"></param><param name="movie" value="http://www.flickr.com/apps/video/stewart.swf?v=71377"></param><param name="bgcolor" value="#000000"></param><param name="allowFullScreen" value="true"></param><embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/video/stewart.swf?v=71377" bgcolor="#000000" allowfullscreen="true" flashvars="intl_lang=en-us&#038;photo_secret=127bd54a1f&#038;photo_id=5466749473" height="373" width="475"></embed></object></p>
<p><object type="application/x-shockwave-flash" width="475" height="373" data="http://www.flickr.com/apps/video/stewart.swf?v=71377" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><param name="flashvars" value="intl_lang=en-us&#038;photo_secret=d85d89c0a1&#038;photo_id=5467690556"></param><param name="movie" value="http://www.flickr.com/apps/video/stewart.swf?v=71377"></param><param name="bgcolor" value="#000000"></param><param name="allowFullScreen" value="true"></param><embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/video/stewart.swf?v=71377" bgcolor="#000000" allowfullscreen="true" flashvars="intl_lang=en-us&#038;photo_secret=d85d89c0a1&#038;photo_id=5467690556" height="373" width="475"></embed></object></p>
<p><object type="application/x-shockwave-flash" width="475" height="354" data="http://www.flickr.com/apps/video/stewart.swf?v=71377" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><param name="flashvars" value="intl_lang=en-us&#038;photo_secret=6cab811431&#038;photo_id=5469179613"></param><param name="movie" value="http://www.flickr.com/apps/video/stewart.swf?v=71377"></param><param name="bgcolor" value="#000000"></param><param name="allowFullScreen" value="true"></param><embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/video/stewart.swf?v=71377" bgcolor="#000000" allowfullscreen="true" flashvars="intl_lang=en-us&#038;photo_secret=6cab811431&#038;photo_id=5469179613" height="354" width="475"></embed></object></p>
<p><a href="http://www.mauriciogiraldo.com/lab/2v3/2D%20%3C3%203D.zip"><strong>Download the code</strong></a> (ZIP 20 MB) which is completely unsupported. Contains:</p>
<ul>
<li>Flash CS5 .FLA file (for the web-based interface)</li>
<li>Eclipse Java project folder (for the socket server)</li>
<li>openFrameworks project folder</li>
</ul>
<p><a href="http://golancourses.net/2011spring/wp-content/uploads/a3-preso.pdf"><strong>Presentation</strong></a> (PDF 471 KB)</p>
<p>This project was done as part of the requirements to complete the <a href="http://golancourses.net/2011spring/">Spring 2011 Interactive Art and Computational Design course</a> with Professor Golan Levin in Carnegie Mellon University.</p>
<p><a href="http://www.mauriciogiraldo.com/blog/2011/03/19/2d-v-3d/" rel="bookmark">2D <3 3D</a> originalmente escrito en <a href="http://www.mauriciogiraldo.com/blog">mga/blog</a> en March 19, 2011.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mauriciogiraldo.com/blog/2011/03/19/2d-v-3d/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Faces</title>
		<link>http://www.mauriciogiraldo.com/blog/2011/03/18/new-faces-carnegie-mellon/</link>
		<comments>http://www.mauriciogiraldo.com/blog/2011/03/18/new-faces-carnegie-mellon/#comments</comments>
		<pubDate>Sat, 19 Mar 2011 03:34:19 +0000</pubDate>
		<dc:creator>mga</dc:creator>
				<category><![CDATA[arte]]></category>
		<category><![CDATA[diseño]]></category>
		<category><![CDATA[información]]></category>
		<category><![CDATA[interacción]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[visualización]]></category>

		<guid isPermaLink="false">http://www.mauriciogiraldo.com/blog/?p=794</guid>
		<description><![CDATA[&#8211;Texto en inglés como parte de mi estudio en Carnegie Mellon University. Eventualmente haré una versión en español.&#8211; New Faces is a project that began in 2009 after I got fed up with Colombia’s online newspapers’ (one site, another site) high emphasis in sports and celebtrity-related news. I decided to take a screenshot of the [...]]]></description>
			<content:encoded><![CDATA[<p><em>&#8211;Texto en inglés como parte de <a href="http://www.hcii.cmu.edu">mi estudio en Carnegie Mellon University</a>. Eventualmente haré una versión en español.&#8211;</em></p>
<p><img src="http://www.mauriciogiraldo.com/blog/wp-content/uploads/2011/03/faces.png" alt="" title="faces" width="450" height="252" class="alignnone size-full wp-image-803" /></p>
<p><em>New Faces</em> is a project that began in 2009 after I got fed up with Colombia’s online newspapers’ (<a href="http://www.eltiempo.com/">one site</a>, <a href="http://www.elespectador.com/">another site</a>) high emphasis in sports and celebtrity-related news.  I decided to take a screenshot of the offending website and remove this  information (along with advertising) in order to see <a href="http://www.flickr.com/photos/mgiraldo/4083937501/">what was left</a>.</p>
<p>Clearly sports, advertising and celebrity news have a relatively high  importance for this colombian newspaper (at least in its online  incarnation). This led me to wonder if this was the same across  different countries. I decided to create a Python script that makes use  of <a href="http://www.paulhammond.org/2009/03/webkit2png-0.5/">webkit2png-0.5</a> to take a screenshot of eleven news websites every night at 8pm. This  script has been ran almost every night since November 8, 2009.</p>
<p><strong>New faces</strong></p>
<p>After seeing Rutherford Chang’s work with the New York Times where he blacks-out every element in the page <em>except</em> faces (no link available, sorry) I thought it would be an interesting  idea to execute this same process in my dataset of more than 3,000 files  and 10 GB.</p>
<p>I tested various technical solution for this process and decided upon using the <a href="http://ubaa.net/shared/processing/opencv/">OpenCV library for Processing</a>.</p>
<p>After that it was a matter of applying it to my dataset and see if it worked. I tried several parameters for the <code>detect()</code> method since   there were many false positives (text selected as face) and false   negatives (face undetected when there should be) but could not get 100%   accuracy. These errors provide an interesting outcome anyway.</p>
<p>The faces are extracted from the screenshots and saved as separate  files along with their original location in x,y and number of total  faces in the screenshot. There were 28,000+ faces deteced (less than 10  faces per screenshot).</p>
<p>With this new subset I then created a Flash interface to view the  faces in their original x,y coordinates with buttons to toggle the  visibility of individual news sites. Next to the buttons a <strong>blue line indicates average face area</strong>, a <strong>green line indicates how many screenshots</strong> (individual days captured) and a <strong>red line indicates total amount of faces</strong> in that site.</p>
<p><strong><a href="http://www.mauriciogiraldo.com/lab/newfaces/">View the Flash interface online in your browser</a></strong>. <strong>F for fullscreen</strong> (click the interface to give it focus). CAUTION: ~30,000 images files   loaded might clog up your browser (although they’re about 2kb each   only).	Interface	is	not optimized for low-end computers.</p>
<p><strong>Future work</strong></p>
<p>From this initial work some superficial conclusions could be made  (see photo captions). Further analysis could provide some interesting  information such as:</p>
<ul>
<li>dominant race or skin color</li>
<li>gender distribution</li>
<li>dominant face expression (sad, happy, angry, etc.)</li>
<li>average face area</li>
<li>preferred location in the page</li>
<li>how the above change over time</li>
</ul>
<p>The interface makes use of <a href="http://www.minimalcomps.com/">Bit-101?s Minimal Comps</a>.</p>
<p>This project was done as part of the requirements to complete the <a href="http://golancourses.net/2011spring/">Spring 2011 Interactive Art and Computational Design course</a> with Professor Golan Levin in Carnegie Mellon University.</p>
<p><a href="http://www.mauriciogiraldo.com/blog/2011/03/18/new-faces-carnegie-mellon/" rel="bookmark">New Faces</a> originalmente escrito en <a href="http://www.mauriciogiraldo.com/blog">mga/blog</a> en March 18, 2011.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mauriciogiraldo.com/blog/2011/03/18/new-faces-carnegie-mellon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>socially nervous</title>
		<link>http://www.mauriciogiraldo.com/blog/2011/03/18/socially-nervous/</link>
		<comments>http://www.mauriciogiraldo.com/blog/2011/03/18/socially-nervous/#comments</comments>
		<pubDate>Sat, 19 Mar 2011 02:06:29 +0000</pubDate>
		<dc:creator>mga</dc:creator>
				<category><![CDATA[arte]]></category>
		<category><![CDATA[crítica]]></category>
		<category><![CDATA[interacción]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.mauriciogiraldo.com/blog/?p=806</guid>
		<description><![CDATA[&#8211;Texto en inglés como parte de mi estudio en Carnegie Mellon University. Eventualmente haré una versión en español.&#8211; Description Social network services[1] enable people to communicate with each other in ways that would be considered science fiction only a few years ago. This enablement has been welcome by people at large, with some criticisms concerning [...]]]></description>
			<content:encoded><![CDATA[<p><em>&#8211;Texto en inglés como parte de <a href="http://www.hcii.cmu.edu">mi estudio en Carnegie Mellon University</a>. Eventualmente haré una versión en español.&#8211;</em></p>
<p><strong>Description<br />
				</strong><a href="http://www.mauriciogiraldo.com/img/pfolio/sneagle.png" title="EAGLE circuit schematic" rel="lightbox[p7]"><img align="right" src="/img/pfolio/sneaglet.png" /></a><em>Social network services</em>[<a title="definition in Wikipedia" href="http://en.wikipedia.org/wiki/Social_network_service">1</a>]  enable people to communicate with each other in ways that would be  considered science fiction only a few years ago. This enablement has  been welcome by people at large, with some criticisms concerning  personal privacy and how well (or not) the networks they model reflect  real life (offline) relationships.<em> socially nervous</em> is a commentary on how these services have affected our way we perceive these relationships.</p>
<p><strong>The object<br />
				</strong><br />
 <a href="http://www.mauriciogiraldo.com/img/pfolio/sn3dmodel.png" title="Partial 3D model of the final version" rel="lightbox[p7]"><img align="right" src="/img/pfolio/sn3dmodelt.png" /></a>An electronic &ldquo;pet&rdquo; with movement and audiovisual actuation  capabilities.  The pet will communicate wirelessly with a host computer  which in turn will receive information from the owner&rsquo;s personal  &ldquo;identities&rdquo; in two social network services: Facebook and Twitter. Only  incoming information to these profiles will be taken into account  (information generated by the user&rsquo;s &ldquo;friends&rdquo;).</p>
<p>
This information will be manifested physically by the pet&rsquo;s behavior  (movement, sound, light). As information is accumulated by the pet manifestations become more  intense and erratic. As soon as someone touches the pet, it &ldquo;forgets&rdquo;  any information stored and &ldquo;sleeps&rdquo;. The process begins again as soon as  physical contact is lost.</p>
<p><strong>Awkwardness<br />
				</strong><a href="http://www.mauriciogiraldo.com/img/pfolio/snpcb.png" title="PCB diagram based on SparkFun #PRT-08812 ProtoBoard - Rectangle Wired 3&quot;" rel="lightbox[p7]"><img align="right" src="/img/pfolio/snpcbt.png" alt=" " /></a>The pet&#8217;s shape is informed by the awkwardness inherent in the process of virtual socialization. The object could easily be a teddy bear or some other more familiar shape which would make the observer <em>want</em> to interact with it. Instead, I decided to create a non-familiar, even agressive, shape with sharp edges and non-symmetrical. An observer would notice an erratically-behaving object wandering about in response to virtual interactions. By touching it, the user &ldquo;calms&rdquo; the pet; physical interaction &ldquo;defeats&rdquo; virtual interaction.</p>
<p><strong>Behavior states</strong><br />
					<a href="http://www.mauriciogiraldo.com/img/pfolio/snassembly.gif" title="Animation of initial assembly" rel="lightbox[p7]"><img align="right" src="/img/pfolio/snassemblyt.gif" /></a>Any information received by the pet will provoke behaviors in any of  these types: physical, visual, auditive.<br />
The stimulus is always  represented in the 5×7 matrix as an icon followed by the username/alias  of the person who provoked it. Below is a table of the different stimuli the pet receives along with the type of behavior it provokes:</p>
<table border="0" width="100%">
<tbody>
<tr>
<td><strong>Stimulus</strong></td>
<td><strong>Icon</strong></td>
<td><strong>Vibration</strong></td>
<td><strong>Movement</strong></td>
<td><strong>Lights</strong></td>
<td><strong>Auditive</strong></td>
</tr>
<tr>
<td>New tweet</td>
<td>?</td>
<td></td>
<td></td>
<td></td>
<td>x</td>
</tr>
<tr>
<td>New follow</td>
<td>?</td>
<td>x</td>
<td>x</td>
<td></td>
<td>x</td>
</tr>
<tr>
<td>New mention</td>
<td>!</td>
<td></td>
<td>x</td>
<td>x</td>
<td>x</td>
</tr>
<tr>
<td>New direct message</td>
<td>?</td>
<td>x</td>
<td>x</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Tagged in a photo</td>
<td>[ . ]</td>
<td>x</td>
<td></td>
<td></td>
<td>x</td>
</tr>
<tr>
<td>Tagged in a video</td>
<td>&gt;</td>
<td>x</td>
<td></td>
<td></td>
<td>x</td>
</tr>
<tr>
<td>Being touched</td>
<td>?</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<p>
A video of the behaviors working  (indirect stimulus received  via Bluetooth from a computer not in video). Initial/passive message  was later changed to &ldquo;please hug me&rdquo;:</p>
<p>
					<object type="application/x-shockwave-flash" width="280" height="210" data="http://www.flickr.com/apps/video/stewart.swf?v=71377" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><param name="flashvars" value="intl_lang=en-us&#038;photo_secret=1da017c9a9&#038;photo_id=5249779670" /><param name="movie" value="http://www.flickr.com/apps/video/stewart.swf?v=71377" /><param name="bgcolor" value="#000000" /><param name="allowFullScreen" value="true" /><embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/video/stewart.swf?v=71377" bgcolor="#000000" allowfullscreen="true" flashvars="intl_lang=en-us&#038;photo_secret=1da017c9a9&#038;photo_id=5249779670" height="210" width="280"></embed></object>
				</p>
<p><strong>Part list</strong></p>
<ul>
<li>1 x <a href="http://wiring.org.co/">Wiring Mini</a></li>
<li>1 x <a href="http://www.sparkfun.com/products/8812">Generic PCB Protoboard</a></li>
<li>Several <a href="http://www.sparkfun.com/products/116">Break away headers (straight)</a></li>
<li>1 x <a href="http://www.sparkfun.com/products/7918">Capacitive sensor board</a></li>
<li>1 x <a href="http://www.sparkfun.com/products/526">3.3V regulator</a></li>
<li>Lots of <a href="http://www.sparkfun.com/products/8430">F/F jumper wires</a></li>
<li>2 x <a href="http://www.sparkfun.com/products/98">snap action switch</a></li>
<li>3 x <a href="https://www.allelectronics.com/index.php?page=item&amp;id=LED-912&amp;extra=a%3A2%3A%7Bi%3A0%3Bs%3A40%3A%2203823345592a403b2f4a37a59384e7ab28f02be1%22%3Bi%3A1%3Bs%3A0%3A%22%22%3B%7D">super bright red LED</a></li>
<li>1 x 100 microF capacitor</li>
<li>2 x standard LED</li>
<li>7 x 100 ohm resistor</li>
<li>2 x 10 Kohm resistor</li>
<li>1 x <a href="http://www.sparkfun.com/products/158">BlueSmirf antenna</a></li>
<li>2 x DC motor</li>
<li>1 x <a href="http://www.jameco.com/webapp/wcs/stores/servlet/Product_10001_10001_2005420_-1">Lite-on LTP 747 5×7 LED matrix</a></li>
<li>1 x <a href="http://www.sparkfun.com/products/8449">vibration motor</a></li>
<li>1 x <a href="http://www.sparkfun.com/products/7950">buzzer</a></li>
<li>9V battery (although I later learned this battery should be avoided for this type of project)</li>
</ul>
<p>I used 3mm laser-cut acrylic for the box (<a href="http://www.mauriciogiraldo.com/lab/nervous/stuff/nervous_scheme3mm.skp">Sketchup 3D file</a>).</p>
<p>
A Processing-based visual interface will be developed to manage Facebook and Twitter profile settings.</p>
<p><strong>Code</strong><br />
The <a href="http://www.mauriciogiraldo.com/lab/nervous/stuff/mti_messages.zip">Processing code</a> uses random stimuli to show all possible behavior states. Modifications must be made in order to accomodate a particular social network service user. The <a href="http://www.mauriciogiraldo.com/lab/nervous/stuff/mti13.zip">Wiring code</a> is quite elaborate (~2k lines of code) but you are welcome to look into it.</p>
<p>This project was done as part of the requirements to complete the <a href="http://mtifall10.wordpress.com/">Fall 2010 Making Things Interact course</a> with Professor Mark Gross in Carnegie Mellon University.</p>
<p><a href="http://www.mauriciogiraldo.com/blog/2011/03/18/socially-nervous/" rel="bookmark">socially nervous</a> originalmente escrito en <a href="http://www.mauriciogiraldo.com/blog">mga/blog</a> en March 18, 2011.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mauriciogiraldo.com/blog/2011/03/18/socially-nervous/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Thought Factory</title>
		<link>http://www.mauriciogiraldo.com/blog/2010/03/28/the-thought-factory/</link>
		<comments>http://www.mauriciogiraldo.com/blog/2010/03/28/the-thought-factory/#comments</comments>
		<pubDate>Sun, 28 Mar 2010 22:13:59 +0000</pubDate>
		<dc:creator>mga</dc:creator>
				<category><![CDATA[arte]]></category>
		<category><![CDATA[diseño]]></category>
		<category><![CDATA[interacción]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[visualización]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.mauriciogiraldo.com/blog/?p=713</guid>
		<description><![CDATA[I was invited by my colleagues Hernando Barragán and Annelie Franke to collaborate with the Thought Factory, a project that started in their Design Studio 6 course for the second semester 2009. The project was commisioned by the XII Iberoamerican Theatre Festival in Bogotá, one of the most important festivals of its type in the [...]]]></description>
			<content:encoded><![CDATA[<p>I was invited by my colleagues Hernando Barragán and Annelie Franke to collaborate with the <em><a href="http://loquesefabrica.com">Thought Factory</a></em>, a project that started in their <a href="http://designblog.uniandes.edu.co/blogs/dise3135/">Design Studio 6</a> course for the second semester 2009. The project was commisioned by the XII Iberoamerican Theatre Festival in Bogotá, one of the most important festivals of its type in the world. The idea was to create a collaborative work that would allow people to interact with the festival.</p>
<p>With this in mind, the <em>Thought Factory</em> was created and its main purpose was to save and classify the thoughts of festival visitors. Thoughts are abstract and intangible notions (we can&#8217;t read minds&#8230; yet). The Factory was made to make those thoughts somewhat tangible, &#8220;saving&#8221; them in bottles that can later be opened and their contents made visible as the genius in the lamp.</p>
<p><object classid="clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b" width="450" height="288" codebase="http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0"><param name="autoplay" value="false" /><param name="loop" value="false" /><param name="controller" value="true" /><param name="src" value="/blog/wp-content/uploads/2010/03/visualizador.m4v" /><embed type="video/quicktime" width="450" height="288" src="/blog/wp-content/uploads/2010/03/visualizador.m4v"  controller="true" loop="false" autoplay="false"></embed></object></p>
<p>Each bottle represents an inquiry made by festival organizers. Every hour and a half a new bottle is placed in the filling station:</p>
<div id="attachment_705" class="wp-caption alignnone" style="width: 460px"><img src="http://www.mauriciogiraldo.com/blog/wp-content/uploads/2010/03/fill.jpg" alt="" title="A bottle being filled" width="450" height="236" class="size-full wp-image-705" /><p class="wp-caption-text">A bottle being filled</p></div>
<p>From that moment, and during the next ninety minutes, that bottle will be filled with thoughts from people who type them in the input stations:</p>
<div id="attachment_703" class="wp-caption alignnone" style="width: 460px"><img src="http://www.mauriciogiraldo.com/blog/wp-content/uploads/2010/03/input.jpg" alt="" title="Thought input machine" width="450" height="276" class="size-full wp-image-703" /><p class="wp-caption-text">Thought input machine</p></div>
<p>Thoughts can also be sent as an SMS message via mobile phone.</p>
<p>Since the Festival as for all ages it was necessary to curate these thoughts (basically removing obscene ones&#8230; let&#8217;s be honest, there&#8217;s plenty of obscenities in our thoughts :P).</p>
<div id="attachment_710" class="wp-caption alignnone" style="width: 460px"><img src="http://www.mauriciogiraldo.com/blog/wp-content/uploads/2010/03/curaduria.jpg" alt="" title="Curating machine" width="450" height="224" class="size-full wp-image-710" /><p class="wp-caption-text">Curating machine</p></div>
<p>Once approved, the message enters the bottle in the filling station:</p>
<p><object classid="clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b" width="450" height="288" codebase="http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0"><param name="autoplay" value="false" /><param name="loop" value="false" /><param name="controller" value="true" /><param name="src" value="/blog/wp-content/uploads/2010/03/llenado.m4v" /><embed type="video/quicktime" width="450" height="288" src="/blog/wp-content/uploads/2010/03/llenado.m4v" controller="true" loop="false" autoplay="false"></embed></object></p>
<p>When removed from the filling station, the bottle is labelled and placed with the rest of the full bottles so its thoughts can be read in the viewing station.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="450" height="253" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="data" value="http://www.flickr.com/apps/video/stewart.swf?v=71377" /><param name="flashvars" value="intl_lang=en-us&amp;photo_secret=721f3e0226&amp;photo_id=4470994212" /><param name="bgcolor" value="#000000" /><param name="allowFullScreen" value="true" /><param name="src" value="http://www.flickr.com/apps/video/stewart.swf?v=71377" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="450" height="253" src="http://www.flickr.com/apps/video/stewart.swf?v=71377" allowfullscreen="true" bgcolor="#000000" flashvars="intl_lang=en-us&amp;photo_secret=721f3e0226&amp;photo_id=4470994212" data="http://www.flickr.com/apps/video/stewart.swf?v=71377"></embed></object></p>
<p>At the end of the Festival (in april 4, 2010) there will be sixty bottles full of thoughts that can be read in the <a href="http://loquesefabrica.com">project website</a>.</p>
<p>My main tasks were developing the visual interfaces (thought input, thought curating, filling station, bottle visualization), the database that manages thoughts and inquiries and all communication happening between these and the bottles. SMS message service was kindly provided by <a href="http://www.contactosms.com.co">Contacto SMS</a>.</p>
<p>If you are curious about the tech side of the project: interfaces are made with Adobe Flash which communicate with a MySQL database via PHP and AMFPHP. Filling and viewing stations communicate with the bottles via <a href="http://wiring.org.co/">Wiring</a> using sockets and an RFID tag. ActionScript programming was made in <a href="http://www.fdt.powerflasher.com/">FDT</a>.</p>
<p><a href="http://www.mauriciogiraldo.com/blog/2010/03/28/the-thought-factory/" rel="bookmark">The Thought Factory</a> originalmente escrito en <a href="http://www.mauriciogiraldo.com/blog">mga/blog</a> en March 28, 2010.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mauriciogiraldo.com/blog/2010/03/28/the-thought-factory/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>La Fábrica de Pensamientos</title>
		<link>http://www.mauriciogiraldo.com/blog/2010/03/28/fabrica-de-pensamientos/</link>
		<comments>http://www.mauriciogiraldo.com/blog/2010/03/28/fabrica-de-pensamientos/#comments</comments>
		<pubDate>Sun, 28 Mar 2010 20:30:37 +0000</pubDate>
		<dc:creator>mga</dc:creator>
				<category><![CDATA[arte]]></category>
		<category><![CDATA[diseño]]></category>
		<category><![CDATA[interacción]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[visualización]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.mauriciogiraldo.com/blog/?p=676</guid>
		<description><![CDATA[Fui invitado por mis colegas Hernando Barragán y Annelie Franke a participar en la Fábrica de Pensamientos, un proyecto que se deprendió de su curso Estudio 6 del segundo semestre de 2009. El proyecto fue comisionado por el XII Festival Iberoamericano de Teatro de Bogotá, uno de los festivales de este tipo más importantes del [...]]]></description>
			<content:encoded><![CDATA[<p>Fui invitado por mis colegas Hernando Barragán y Annelie Franke a  participar en la <em><a href="http://loquesefabrica.com">Fábrica de Pensamientos</a></em>, un  proyecto que se deprendió de su <a href="http://designblog.uniandes.edu.co/blogs/dise3135/">curso  Estudio 6</a> del segundo semestre de 2009. El proyecto fue comisionado por el XII  Festival Iberoamericano de Teatro de Bogotá, uno de los festivales de este tipo más importantes del mundo. La idea era hacer una obra  colaborativa que permitiera a la gente interactuar con el festival.</p>
<p>A partir de esa premisa, se realizó la <em>Fábrica de Pensamientos</em> cuya  idea principal es guardar y clasificar los pensamientos de los  visitantes al festival. Los pensamientos son nociones abstractas e  intangibles (aún no podemos leer la mente). Con la Fábrica se busca  hacer esos pensamientos tangibles de alguna forma, &#8220;guardándolos&#8221; en  botellas que luego pueden ser abiertas y su contenido se hace visible  como el genio de la lámpara.</p>
<p><object classid="clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b" width="450" height="288" codebase="http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0"><param name="autoplay" value="false" /><param name="loop" value="false" /><param name="controller" value="true" /><param name="src" value="/blog/wp-content/uploads/2010/03/visualizador.m4v" /><embed type="video/quicktime" width="450" height="288" src="/blog/wp-content/uploads/2010/03/visualizador.m4v"  controller="true" loop="false" autoplay="false"></embed></object></p>
<p>Cada botella representa una inquietud planteada por el festival. Cada  hora y media se pone una nueva botella en la base de llenado:</p>
<div id="attachment_705" class="wp-caption alignnone" style="width: 460px"><img src="http://www.mauriciogiraldo.com/blog/wp-content/uploads/2010/03/fill.jpg" alt="" title="Una botella en proceso de ser llenada" width="450" height="236" class="size-full wp-image-705" /><p class="wp-caption-text">Una botella en proceso de ser llenada</p></div>
<p>A partir de ese momento, y durante los siguientes noventa minutos, se  llenará esa botella con los pensamientos que la gente escribe en las  máquinas de entrada:</p>
<div id="attachment_703" class="wp-caption alignnone" style="width: 460px"><img src="http://www.mauriciogiraldo.com/blog/wp-content/uploads/2010/03/input.jpg" alt="" title="Máquina de entrada de pensamiento" width="450" height="276" class="size-full wp-image-703" /><p class="wp-caption-text">Máquina de entrada de pensamiento</p></div>
<p>Pensamientos también pueden entrar en la botella vía mensaje de texto  de teléfono celular.</p>
<p>Dado que el Festival es un evento para toda la familia es necesario  hacer una curaduría de los pensamientos (básicamente prevenir el ingreso  de obscenidades&#8230; seamos honestos, hay <em>mucho</em> pensamiento  obsceno sucediendo en nuestras cabezas :P ).</p>
<div id="attachment_710" class="wp-caption alignnone" style="width: 460px"><img src="http://www.mauriciogiraldo.com/blog/wp-content/uploads/2010/03/curaduria.jpg" alt="" title="Máquina de curaduría" width="450" height="224" class="size-full wp-image-710" /><p class="wp-caption-text">Máquina de curaduría</p></div>
<p>Una vez aprobado, el mensaje entra a la botella que se encuentra en  la base de llenado:</p>
<p><object classid="clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b" width="450" height="288" codebase="http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0"><param name="autoplay" value="false" /><param name="loop" value="false" /><param name="controller" value="true" /><param name="src" value="/blog/wp-content/uploads/2010/03/llenado.m4v" /><embed type="video/quicktime" width="450" height="288" src="/blog/wp-content/uploads/2010/03/llenado.m4v" controller="true" loop="false" autoplay="false"></embed></object></p>
<p>Cuando se retira la botella de la base, se etiqueta y se guarda para  luego ser consultada por los visitantes en cualquier momento en la estación de visualización.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="450" height="253" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="data" value="http://www.flickr.com/apps/video/stewart.swf?v=71377" /><param name="flashvars" value="intl_lang=en-us&amp;photo_secret=721f3e0226&amp;photo_id=4470994212" /><param name="bgcolor" value="#000000" /><param name="allowFullScreen" value="true" /><param name="src" value="http://www.flickr.com/apps/video/stewart.swf?v=71377" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="450" height="253" src="http://www.flickr.com/apps/video/stewart.swf?v=71377" allowfullscreen="true" bgcolor="#000000" flashvars="intl_lang=en-us&amp;photo_secret=721f3e0226&amp;photo_id=4470994212" data="http://www.flickr.com/apps/video/stewart.swf?v=71377"></embed></object></p>
<p>Al finalizar el Festival en abril 4 de 2010 habrá sesenta botellas llenas de pensamientos que podrán ser visualizadas en el <a href="http://loquesefabrica.com">sitio web del proyecto</a>.</p>
<p>Mi labor principal fue desarrollar la parte visual (interfaz de  entrada de pensamientos, interfaz de moderación, interfaz de llenado,  interfaz de visualización, sitio web), la base de datos que soporta el sistema de pensamientos e inquietudes y toda la comunicación que sucede entre estas y  las botellas. El sistema de mensajes de texto fue amablemente provisto  por <a href="http://www.contactosms.com.co">Contacto SMS</a>.</p>
<p>Si tiene curiosidad de saber qué tecnologías están involucradas: las  interfases están hechas en Adobe Flash y se comunican con la base de  datos MySQL usando PHP y AMFPHP. Las interfases de llenado y  visualización de botellas se comunican vía <em>sockets</em> con <a href="http://wiring.org.co/">Wiring</a> usando un  tag RFID.</p>
<p><a href="http://www.mauriciogiraldo.com/blog/2010/03/28/fabrica-de-pensamientos/" rel="bookmark">La Fábrica de Pensamientos</a> originalmente escrito en <a href="http://www.mauriciogiraldo.com/blog">mga/blog</a> en March 28, 2010.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mauriciogiraldo.com/blog/2010/03/28/fabrica-de-pensamientos/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>pop goes the weasel</title>
		<link>http://www.mauriciogiraldo.com/blog/2009/10/20/pop-goes-the-weasel/</link>
		<comments>http://www.mauriciogiraldo.com/blog/2009/10/20/pop-goes-the-weasel/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 01:31:38 +0000</pubDate>
		<dc:creator>mga</dc:creator>
				<category><![CDATA[ciencia]]></category>
		<category><![CDATA[general]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[visualización]]></category>

		<guid isPermaLink="false">http://www.mauriciogiraldo.com/blog/?p=479</guid>
		<description><![CDATA[Inventando el agua que moja Para hacer funcionar el código, cree un nuevo documento de Flash ActionScript 3 y meta tres textfields con nombre de instancia status_txt, link_txt, y weasel_txt. Puede cambiar el texto objetivo (variable target) por cualquier otro que tenga letras de la A a la Z (mayúsculas), espacio, punto y signo de [...]]]></description>
			<content:encoded><![CDATA[<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="500" height="150" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.mauriciogiraldo.com/blog/wp-content/uploads/2009/10/weasel.swf" /><embed type="application/x-shockwave-flash" width="500" height="150" src="http://www.mauriciogiraldo.com/blog/wp-content/uploads/2009/10/weasel.swf"></embed></object></p>
<p><a href="http://en.wikipedia.org/wiki/Weasel_program">Inventando el agua que moja</a></p>
<p>Para hacer funcionar el código, cree un nuevo documento de Flash ActionScript 3 y meta tres textfields con nombre de instancia <code>status_txt</code>, <code>link_txt</code>, y <code>weasel_txt</code>. Puede cambiar el texto objetivo (variable <code>target</code>) por cualquier otro que tenga letras de la A a la Z (mayúsculas), espacio, punto y signo de exclamación. Si quiere más letras tiene que modificar la funcion <code>randomLetter()</code>.</p>
<p>El máximo número de generaciones que me ha generado para este texto es de 1452.</p>
<p>El código (AS3):</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;color: #000; font-family:Inconsolata,"Andale Mono","Courier New",Courier,Mono"><span style="color: #6699cc; font-weight: bold;color: #060;">var</span> <span style="color: #004993;">target</span><span style="color: #000066; font-weight: bold;color: #000;">:</span><span style="color: #004993;">String</span> = <span style="color: #990000;color: #f00;">&quot;O TRUE APOTHECARY! THY DRUGS ARE QUICK. THUS WITH A KISS I DIE.&quot;</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
<span style="color: #6699cc; font-weight: bold;color: #060;">var</span> current<span style="color: #000066; font-weight: bold;color: #000;">:</span><span style="color: #004993;">String</span> = <span style="color: #990000;color: #f00;">&quot;&quot;</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
<span style="color: #6699cc; font-weight: bold;color: #060;">var</span> numSiblings<span style="color: #000066; font-weight: bold;color: #000;">:</span><span style="color: #004993;">Number</span> = <span style="color: #000000; font-weight:bold;color: #f00;">100</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
<span style="color: #6699cc; font-weight: bold;color: #060;">var</span> variation<span style="color: #000066; font-weight: bold;color: #000;">:</span><span style="color: #004993;">Number</span> = <span style="color: #000000; font-weight:bold;color: #f00;">5</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
<span style="color: #6699cc; font-weight: bold;color: #060;">var</span> stepsNeeded<span style="color: #000066; font-weight: bold;color: #000;">:</span><span style="color: #004993;">Number</span> = <span style="color: #000000; font-weight:bold;color: #f00;">0</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
<span style="color: #6699cc; font-weight: bold;color: #060;">var</span> generation<span style="color: #000066; font-weight: bold;color: #000;">:</span><span style="color: #004993;">Array</span> = <span style="color: #000000;color: #000;">&#91;</span><span style="color: #000000;color: #000;">&#93;</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
<span style="color: #6699cc; font-weight: bold;color: #060;">var</span> <span style="color: #004993;">timer</span><span style="color: #000066; font-weight: bold;color: #000;">:</span><span style="color: #004993;">Timer</span> = <span style="color: #0033ff; font-weight: bold;color: #00f;">new</span> <span style="color: #004993;">Timer</span><span style="color: #000000;color: #000;">&#40;</span><span style="color: #000000; font-weight:bold;color: #f00;">10</span><span style="color: #000000;color: #000;">&#41;</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
&nbsp;
<span style="color: #339966; font-weight: bold;color: #00f;">function</span> newGeneration<span style="color: #000000;color: #000;">&#40;</span><span style="color: #000000;color: #000;">&#41;</span><span style="color: #000066; font-weight: bold;color: #000;">:</span><span style="color: #004993;">Array</span> <span style="color: #000000;color: #000;">&#123;</span>
	<span style="color: #6699cc; font-weight: bold;color: #060;">var</span> i<span style="color: #000066; font-weight: bold;color: #000;">:</span><span style="color: #004993;">Number</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
	<span style="color: #6699cc; font-weight: bold;color: #060;">var</span> thisGeneration<span style="color: #000066; font-weight: bold;color: #000;">:</span><span style="color: #004993;">Array</span> = <span style="color: #000000;color: #000;">&#91;</span><span style="color: #000000;color: #000;">&#93;</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
	<span style="color: #0033ff; font-weight: bold;color: #00f;">for</span> <span style="color: #000000;color: #000;">&#40;</span>i=<span style="color: #000000; font-weight:bold;color: #f00;">0</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>i <span style="color: #000066; font-weight: bold;color: #000;">&lt;</span> numSiblings<span style="color: #000066; font-weight: bold;color: #000;">;++</span>i<span style="color: #000000;color: #000;">&#41;</span> <span style="color: #000000;color: #000;">&#123;</span>
		thisGeneration<span style="color: #000066; font-weight: bold;color: #000;">.</span><span style="color: #004993;">push</span><span style="color: #000000;color: #000;">&#40;</span>createSibling<span style="color: #000000;color: #000;">&#40;</span>current<span style="color: #000000;color: #000;">&#41;</span><span style="color: #000000;color: #000;">&#41;</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
	<span style="color: #000000;color: #000;">&#125;</span>
	<span style="color: #0033ff; font-weight: bold;color: #00f;">return</span> thisGeneration<span style="color: #000066; font-weight: bold;color: #000;">;</span>
<span style="color: #000000;color: #000;">&#125;</span>
&nbsp;
<span style="color: #339966; font-weight: bold;color: #00f;">function</span> newParent<span style="color: #000000;color: #000;">&#40;</span><span style="color: #000000;color: #000;">&#41;</span><span style="color: #000066; font-weight: bold;color: #000;">:</span><span style="color: #004993;">String</span> <span style="color: #000000;color: #000;">&#123;</span>
	<span style="color: #6699cc; font-weight: bold;color: #060;">var</span> i<span style="color: #000066; font-weight: bold;color: #000;">:</span><span style="color: #004993;">Number</span><span style="color: #000066; font-weight: bold;color: #000;">,</span> r<span style="color: #000066; font-weight: bold;color: #000;">:</span><span style="color: #004993;">String</span> = <span style="color: #990000;color: #f00;">&quot;&quot;</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
	<span style="color: #0033ff; font-weight: bold;color: #00f;">for</span> <span style="color: #000000;color: #000;">&#40;</span>i=<span style="color: #000000; font-weight:bold;color: #f00;">0</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>i <span style="color: #000066; font-weight: bold;color: #000;">&lt;</span> <span style="color: #004993;">target</span><span style="color: #000066; font-weight: bold;color: #000;">.</span><span style="color: #004993;">length</span><span style="color: #000066; font-weight: bold;color: #000;">;++</span>i<span style="color: #000000;color: #000;">&#41;</span> <span style="color: #000000;color: #000;">&#123;</span>
		r <span style="color: #000066; font-weight: bold;color: #000;">+</span>= randomLetter<span style="color: #000000;color: #000;">&#40;</span><span style="color: #000000;color: #000;">&#41;</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
	<span style="color: #000000;color: #000;">&#125;</span>
	<span style="color: #0033ff; font-weight: bold;color: #00f;">return</span> r<span style="color: #000066; font-weight: bold;color: #000;">;</span>
<span style="color: #000000;color: #000;">&#125;</span>
&nbsp;
<span style="color: #339966; font-weight: bold;color: #00f;">function</span> createSibling<span style="color: #000000;color: #000;">&#40;</span>dad<span style="color: #000066; font-weight: bold;color: #000;">:</span><span style="color: #004993;">String</span><span style="color: #000000;color: #000;">&#41;</span><span style="color: #000066; font-weight: bold;color: #000;">:</span><span style="color: #004993;">String</span> <span style="color: #000000;color: #000;">&#123;</span>
	<span style="color: #6699cc; font-weight: bold;color: #060;">var</span> i<span style="color: #000066; font-weight: bold;color: #000;">:</span><span style="color: #004993;">Number</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
	<span style="color: #6699cc; font-weight: bold;color: #060;">var</span> sibling<span style="color: #000066; font-weight: bold;color: #000;">:</span><span style="color: #004993;">String</span> = <span style="color: #990000;color: #f00;">&quot;&quot;</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
	<span style="color: #0033ff; font-weight: bold;color: #00f;">for</span> <span style="color: #000000;color: #000;">&#40;</span>i=<span style="color: #000000; font-weight:bold;color: #f00;">0</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>i <span style="color: #000066; font-weight: bold;color: #000;">&lt;</span> dad<span style="color: #000066; font-weight: bold;color: #000;">.</span><span style="color: #004993;">length</span><span style="color: #000066; font-weight: bold;color: #000;">;++</span>i<span style="color: #000000;color: #000;">&#41;</span> <span style="color: #000000;color: #000;">&#123;</span>
		<span style="color: #0033ff; font-weight: bold;color: #00f;">if</span> <span style="color: #000000;color: #000;">&#40;</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;color: #000;">.</span><span style="color: #004993;">random</span><span style="color: #000000;color: #000;">&#40;</span><span style="color: #000000;color: #000;">&#41;</span><span style="color: #000066; font-weight: bold;color: #000;">*</span><span style="color: #000000; font-weight:bold;color: #f00;">100</span><span style="color: #000066; font-weight: bold;color: #000;">&lt;</span>variation<span style="color: #000000;color: #000;">&#41;</span> <span style="color: #000000;color: #000;">&#123;</span>
			sibling <span style="color: #000066; font-weight: bold;color: #000;">+</span>= randomLetter<span style="color: #000000;color: #000;">&#40;</span><span style="color: #000000;color: #000;">&#41;</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
		<span style="color: #000000;color: #000;">&#125;</span> <span style="color: #0033ff; font-weight: bold;color: #00f;">else</span> <span style="color: #000000;color: #000;">&#123;</span>
			sibling <span style="color: #000066; font-weight: bold;color: #000;">+</span>= dad<span style="color: #000066; font-weight: bold;color: #000;">.</span><span style="color: #004993;">charAt</span><span style="color: #000000;color: #000;">&#40;</span>i<span style="color: #000000;color: #000;">&#41;</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
		<span style="color: #000000;color: #000;">&#125;</span>
	<span style="color: #000000;color: #000;">&#125;</span>
	<span style="color: #0033ff; font-weight: bold;color: #00f;">return</span> sibling<span style="color: #000066; font-weight: bold;color: #000;">;</span>
<span style="color: #000000;color: #000;">&#125;</span>
&nbsp;
<span style="color: #339966; font-weight: bold;color: #00f;">function</span> randomLetter<span style="color: #000000;color: #000;">&#40;</span><span style="color: #000000;color: #000;">&#41;</span><span style="color: #000066; font-weight: bold;color: #000;">:</span><span style="color: #004993;">String</span> <span style="color: #000000;color: #000;">&#123;</span>
	<span style="color: #6699cc; font-weight: bold;color: #060;">var</span> r<span style="color: #000066; font-weight: bold;color: #000;">:</span><span style="color: #004993;">String</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
	<span style="color: #6699cc; font-weight: bold;color: #060;">var</span> n<span style="color: #000066; font-weight: bold;color: #000;">:</span><span style="color: #004993;">Number</span> = <span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;color: #000;">.</span><span style="color: #004993;">floor</span><span style="color: #000000;color: #000;">&#40;</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;color: #000;">.</span><span style="color: #004993;">random</span><span style="color: #000000;color: #000;">&#40;</span><span style="color: #000000;color: #000;">&#41;</span><span style="color: #000066; font-weight: bold;color: #000;">*</span><span style="color: #000000; font-weight:bold;color: #f00;">28</span><span style="color: #000000;color: #000;">&#41;</span><span style="color: #000066; font-weight: bold;color: #000;">+</span><span style="color: #000000; font-weight:bold;color: #f00;">62</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
	<span style="color: #0033ff; font-weight: bold;color: #00f;">if</span> <span style="color: #000000;color: #000;">&#40;</span>n==<span style="color: #000000; font-weight:bold;color: #f00;">62</span><span style="color: #000000;color: #000;">&#41;</span> <span style="color: #000000;color: #000;">&#123;</span>
		r = <span style="color: #990000;color: #f00;">&quot; &quot;</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
	<span style="color: #000000;color: #000;">&#125;</span> <span style="color: #0033ff; font-weight: bold;color: #00f;">else</span> <span style="color: #0033ff; font-weight: bold;color: #00f;">if</span> <span style="color: #000000;color: #000;">&#40;</span>n==<span style="color: #000000; font-weight:bold;color: #f00;">63</span><span style="color: #000000;color: #000;">&#41;</span> <span style="color: #000000;color: #000;">&#123;</span>
		r = <span style="color: #990000;color: #f00;">&quot;.&quot;</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
	<span style="color: #000000;color: #000;">&#125;</span> <span style="color: #0033ff; font-weight: bold;color: #00f;">else</span> <span style="color: #0033ff; font-weight: bold;color: #00f;">if</span> <span style="color: #000000;color: #000;">&#40;</span>n==<span style="color: #000000; font-weight:bold;color: #f00;">64</span><span style="color: #000000;color: #000;">&#41;</span> <span style="color: #000000;color: #000;">&#123;</span>
		r = <span style="color: #990000;color: #f00;">&quot;!&quot;</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
	<span style="color: #000000;color: #000;">&#125;</span> <span style="color: #0033ff; font-weight: bold;color: #00f;">else</span> <span style="color: #000000;color: #000;">&#123;</span>
		r = <span style="color: #004993;">String</span><span style="color: #000066; font-weight: bold;color: #000;">.</span><span style="color: #004993;">fromCharCode</span><span style="color: #000000;color: #000;">&#40;</span>n<span style="color: #000000;color: #000;">&#41;</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
	<span style="color: #000000;color: #000;">&#125;</span>
	<span style="color: #0033ff; font-weight: bold;color: #00f;">return</span> r<span style="color: #000066; font-weight: bold;color: #000;">;</span>
<span style="color: #000000;color: #000;">&#125;</span>
&nbsp;
<span style="color: #339966; font-weight: bold;color: #00f;">function</span> qualifyGeneration<span style="color: #000000;color: #000;">&#40;</span><span style="color: #000000;color: #000;">&#41;</span><span style="color: #000066; font-weight: bold;color: #000;">:</span><span style="color: #004993;">Number</span> <span style="color: #000000;color: #000;">&#123;</span>
	<span style="color: #6699cc; font-weight: bold;color: #060;">var</span> i<span style="color: #000066; font-weight: bold;color: #000;">:</span><span style="color: #004993;">Number</span><span style="color: #000066; font-weight: bold;color: #000;">,</span> j<span style="color: #000066; font-weight: bold;color: #000;">:</span><span style="color: #004993;">Number</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
	<span style="color: #6699cc; font-weight: bold;color: #060;">var</span> qualification<span style="color: #000066; font-weight: bold;color: #000;">:</span><span style="color: #004993;">Array</span> = <span style="color: #000000;color: #000;">&#91;</span><span style="color: #000000;color: #000;">&#93;</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
	<span style="color: #6699cc; font-weight: bold;color: #060;">var</span> tempQ<span style="color: #000066; font-weight: bold;color: #000;">:</span><span style="color: #004993;">Number</span> = <span style="color: #000000; font-weight:bold;color: #f00;">0</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
	<span style="color: #0033ff; font-weight: bold;color: #00f;">for</span> <span style="color: #000000;color: #000;">&#40;</span>i=<span style="color: #000000; font-weight:bold;color: #f00;">0</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>i <span style="color: #000066; font-weight: bold;color: #000;">&lt;</span> generation<span style="color: #000066; font-weight: bold;color: #000;">.</span><span style="color: #004993;">length</span><span style="color: #000066; font-weight: bold;color: #000;">;++</span>i<span style="color: #000000;color: #000;">&#41;</span> <span style="color: #000000;color: #000;">&#123;</span>
		tempQ = <span style="color: #000000; font-weight:bold;color: #f00;">0</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
		<span style="color: #0033ff; font-weight: bold;color: #00f;">for</span> <span style="color: #000000;color: #000;">&#40;</span>j=<span style="color: #000000; font-weight:bold;color: #f00;">0</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>j<span style="color: #000066; font-weight: bold;color: #000;">&lt;</span>generation<span style="color: #000000;color: #000;">&#91;</span>i<span style="color: #000000;color: #000;">&#93;</span><span style="color: #000066; font-weight: bold;color: #000;">.</span><span style="color: #004993;">length</span><span style="color: #000066; font-weight: bold;color: #000;">;++</span>j<span style="color: #000000;color: #000;">&#41;</span> <span style="color: #000000;color: #000;">&#123;</span>
			<span style="color: #0033ff; font-weight: bold;color: #00f;">if</span> <span style="color: #000000;color: #000;">&#40;</span>generation<span style="color: #000000;color: #000;">&#91;</span>i<span style="color: #000000;color: #000;">&#93;</span><span style="color: #000066; font-weight: bold;color: #000;">.</span><span style="color: #004993;">charAt</span><span style="color: #000000;color: #000;">&#40;</span>j<span style="color: #000000;color: #000;">&#41;</span>==<span style="color: #004993;">target</span><span style="color: #000066; font-weight: bold;color: #000;">.</span><span style="color: #004993;">charAt</span><span style="color: #000000;color: #000;">&#40;</span>j<span style="color: #000000;color: #000;">&#41;</span><span style="color: #000000;color: #000;">&#41;</span> <span style="color: #000000;color: #000;">&#123;</span>
				tempQ <span style="color: #000066; font-weight: bold;color: #000;">+</span>= <span style="color: #000000; font-weight:bold;color: #f00;">1</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
			<span style="color: #000000;color: #000;">&#125;</span>
		<span style="color: #000000;color: #000;">&#125;</span>
		qualification<span style="color: #000066; font-weight: bold;color: #000;">.</span><span style="color: #004993;">push</span><span style="color: #000000;color: #000;">&#40;</span>tempQ<span style="color: #000000;color: #000;">&#41;</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
	<span style="color: #000000;color: #000;">&#125;</span>
	<span style="color: #6699cc; font-weight: bold;color: #060;">var</span> maxQIndex = <span style="color: #000000; font-weight:bold;color: #f00;">0</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
	<span style="color: #6699cc; font-weight: bold;color: #060;">var</span> maxQ = <span style="color: #000000; font-weight:bold;color: #f00;">0</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
	<span style="color: #0033ff; font-weight: bold;color: #00f;">for</span> <span style="color: #000000;color: #000;">&#40;</span>i=<span style="color: #000000; font-weight:bold;color: #f00;">0</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>i <span style="color: #000066; font-weight: bold;color: #000;">&lt;</span> qualification<span style="color: #000066; font-weight: bold;color: #000;">.</span><span style="color: #004993;">length</span><span style="color: #000066; font-weight: bold;color: #000;">;++</span>i<span style="color: #000000;color: #000;">&#41;</span> <span style="color: #000000;color: #000;">&#123;</span>
		<span style="color: #0033ff; font-weight: bold;color: #00f;">if</span> <span style="color: #000000;color: #000;">&#40;</span>qualification<span style="color: #000000;color: #000;">&#91;</span>i<span style="color: #000000;color: #000;">&#93;</span><span style="color: #000066; font-weight: bold;color: #000;">&gt;</span>maxQ<span style="color: #000000;color: #000;">&#41;</span> <span style="color: #000000;color: #000;">&#123;</span>
			maxQ = qualification<span style="color: #000000;color: #000;">&#91;</span>i<span style="color: #000000;color: #000;">&#93;</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
			maxQIndex = i<span style="color: #000066; font-weight: bold;color: #000;">;</span>
		<span style="color: #000000;color: #000;">&#125;</span>
	<span style="color: #000000;color: #000;">&#125;</span>
	<span style="color: #0033ff; font-weight: bold;color: #00f;">return</span> maxQIndex<span style="color: #000066; font-weight: bold;color: #000;">;</span>
<span style="color: #000000;color: #000;">&#125;</span>
&nbsp;
<span style="color: #339966; font-weight: bold;color: #00f;">function</span> parseGeneration<span style="color: #000000;color: #000;">&#40;</span>event<span style="color: #000066; font-weight: bold;color: #000;">:</span><span style="color: #004993;">TimerEvent</span><span style="color: #000000;color: #000;">&#41;</span> <span style="color: #000000;color: #000;">&#123;</span>
	status_txt<span style="color: #000066; font-weight: bold;color: #000;">.</span><span style="color: #004993;">htmlText</span> = <span style="color: #990000;color: #f00;">&quot;GENERACIONES: &quot;</span> <span style="color: #000066; font-weight: bold;color: #000;">+</span> stepsNeeded<span style="color: #000066; font-weight: bold;color: #000;">;</span>
	generation = newGeneration<span style="color: #000000;color: #000;">&#40;</span><span style="color: #000000;color: #000;">&#41;</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
	current = generation<span style="color: #000000;color: #000;">&#91;</span>qualifyGeneration<span style="color: #000000;color: #000;">&#40;</span><span style="color: #000000;color: #000;">&#41;</span><span style="color: #000000;color: #000;">&#93;</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
	weasel_txt<span style="color: #000066; font-weight: bold;color: #000;">.</span><span style="color: #004993;">text</span> = current<span style="color: #000066; font-weight: bold;color: #000;">;</span>
	<span style="color: #0033ff; font-weight: bold;color: #00f;">if</span> <span style="color: #000000;color: #000;">&#40;</span>current == <span style="color: #004993;">target</span><span style="color: #000000;color: #000;">&#41;</span> <span style="color: #000000;color: #000;">&#123;</span>
		<span style="color: #004993;">timer</span><span style="color: #000066; font-weight: bold;color: #000;">.</span><span style="color: #004993;">stop</span><span style="color: #000000;color: #000;">&#40;</span><span style="color: #000000;color: #000;">&#41;</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
		status_txt<span style="color: #000066; font-weight: bold;color: #000;">.</span><span style="color: #004993;">htmlText</span> = <span style="color: #990000;color: #f00;">&quot;COMPLETADO LUEGO DE &quot;</span> <span style="color: #000066; font-weight: bold;color: #000;">+</span> stepsNeeded <span style="color: #000066; font-weight: bold;color: #000;">+</span> <span style="color: #990000;color: #f00;">&quot; GENERACIONES&quot;</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
		link_txt<span style="color: #000066; font-weight: bold;color: #000;">.</span><span style="color: #004993;">htmlText</span> = <span style="color: #990000;color: #f00;">&quot;&lt;a href=<span style="">\&quot;</span>event:restart<span style="">\&quot;</span>&gt;OTRA VEZ&lt;/a&gt;&quot;</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
	<span style="color: #000000;color: #000;">&#125;</span> <span style="color: #0033ff; font-weight: bold;color: #00f;">else</span> <span style="color: #000000;color: #000;">&#123;</span>
		stepsNeeded<span style="color: #000066; font-weight: bold;color: #000;">++;</span>
	<span style="color: #000000;color: #000;">&#125;</span>
<span style="color: #000000;color: #000;">&#125;</span>
&nbsp;
<span style="color: #339966; font-weight: bold;color: #00f;">function</span> doClick <span style="color: #000000;color: #000;">&#40;</span>e<span style="color: #000066; font-weight: bold;color: #000;">:</span><span style="color: #004993;">TextEvent</span><span style="color: #000000;color: #000;">&#41;</span> <span style="color: #000000;color: #000;">&#123;</span>
	<span style="color: #0033ff; font-weight: bold;color: #00f;">if</span> <span style="color: #000000;color: #000;">&#40;</span>e<span style="color: #000066; font-weight: bold;color: #000;">.</span><span style="color: #004993;">text</span>==<span style="color: #990000;color: #f00;">&quot;stop&quot;</span><span style="color: #000000;color: #000;">&#41;</span> <span style="color: #000000;color: #000;">&#123;</span>
		link_txt<span style="color: #000066; font-weight: bold;color: #000;">.</span><span style="color: #004993;">htmlText</span> = <span style="color: #990000;color: #f00;">&quot;&lt;a href=<span style="">\&quot;</span>event:continue<span style="">\&quot;</span>&gt;CONTINUAR&lt;/a&gt;&quot;</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
		<span style="color: #004993;">timer</span><span style="color: #000066; font-weight: bold;color: #000;">.</span><span style="color: #004993;">stop</span><span style="color: #000000;color: #000;">&#40;</span><span style="color: #000000;color: #000;">&#41;</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
	<span style="color: #000000;color: #000;">&#125;</span> <span style="color: #0033ff; font-weight: bold;color: #00f;">else</span> <span style="color: #0033ff; font-weight: bold;color: #00f;">if</span> <span style="color: #000000;color: #000;">&#40;</span>e<span style="color: #000066; font-weight: bold;color: #000;">.</span><span style="color: #004993;">text</span>==<span style="color: #990000;color: #f00;">&quot;continue&quot;</span><span style="color: #000000;color: #000;">&#41;</span> <span style="color: #000000;color: #000;">&#123;</span>
		link_txt<span style="color: #000066; font-weight: bold;color: #000;">.</span><span style="color: #004993;">htmlText</span> = <span style="color: #990000;color: #f00;">&quot;&lt;a href=<span style="">\&quot;</span>event:stop<span style="">\&quot;</span>&gt;DETENER&lt;/a&gt;&quot;</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
		<span style="color: #004993;">timer</span><span style="color: #000066; font-weight: bold;color: #000;">.</span><span style="color: #004993;">start</span><span style="color: #000000;color: #000;">&#40;</span><span style="color: #000000;color: #000;">&#41;</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
	<span style="color: #000000;color: #000;">&#125;</span> <span style="color: #0033ff; font-weight: bold;color: #00f;">else</span> <span style="color: #0033ff; font-weight: bold;color: #00f;">if</span> <span style="color: #000000;color: #000;">&#40;</span>e<span style="color: #000066; font-weight: bold;color: #000;">.</span><span style="color: #004993;">text</span>==<span style="color: #990000;color: #f00;">&quot;restart&quot;</span><span style="color: #000000;color: #000;">&#41;</span> <span style="color: #000000;color: #000;">&#123;</span>
		<span style="color: #004993;">init</span><span style="color: #000000;color: #000;">&#40;</span><span style="color: #000000;color: #000;">&#41;</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
	<span style="color: #000000;color: #000;">&#125;</span>
<span style="color: #000000;color: #000;">&#125;</span>
&nbsp;
<span style="color: #339966; font-weight: bold;color: #00f;">function</span> <span style="color: #004993;">init</span> <span style="color: #000000;color: #000;">&#40;</span><span style="color: #000000;color: #000;">&#41;</span> <span style="color: #000000;color: #000;">&#123;</span>
	stepsNeeded = <span style="color: #000000; font-weight:bold;color: #f00;">0</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
	current = newParent<span style="color: #000000;color: #000;">&#40;</span><span style="color: #000000;color: #000;">&#41;</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
	<span style="color: #004993;">timer</span><span style="color: #000066; font-weight: bold;color: #000;">.</span><span style="color: #004993;">start</span><span style="color: #000000;color: #000;">&#40;</span><span style="color: #000000;color: #000;">&#41;</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
&nbsp;
	<span style="color: #6699cc; font-weight: bold;color: #060;">var</span> style<span style="color: #000066; font-weight: bold;color: #000;">:</span><span style="color: #004993;">StyleSheet</span> = <span style="color: #0033ff; font-weight: bold;color: #00f;">new</span> <span style="color: #004993;">StyleSheet</span><span style="color: #000000;color: #000;">&#40;</span><span style="color: #000000;color: #000;">&#41;</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
	<span style="color: #6699cc; font-weight: bold;color: #060;">var</span> <span style="color: #004993;">link</span><span style="color: #000066; font-weight: bold;color: #000;">:</span><span style="color: #004993;">Object</span> = <span style="color: #0033ff; font-weight: bold;color: #00f;">new</span> <span style="color: #004993;">Object</span><span style="color: #000000;color: #000;">&#40;</span><span style="color: #000000;color: #000;">&#41;</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
	<span style="color: #004993;">link</span><span style="color: #000066; font-weight: bold;color: #000;">.</span>textDecoration = <span style="color: #990000;color: #f00;">&quot;underline&quot;</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
	style<span style="color: #000066; font-weight: bold;color: #000;">.</span><span style="color: #004993;">setStyle</span><span style="color: #000000;color: #000;">&#40;</span><span style="color: #990000;color: #f00;">&quot;a:hover&quot;</span><span style="color: #000066; font-weight: bold;color: #000;">,</span> <span style="color: #004993;">link</span><span style="color: #000000;color: #000;">&#41;</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
	link_txt<span style="color: #000066; font-weight: bold;color: #000;">.</span><span style="color: #004993;">styleSheet</span> = style<span style="color: #000066; font-weight: bold;color: #000;">;</span>
	link_txt<span style="color: #000066; font-weight: bold;color: #000;">.</span><span style="color: #004993;">htmlText</span> = <span style="color: #990000;color: #f00;">&quot;&lt;a href=<span style="">\&quot;</span>event:stop<span style="">\&quot;</span>&gt;DETENER&lt;/a&gt;&quot;</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
<span style="color: #000000;color: #000;">&#125;</span>
&nbsp;
link_txt<span style="color: #000066; font-weight: bold;color: #000;">.</span><span style="color: #004993;">addEventListener</span><span style="color: #000000;color: #000;">&#40;</span><span style="color: #004993;">TextEvent</span><span style="color: #000066; font-weight: bold;color: #000;">.</span><span style="color: #004993;">LINK</span><span style="color: #000066; font-weight: bold;color: #000;">,</span> doClick<span style="color: #000000;color: #000;">&#41;</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
<span style="color: #004993;">timer</span><span style="color: #000066; font-weight: bold;color: #000;">.</span><span style="color: #004993;">addEventListener</span><span style="color: #000000;color: #000;">&#40;</span><span style="color: #990000;color: #f00;">&quot;timer&quot;</span><span style="color: #000066; font-weight: bold;color: #000;">,</span>parseGeneration<span style="color: #000000;color: #000;">&#41;</span><span style="color: #000066; font-weight: bold;color: #000;">;</span>
&nbsp;
<span style="color: #004993;">init</span><span style="color: #000000;color: #000;">&#40;</span><span style="color: #000000;color: #000;">&#41;</span><span style="color: #000066; font-weight: bold;color: #000;">;</span></pre></div></div>

<p><a href="http://www.mauriciogiraldo.com/blog/2009/10/20/pop-goes-the-weasel/" rel="bookmark">pop goes the weasel</a> originalmente escrito en <a href="http://www.mauriciogiraldo.com/blog">mga/blog</a> en October 20, 2009.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mauriciogiraldo.com/blog/2009/10/20/pop-goes-the-weasel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Múltiples views no-jerárquicas en iPhone</title>
		<link>http://www.mauriciogiraldo.com/blog/2009/10/09/multiples-views-no-jerarquicas-en-iphone/</link>
		<comments>http://www.mauriciogiraldo.com/blog/2009/10/09/multiples-views-no-jerarquicas-en-iphone/#comments</comments>
		<pubDate>Fri, 09 Oct 2009 08:25:29 +0000</pubDate>
		<dc:creator>mga</dc:creator>
				<category><![CDATA[iphone]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.mauriciogiraldo.com/blog/?p=446</guid>
		<description><![CDATA[(English version at the bottom of this post) Recientemente he estado trabajando en XCode y Cocoa Touch para un proyecto que estoy haciendo para el iPhone. Objective-C (el lenguaje de programación usado) tiene sus mañas (como todo lenguaje), pero he encontrado bastante ayuda en la web, gracias especialmente a Stanford, Google y a Stackoverflow. Creo [...]]]></description>
			<content:encoded><![CDATA[<p><object style="width: 192px; height: 380px;" classid="clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b" width="192" height="380" codebase="http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0"><param name="src" value="http://www.mauriciogiraldo.com/blog/wp-content/uploads/2009/10/InfiniteViews1.mov" /><param name="align" value="right" /><embed style="width: 192px; height: 380px;" type="video/quicktime" width="192" height="380" src="http://www.mauriciogiraldo.com/blog/wp-content/uploads/2009/10/InfiniteViews1.mov" align="right"></embed></object></p>
<p><em>(English version at the bottom of this post)</em></p>
<p>Recientemente he estado trabajando en <a href="http://developer.apple.com/TOOLS/Xcode/">XCode</a> y <a href="http://developer.apple.com/technology/cocoa.html">Cocoa Touch</a> para un proyecto que estoy haciendo para el iPhone. Objective-C (el lenguaje de programación usado) tiene sus mañas (como todo lenguaje), pero he encontrado bastante ayuda en la web, gracias especialmente a <a href="http://itunes.stanford.edu/">Stanford</a>, Google y a <a href="http://stackoverflow.com/users/160933/mga">Stackoverflow</a>.</p>
<p>Creo que es pertinente devolver algo a la comunidad, en particular a los hispanoparlantes, en este caso en forma de un mini <em>framework</em> para desarrollo de aplicaciones con múltiples pantallas no-jerárquicas ni lineales (simplemente que uno pueda saltar de una pantalla a otra sin ningún orden en particular, cuando el UITabBarController no es una opción). En realidad es <a title=" Framework for having Multiple Views in an iPhone app" href="http://www.pushplay.net/blog_detail.php?id=27">basado en este otro de Jeffrey Berthiaume</a>, pero con la adición de NIBs (Berthiaume hace las pantallas a punta de código).</p>
<p>Algo importante a tener en cuenta al usar NIBs es que para que el iPhone efectivamente libere la memoria usada por NIBs con imágenes, lo mejor es cargarlas con código (pero ese es otro <em>post</em>). De pronto luego pongo un <em>tip</em> acá pero por ahora mejor visite <a title="iphone app with multiple views/subviews: memory is not being deallocated" href="http://stackoverflow.com/questions/1482934/iphone-app-with-multiple-views-subviews-memory-is-not-being-deallocated">mi pregunta al respecto de esto en Stackoverflow</a>.</p>
<p>Si lo que acabo de escribir suena un poco a chino avanzado (para aquellos no familiarizados con Obj-C), en parte es porque lo es (para mi Obj-C ha sido como un camino zen&#8230; el camino del ninja o algo así). Inauguro, entonces, el <em>tag</em> &#8220;iphone&#8221; en mi blog con este ZIP que pueden bajar y usar libremente (y si se le tira el proyecto que está haciendo no me eche la culpa):</p>
<p><a href="http://www.mauriciogiraldo.com/blog/wp-content/uploads/2009/10/InfiniteViews.zip">Descargar InfiniteViews</a></p>
<p>Para que los angloparlantes puedan llegar a este post, a continuación la versión en inglés:</p>
<p><strong>English version</strong></p>
<p>This is a a framework based on <a title=" Framework for having Multiple Views in an iPhone app" href="http://www.pushplay.net/blog_detail.php?id=27">the work of Jeffrey Berthiaume</a> for developing NIB-based iPhone applications with non-linear, non-hierarchichal UIViewControllers, when the UITabBarController is not an option (games with multiple NIBs come to mind). Keep in mind that, in order for Obj-C to free NIBs with UIImageViews from memory, you need to load the images via code <strong>without</strong> using imageNamed. More info regarding this can be seen in <a title="iphone app with multiple views/subviews: memory is not being deallocated" href="http://stackoverflow.com/questions/1482934/iphone-app-with-multiple-views-subviews-memory-is-not-being-deallocated">this question in Stackoverflow</a>:</p>
<p><a href="http://www.mauriciogiraldo.com/blog/wp-content/uploads/2009/10/InfiniteViews.zip">Download InfiniteViews</a></p>
<p><a href="http://www.mauriciogiraldo.com/blog/2009/10/09/multiples-views-no-jerarquicas-en-iphone/" rel="bookmark">Múltiples views no-jerárquicas en iPhone</a> originalmente escrito en <a href="http://www.mauriciogiraldo.com/blog">mga/blog</a> en October 9, 2009.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mauriciogiraldo.com/blog/2009/10/09/multiples-views-no-jerarquicas-en-iphone/feed/</wfw:commentRss>
		<slash:comments>28</slash:comments>
<enclosure url="http://www.mauriciogiraldo.com/blog/wp-content/uploads/2009/10/InfiniteViews1.mov" length="255554" type="video/quicktime" />
		</item>
	</channel>
</rss>

