<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" gd:etag="W/&quot;AkUER3o4cCp7ImA9WxBWFks.&quot;"><id>tag:blogger.com,1999:blog-721238331852527930</id><updated>2010-02-08T20:30:06.438-02:00</updated><title>Henrique Vilela</title><subtitle type="html">Java and Actionscript</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://blog.hvilela.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://blog.hvilela.com/" /><link rel="hub" href="http://pubsubhubbub.appspot.com/" /><author><name>Henrique Vilela</name><uri>http://www.blogger.com/profile/06008589170497915339</uri><email>henrique.vilela@gmail.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>18</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/HVilela" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="hvilela" /><geo:lat>-31.775135</geo:lat><geo:long>-52.337243</geo:long><entry gd:etag="W/&quot;AkQNSH48eyp7ImA9WxBWFUg.&quot;"><id>tag:blogger.com,1999:blog-721238331852527930.post-5309242647487290698</id><published>2010-02-07T13:59:00.000-02:00</published><updated>2010-02-07T13:59:59.073-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-07T13:59:59.073-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Twitter" /><category scheme="http://www.blogger.com/atom/ns#" term="Recommendation" /><category scheme="http://www.blogger.com/atom/ns#" term="System" /><title>Twittommender: Twitter Recommendation System</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_45KglRAcGGA/S27jD_7gjlI/AAAAAAAAALU/a8Z9aotTsx4/s1600-h/twittommender.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="260" src="http://4.bp.blogspot.com/_45KglRAcGGA/S27jD_7gjlI/AAAAAAAAALU/a8Z9aotTsx4/s400/twittommender.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;a href="http://twittommender.hvilela.com/" target="_blank"&gt;http://twittommender.hvilela.com/&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/721238331852527930-5309242647487290698?l=blog.hvilela.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.hvilela.com/feeds/5309242647487290698/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.hvilela.com/2010/02/twittommender-twitter-recommendation.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/721238331852527930/posts/default/5309242647487290698?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/721238331852527930/posts/default/5309242647487290698?v=2" /><link rel="alternate" type="text/html" href="http://blog.hvilela.com/2010/02/twittommender-twitter-recommendation.html" title="Twittommender: Twitter Recommendation System" /><author><name>Henrique Vilela</name><uri>http://www.blogger.com/profile/06008589170497915339</uri><email>henrique.vilela@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="06449796200546953654" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_45KglRAcGGA/S27jD_7gjlI/AAAAAAAAALU/a8Z9aotTsx4/s72-c/twittommender.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;AkAGQXc5fyp7ImA9WxBWFE0.&quot;"><id>tag:blogger.com,1999:blog-721238331852527930.post-572890776110484664</id><published>2010-02-05T20:25:00.000-02:00</published><updated>2010-02-05T20:25:20.927-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-05T20:25:20.927-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="webcam" /><category scheme="http://www.blogger.com/atom/ns#" term="Actionscript" /><category scheme="http://www.blogger.com/atom/ns#" term="flash" /><title>Matrix Webcam Effect</title><content type="html">&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/L-81EQ4YJNg&amp;hl=pt_BR&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/L-81EQ4YJNg&amp;hl=pt_BR&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
try it here: &lt;a href="http://matrix.hvilela.com/" target="_blank"&gt;http://matrix.hvilela.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/721238331852527930-572890776110484664?l=blog.hvilela.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.hvilela.com/feeds/572890776110484664/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.hvilela.com/2010/02/matrix-webcam-effect.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/721238331852527930/posts/default/572890776110484664?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/721238331852527930/posts/default/572890776110484664?v=2" /><link rel="alternate" type="text/html" href="http://blog.hvilela.com/2010/02/matrix-webcam-effect.html" title="Matrix Webcam Effect" /><author><name>Henrique Vilela</name><uri>http://www.blogger.com/profile/06008589170497915339</uri><email>henrique.vilela@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="06449796200546953654" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;DkIHRXo-cCp7ImA9WxBSFU0.&quot;"><id>tag:blogger.com,1999:blog-721238331852527930.post-8867751090479082698</id><published>2009-12-08T01:28:00.001-02:00</published><updated>2009-12-22T15:55:34.458-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-22T15:55:34.458-02:00</app:edited><title>Follow Friday (on a tuesday)</title><content type="html">I appreciate you all for all the daily visits, but I'm not sure if i'll keep posting to this since I discovered &lt;a href="http://twitter.com/hvilela" target="_blank"&gt;Twitter&lt;/a&gt;.&lt;br /&gt;
So, if you want to know what I'm doing I recommend you to &lt;a href="http://twitter.com/h_vilela" target="_blank"&gt;follow me&lt;/a&gt; and &lt;a href="http://feeds.feedburner.com/HVilela" target="_blank"&gt;assign this blog feed&lt;/a&gt;, just in case :).&lt;br /&gt;
&lt;br /&gt;
Again, thank you all,&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/721238331852527930-8867751090479082698?l=blog.hvilela.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.hvilela.com/feeds/8867751090479082698/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.hvilela.com/2009/12/follow-friday-on-tuesday.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/721238331852527930/posts/default/8867751090479082698?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/721238331852527930/posts/default/8867751090479082698?v=2" /><link rel="alternate" type="text/html" href="http://blog.hvilela.com/2009/12/follow-friday-on-tuesday.html" title="Follow Friday (on a tuesday)" /><author><name>Henrique Vilela</name><uri>http://www.blogger.com/profile/06008589170497915339</uri><email>henrique.vilela@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="06449796200546953654" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry gd:etag="W/&quot;DU8BRnY_eCp7ImA9WxBWFks.&quot;"><id>tag:blogger.com,1999:blog-721238331852527930.post-3153326042137666326</id><published>2009-11-16T16:06:00.003-02:00</published><updated>2010-02-08T20:24:17.840-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-08T20:24:17.840-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Actionscript" /><title>AS3 Spherical Display</title><content type="html">This is a code that I did that can be used to create 3D Tag Clouds or to display any kind of &lt;i&gt;DisplayObject&lt;/i&gt; in a Spherical way.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_45KglRAcGGA/S3CO_01GNmI/AAAAAAAAALc/myaoJywhMSM/s1600-h/as3sphere.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="348" src="http://4.bp.blogspot.com/_45KglRAcGGA/S3CO_01GNmI/AAAAAAAAALc/myaoJywhMSM/s400/as3sphere.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Check a &lt;a href="http://as3sphere.hvilela.com/" target="_blank"&gt;sample here&lt;/a&gt;,&amp;nbsp;&lt;a href="http://code.google.com/p/as3sphere/" target="_blank"&gt;download the code from here&lt;/a&gt; and enjoy it! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/721238331852527930-3153326042137666326?l=blog.hvilela.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.hvilela.com/feeds/3153326042137666326/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.hvilela.com/2009/11/as3-spherical-display.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/721238331852527930/posts/default/3153326042137666326?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/721238331852527930/posts/default/3153326042137666326?v=2" /><link rel="alternate" type="text/html" href="http://blog.hvilela.com/2009/11/as3-spherical-display.html" title="AS3 Spherical Display" /><author><name>Henrique Vilela</name><uri>http://www.blogger.com/profile/06008589170497915339</uri><email>henrique.vilela@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="06449796200546953654" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_45KglRAcGGA/S3CO_01GNmI/AAAAAAAAALc/myaoJywhMSM/s72-c/as3sphere.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry gd:etag="W/&quot;AkcFQ3Y-eCp7ImA9WxBWFks.&quot;"><id>tag:blogger.com,1999:blog-721238331852527930.post-7434628844024721307</id><published>2009-11-06T23:54:00.003-02:00</published><updated>2010-02-08T20:26:52.850-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-08T20:26:52.850-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Actionscript" /><category scheme="http://www.blogger.com/atom/ns#" term="Youtube" /><title>EternalTube - Youtube for ever</title><content type="html">You got a second screen and you have no idea about how to use it? Here's the soluction!&lt;br /&gt;
Use it to whatch the best YouTube movies for all eternity!&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_45KglRAcGGA/S3CPnpG7TAI/AAAAAAAAALk/9sPKQue5EwQ/s1600-h/eternal.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="195" src="http://4.bp.blogspot.com/_45KglRAcGGA/S3CPnpG7TAI/AAAAAAAAALk/9sPKQue5EwQ/s400/eternal.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://henrique.vilela.googlepages.com/eternaltube.html" target="_blank"&gt;Just click here!&lt;/a&gt; :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/721238331852527930-7434628844024721307?l=blog.hvilela.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.hvilela.com/feeds/7434628844024721307/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.hvilela.com/2009/11/eternaltube-youtube-or-ever.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/721238331852527930/posts/default/7434628844024721307?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/721238331852527930/posts/default/7434628844024721307?v=2" /><link rel="alternate" type="text/html" href="http://blog.hvilela.com/2009/11/eternaltube-youtube-or-ever.html" title="EternalTube - Youtube for ever" /><author><name>Henrique Vilela</name><uri>http://www.blogger.com/profile/06008589170497915339</uri><email>henrique.vilela@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="06449796200546953654" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_45KglRAcGGA/S3CPnpG7TAI/AAAAAAAAALk/9sPKQue5EwQ/s72-c/eternal.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;C0QMRno4cSp7ImA9WxNXGU8.&quot;"><id>tag:blogger.com,1999:blog-721238331852527930.post-1132523226357925531</id><published>2009-10-06T21:11:00.014-03:00</published><updated>2009-10-07T10:16:27.439-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-07T10:16:27.439-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Actionscript" /><category scheme="http://www.blogger.com/atom/ns#" term="3d" /><category scheme="http://www.blogger.com/atom/ns#" term="flash" /><title>Flash 3D Interactive Photo Album</title><content type="html">I don't post anything for long time, so I'll present a site that I'm woring on:&lt;br /&gt;&lt;a target="_blank" href="http://ceça.art.br/"&gt;http://ceça.art.br/&lt;br /&gt;&lt;br /&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 282px;" src="http://3.bp.blogspot.com/_45KglRAcGGA/SsvgsLm1WWI/AAAAAAAAAJc/6ed-n-FO9IM/s400/ce%C3%A7a.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5389648428713466210" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 298px;" src="http://3.bp.blogspot.com/_45KglRAcGGA/SsviY-1-DWI/AAAAAAAAAJk/vp0QfFNIOgc/s400/ce%C3%A7a2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5389650297893031266" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It's a Flash 3D interactive photo album under construction. Your opinion are really welcome.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/721238331852527930-1132523226357925531?l=blog.hvilela.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.hvilela.com/feeds/1132523226357925531/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.hvilela.com/2009/10/flash-3d-interactive-photo-album.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/721238331852527930/posts/default/1132523226357925531?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/721238331852527930/posts/default/1132523226357925531?v=2" /><link rel="alternate" type="text/html" href="http://blog.hvilela.com/2009/10/flash-3d-interactive-photo-album.html" title="Flash 3D Interactive Photo Album" /><author><name>Henrique Vilela</name><uri>http://www.blogger.com/profile/06008589170497915339</uri><email>henrique.vilela@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="06449796200546953654" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_45KglRAcGGA/SsvgsLm1WWI/AAAAAAAAAJc/6ed-n-FO9IM/s72-c/ce%C3%A7a.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry gd:etag="W/&quot;DU8MQHsycCp7ImA9WxNTE0o.&quot;"><id>tag:blogger.com,1999:blog-721238331852527930.post-455299954151943752</id><published>2009-08-15T19:51:00.008-03:00</published><updated>2009-08-15T20:11:21.598-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-15T20:11:21.598-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="iPhone game development" /><title>iPhone Game Development Experiments</title><content type="html">Who knows me knows that I'm always trying something different, and this time is the iPhone time.&lt;br /&gt;I would like to thank my good friend &lt;a target="_blank" href="http://blog.e-nunes.com.br/"&gt;Eduardo Nunes&lt;/a&gt; to help me with all the main steps to reach the first result:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_45KglRAcGGA/Soc8gVTiezI/AAAAAAAAAI8/vzt9Vl7boFQ/s1600-h/Picture+2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 236px;" src="http://1.bp.blogspot.com/_45KglRAcGGA/Soc8gVTiezI/AAAAAAAAAI8/vzt9Vl7boFQ/s400/Picture+2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5370327606835182386" /&gt;&lt;/a&gt;&lt;br /&gt;I'm having a lot of trouble with the Objective-C syntax and with the big paradigm change that it request, but I hope that I could provide my first iPhone game on the next weeks.&lt;br /&gt;&lt;br /&gt;Wish me luck :P&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/721238331852527930-455299954151943752?l=blog.hvilela.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.hvilela.com/feeds/455299954151943752/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.hvilela.com/2009/08/iphone-game-development-experiments.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/721238331852527930/posts/default/455299954151943752?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/721238331852527930/posts/default/455299954151943752?v=2" /><link rel="alternate" type="text/html" href="http://blog.hvilela.com/2009/08/iphone-game-development-experiments.html" title="iPhone Game Development Experiments" /><author><name>Henrique Vilela</name><uri>http://www.blogger.com/profile/06008589170497915339</uri><email>henrique.vilela@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="06449796200546953654" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_45KglRAcGGA/Soc8gVTiezI/AAAAAAAAAI8/vzt9Vl7boFQ/s72-c/Picture+2.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;AkUER3o9fCp7ImA9WxBWFks.&quot;"><id>tag:blogger.com,1999:blog-721238331852527930.post-9152862550466201379</id><published>2009-08-09T17:45:00.005-03:00</published><updated>2010-02-08T20:30:06.464-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-08T20:30:06.464-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Actionscript" /><category scheme="http://www.blogger.com/atom/ns#" term="motion detection" /><category scheme="http://www.blogger.com/atom/ns#" term="flash" /><title>Flash Webcam Virtual Scuba Diving</title><content type="html">&lt;a href="http://aquarium.hvilela.com/" target="_blank"&gt;http://aquarium.hvilela.com/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_45KglRAcGGA/S3CQZzc9oDI/AAAAAAAAALs/Ju_LIQZBkWQ/s1600-h/aquarium.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="307" src="http://3.bp.blogspot.com/_45KglRAcGGA/S3CQZzc9oDI/AAAAAAAAALs/Ju_LIQZBkWQ/s400/aquarium.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Just a webcam gadget where you can dive with some colored fishes.&lt;br /&gt;
&lt;b&gt;Tip: Don't move or you'll scare them!&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/721238331852527930-9152862550466201379?l=blog.hvilela.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.hvilela.com/feeds/9152862550466201379/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.hvilela.com/2009/08/flash-webcam-virtual-scuba-diving.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/721238331852527930/posts/default/9152862550466201379?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/721238331852527930/posts/default/9152862550466201379?v=2" /><link rel="alternate" type="text/html" href="http://blog.hvilela.com/2009/08/flash-webcam-virtual-scuba-diving.html" title="Flash Webcam Virtual Scuba Diving" /><author><name>Henrique Vilela</name><uri>http://www.blogger.com/profile/06008589170497915339</uri><email>henrique.vilela@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="06449796200546953654" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_45KglRAcGGA/S3CQZzc9oDI/AAAAAAAAALs/Ju_LIQZBkWQ/s72-c/aquarium.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry gd:etag="W/&quot;AkAHRnwzfip7ImA9WxBSFEQ.&quot;"><id>tag:blogger.com,1999:blog-721238331852527930.post-7660944079208072434</id><published>2009-07-31T20:32:00.014-03:00</published><updated>2009-12-22T14:18:57.286-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-22T14:18:57.286-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="webcam" /><category scheme="http://www.blogger.com/atom/ns#" term="motion detection" /><category scheme="http://www.blogger.com/atom/ns#" term="flash" /><category scheme="http://www.blogger.com/atom/ns#" term="game" /><title>Flash webcam motion detection game starring Felipe Massa</title><content type="html">First of all I would like to thank my friend &lt;a href="http://rafaelfonseca.brmais.com/" target="_blank"&gt;Rafael Fonseca (Rodox)&lt;/a&gt;, for the idea for this game, and to Mauricio Ricardo from &lt;a href="http://charges.uol.com.br/" rel="nofollow" target="_blank"&gt;Charges.com.br&lt;/a&gt;, for let me use his illustrations for this game.&lt;br /&gt;
&lt;br /&gt;
&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/TNxF_8b91yM&amp;hl=pt-br&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/TNxF_8b91yM&amp;hl=pt-br&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
On this game your objective is to help Felipe Massa to avoid the “flying objects” on the race. To do this, move your head and body left and right, Felipe Massa will try to imitate you. To a better playing right click it then press "Go Full Screen".&lt;br /&gt;
&lt;br /&gt;
It was done on a hurry, so if you get any kind of error, I’m sorry... :D&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://watchout.hvilela.com/"&gt;http://watchout.hvilela.com/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Enjoy it!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/721238331852527930-7660944079208072434?l=blog.hvilela.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.hvilela.com/feeds/7660944079208072434/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.hvilela.com/2009/07/flash-webcam-motion-detection-game.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/721238331852527930/posts/default/7660944079208072434?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/721238331852527930/posts/default/7660944079208072434?v=2" /><link rel="alternate" type="text/html" href="http://blog.hvilela.com/2009/07/flash-webcam-motion-detection-game.html" title="Flash webcam motion detection game starring Felipe Massa" /><author><name>Henrique Vilela</name><uri>http://www.blogger.com/profile/06008589170497915339</uri><email>henrique.vilela@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="06449796200546953654" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;AkACSXY6eip7ImA9WxJUF0Q.&quot;"><id>tag:blogger.com,1999:blog-721238331852527930.post-3379939371601571832</id><published>2009-07-15T18:47:00.006-03:00</published><updated>2009-07-16T23:46:08.812-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-16T23:46:08.812-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="darkstar" /><category scheme="http://www.blogger.com/atom/ns#" term="engine" /><category scheme="http://www.blogger.com/atom/ns#" term="MMO" /><category scheme="http://www.blogger.com/atom/ns#" term="jmonkey" /><category scheme="http://www.blogger.com/atom/ns#" term="game" /><title>Java MMO game engine using Darkstar and JMonkey</title><content type="html">I have a huge “to do” list, full of tasks that follow the “When I have time, I will...” pattern. Well... today I decided to stop lying to myself and face the truth: I will never have time.&lt;br /&gt;&lt;br /&gt;As my first action as a truthful timeless guy I will publish a Java MMO/MMORPG game engine that I implemented almost 2 years ago using &lt;a href="http://projectdarkstar.com/" target="_blank" &gt;Darkstar&lt;/a&gt; and &lt;a href="http://www.jmonkeyengine.com/" target="_blank" &gt;JMonkey&lt;/a&gt;. I was supposed to publish it when I had time to clean the code.&lt;br /&gt;I named it &lt;a href="http://code.google.com/p/hengine/" target="_blank" &gt;Hengine&lt;/a&gt; (Henrique... engine... got it?) and published it at &lt;a href="http://code.google.com/p/hengine/" target="_blank" &gt;Google Code&lt;/a&gt;. Be my guest to use it the way you want and mail me in case you need help.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/S6pwN20obeI&amp;hl=pt-br&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/S6pwN20obeI&amp;hl=pt-br&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Regards!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/721238331852527930-3379939371601571832?l=blog.hvilela.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.hvilela.com/feeds/3379939371601571832/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.hvilela.com/2009/07/java-mmo-game-engine-using-darkstar-and.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/721238331852527930/posts/default/3379939371601571832?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/721238331852527930/posts/default/3379939371601571832?v=2" /><link rel="alternate" type="text/html" href="http://blog.hvilela.com/2009/07/java-mmo-game-engine-using-darkstar-and.html" title="Java MMO game engine using Darkstar and JMonkey" /><author><name>Henrique Vilela</name><uri>http://www.blogger.com/profile/06008589170497915339</uri><email>henrique.vilela@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="06449796200546953654" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;Ak8ESH0zcSp7ImA9WxJUF0Q.&quot;"><id>tag:blogger.com,1999:blog-721238331852527930.post-2504787987830222338</id><published>2009-07-15T00:17:00.006-03:00</published><updated>2009-07-16T23:46:49.389-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-16T23:46:49.389-03:00</app:edited><title>New layout</title><content type="html">I wasn’t satisfied with my blog layout. For me it was to complex and with too many elements, so I decided to create a simplest version.&lt;br /&gt;As long I had no time to code it, I &lt;strike&gt;stole&lt;/strike&gt; borrowed the code from one of my &lt;a href="http://blog.otavioavila.com/" target="_blank" &gt;friend’s blogs&lt;/a&gt;, and then I &lt;strike&gt;basic just changed the colors&lt;/strike&gt; did a total reformulation of it.&lt;br /&gt;&lt;br /&gt;What do you think? Better?&lt;br /&gt;&lt;br /&gt;By the way... Thanks Otávio :D.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/721238331852527930-2504787987830222338?l=blog.hvilela.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.hvilela.com/feeds/2504787987830222338/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.hvilela.com/2009/07/new-layout.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/721238331852527930/posts/default/2504787987830222338?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/721238331852527930/posts/default/2504787987830222338?v=2" /><link rel="alternate" type="text/html" href="http://blog.hvilela.com/2009/07/new-layout.html" title="New layout" /><author><name>Henrique Vilela</name><uri>http://www.blogger.com/profile/06008589170497915339</uri><email>henrique.vilela@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="06449796200546953654" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;Ak8FQn08eyp7ImA9WxBSFEQ.&quot;"><id>tag:blogger.com,1999:blog-721238331852527930.post-6336099724880776671</id><published>2009-07-12T22:20:00.018-03:00</published><updated>2009-12-22T14:20:13.373-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-22T14:20:13.373-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="webcam" /><category scheme="http://www.blogger.com/atom/ns#" term="movement detection" /><category scheme="http://www.blogger.com/atom/ns#" term="Actionscript" /><category scheme="http://www.blogger.com/atom/ns#" term="flash" /><category scheme="http://www.blogger.com/atom/ns#" term="game" /><title>Playable webcam Breakout (Arkanoid) in Flash</title><content type="html">I would love to have more free time, but unfortunately I haven’t. &lt;br /&gt;
&lt;br /&gt;
I’m creating new features to the flash motion detection library as: Real-time background removal/replacement, advanced body detection, visual effects (fire, snow, water…), but while it’s not ready, I’ll post an improved version of the last playable game that I posted. &lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://breakout.hvilela.com/"&gt;http://breakout.hvilela.com/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Enjoy it. Your opinion is really appreciated.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/721238331852527930-6336099724880776671?l=blog.hvilela.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.hvilela.com/feeds/6336099724880776671/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.hvilela.com/2009/07/playable-webcam-breakout-akanoid.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/721238331852527930/posts/default/6336099724880776671?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/721238331852527930/posts/default/6336099724880776671?v=2" /><link rel="alternate" type="text/html" href="http://blog.hvilela.com/2009/07/playable-webcam-breakout-akanoid.html" title="Playable webcam Breakout (Arkanoid) in Flash" /><author><name>Henrique Vilela</name><uri>http://www.blogger.com/profile/06008589170497915339</uri><email>henrique.vilela@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="06449796200546953654" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry gd:etag="W/&quot;DEUDQn44cSp7ImA9WxJbFkg.&quot;"><id>tag:blogger.com,1999:blog-721238331852527930.post-7518769391834584703</id><published>2009-07-04T02:44:00.009-03:00</published><updated>2009-07-26T21:57:53.039-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-26T21:57:53.039-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Actionscript" /><category scheme="http://www.blogger.com/atom/ns#" term="flash" /><title>Bézier Curve through 3 points</title><content type="html">Some days ago I had to do a Flash application where the user was able to select an image area by dragging some points around. The points should be anchors to create curves that pass through those points.
&lt;br /&gt;My first thought was that I wouldn’t have problems by using the curveTo method of the MovieClip class as long this method uses 3 points to create a curve, what was exactly what I needed.
&lt;br /&gt;The problem is that this method uses the Bézier formula to create the curve, and the Bézier curve does not pass through the second point, as you can see above:
&lt;br /&gt;&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="320" height="320" id="BezierWrong" align="middle"&gt;&lt;param name="allowScriptAccess" value="sameDomain" /&gt;&lt;param name="allowFullScreen" value="false" /&gt;&lt;param name="movie" value="BezierWrong.swf" /&gt;&lt;param name="quality" value="high" /&gt;&lt;param name="bgcolor" value="#ffffff" /&gt;&lt;embed src="BezierWrong.swf" quality="high" bgcolor="#ffffff" width="320" height="320" name="BezierWrong" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" /&gt;&lt;/object&gt;
&lt;br /&gt;I strong believe that I wasn’t the first one to have this frustration trying to create a curve on Flash, because that I decided to post the solution.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://upload.wikimedia.org/math/a/d/9/ad90a6fecd5324dc32f75f0b19c2d684.png" /&gt;
&lt;br /&gt;
&lt;br /&gt;The formula above is the Bézier formula. Using my second point as B(t), 0.5 as t (the middle of the curve) and isolating the P2 I came to this code:
&lt;br /&gt;
&lt;br /&gt;&lt;pre&gt;p3.x = (0.25 * p0.x + 0.25 * p2.x - p1.x) / -0.5;
&lt;br /&gt;p3.y = (0.25 * p0.y + 0.25 * p2.y - p1.y) / -0.5;
&lt;br /&gt;moveTo(p0.x, p0.y);
&lt;br /&gt;curveTo(p3.x, p3.y, p2.x, p2.y);&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;P0, P1, P2 are the 3 points used to create the curve, P3 is the generated point to replace the P2 on the curveTo method.
&lt;br /&gt;Here is the result:
&lt;br /&gt;&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="320" height="320" id="BezierRight" align="middle"&gt;&lt;param name="allowScriptAccess" value="sameDomain" /&gt;&lt;param name="allowFullScreen" value="false" /&gt;&lt;param name="movie" value="BezierRight.swf" /&gt;&lt;param name="quality" value="high" /&gt;&lt;param name="bgcolor" value="#ffffff" /&gt;&lt;embed src="BezierRight.swf" quality="high" bgcolor="#ffffff" width="320" height="320" name="BezierRight" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" /&gt;&lt;/object&gt;
&lt;br /&gt;I hope it helps someone! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/721238331852527930-7518769391834584703?l=blog.hvilela.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.hvilela.com/feeds/7518769391834584703/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.hvilela.com/2009/03/bezier-curve-through-3-points.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/721238331852527930/posts/default/7518769391834584703?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/721238331852527930/posts/default/7518769391834584703?v=2" /><link rel="alternate" type="text/html" href="http://blog.hvilela.com/2009/03/bezier-curve-through-3-points.html" title="Bézier Curve through 3 points" /><author><name>Henrique Vilela</name><uri>http://www.blogger.com/profile/06008589170497915339</uri><email>henrique.vilela@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="06449796200546953654" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total></entry><entry gd:etag="W/&quot;A08HRX4-eyp7ImA9WxBSFEQ.&quot;"><id>tag:blogger.com,1999:blog-721238331852527930.post-1004392143484799341</id><published>2009-06-17T21:13:00.016-03:00</published><updated>2009-12-22T14:37:14.053-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-22T14:37:14.053-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="webcam" /><category scheme="http://www.blogger.com/atom/ns#" term="movement detection" /><category scheme="http://www.blogger.com/atom/ns#" term="Actionscript" /><category scheme="http://www.blogger.com/atom/ns#" term="flash" /><category scheme="http://www.blogger.com/atom/ns#" term="game" /><title>Actionscript Project Natal</title><content type="html">Some days ago a friend of mine sent me &lt;a href="http://www.youtube.com/xboxprojectnatal" target="_blank"&gt;this link&lt;/a&gt; about Project Natal, from Microsoft. I never had heard about it until that moment, so we started to discuss about it. He was trying to convince me that it wasn’t rocket science and that it could be developed to work with a regular webcam, instead of the &lt;a href="http://www.3dvsystems.com/" target="_blank"&gt;special camera that Microsoft uses&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
He did convince me. Actually, he convinced me so well that I started to develop my own Project Natal like library in Actionscript, with good results so far.&lt;br /&gt;
&lt;br /&gt;
I would like to go on with it, and if someone has interest to join me on it I would love it. It would be nice for it to have a designer able  to create some nice graphics to the games, or a programmer that already has Actionscript games where we could add the camera controller to it. Any other kind of partnership are welcome too, if you have an idea just mail me and we can discuss it.&lt;br /&gt;
&lt;br /&gt;
Here’s a movie about the results so far:&lt;br /&gt;
&lt;br /&gt;
&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/HgNT308e_Qo&amp;amp;hl=pt-br&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/HgNT308e_Qo&amp;amp;hl=pt-br&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Check here some playable games:&lt;br /&gt;
&lt;a href="http://breakout.hvilela.com/" target="_blank"&gt;http://breakout.hvilela.com/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://watchout.hvilela.com/" target="_blank"&gt;http://watchout.hvilela.com/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://aquarium.hvilela.com/" target="_blank"&gt;http://aquarium.hvilela.com/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Enjoy it! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/721238331852527930-1004392143484799341?l=blog.hvilela.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.hvilela.com/feeds/1004392143484799341/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.hvilela.com/2009/06/actionscript-project-natal.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/721238331852527930/posts/default/1004392143484799341?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/721238331852527930/posts/default/1004392143484799341?v=2" /><link rel="alternate" type="text/html" href="http://blog.hvilela.com/2009/06/actionscript-project-natal.html" title="Actionscript Project Natal" /><author><name>Henrique Vilela</name><uri>http://www.blogger.com/profile/06008589170497915339</uri><email>henrique.vilela@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="06449796200546953654" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></entry><entry gd:etag="W/&quot;Ak4HQX09cSp7ImA9WxJUF0Q.&quot;"><id>tag:blogger.com,1999:blog-721238331852527930.post-4636093522357102133</id><published>2009-06-10T10:06:00.014-03:00</published><updated>2009-07-16T23:48:50.369-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-16T23:48:50.369-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="Wallpaperer" /><category scheme="http://www.blogger.com/atom/ns#" term="wallpaper" /><title>Wallpaperer</title><content type="html">Do you like to create mosaic pictures to post at your pages? Well, I don’t… but my wife does. She was always complaining about how boring was the process to update a bunch of files and about how limited are the services capable to do this.&lt;br /&gt;&lt;br /&gt;To solve her problem I created a simple app where you can drag and drop images to it, and it try to organize the images the best way it can. I added two filters too (grayscale and sepia).&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;She’s happy with that, so I decided to share it. Here it how it works:&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/uMJtdPO6iQk&amp;amp;hl=pt-br&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/uMJtdPO6iQk&amp;amp;hl=pt-br&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;You can &lt;a href="http://hvilela.webs.com/Wallpaperer.jar"&gt;download it from here&lt;/a&gt; (suggestions are welcome), but to run it you need&lt;a href="http://superdownloads.uol.com.br/download/35/java-2-runtime-environment-standard-edition-%28j2se%29/" target="_blank"&gt; Java 6&lt;/a&gt; installed.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/721238331852527930-4636093522357102133?l=blog.hvilela.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.hvilela.com/feeds/4636093522357102133/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.hvilela.com/2009/06/wallpaperer.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/721238331852527930/posts/default/4636093522357102133?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/721238331852527930/posts/default/4636093522357102133?v=2" /><link rel="alternate" type="text/html" href="http://blog.hvilela.com/2009/06/wallpaperer.html" title="Wallpaperer" /><author><name>Henrique Vilela</name><uri>http://www.blogger.com/profile/06008589170497915339</uri><email>henrique.vilela@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="06449796200546953654" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;Ak4BRHw8eyp7ImA9WxJUF0Q.&quot;"><id>tag:blogger.com,1999:blog-721238331852527930.post-2852906726115256417</id><published>2009-03-29T00:11:00.014-03:00</published><updated>2009-07-16T23:49:15.273-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-16T23:49:15.273-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me" /><title>J2ME Experiments</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_45KglRAcGGA/Sc7nLgfazYI/AAAAAAAAAGY/PUmaGbIK7JU/s1600-h/100_2336.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_45KglRAcGGA/Sc7nLgfazYI/AAAAAAAAAGY/PUmaGbIK7JU/s320/100_2336.jpg" alt="" id="BLOGGER_PHOTO_ID_5318442394857426306" border="0" /&gt;&lt;/a&gt;A long time ago (in a galaxy far, far away) I played a bit with J2ME. In 2005, I even gave J2ME lessons on a small course at UCPel. Here’s a picture of one those classes.&lt;br /&gt;&lt;br /&gt;Today, while I was organizing my old files, I found some games that I did using this technology. Those are simple games, made just with the intent of learning.&lt;br /&gt;&lt;br /&gt;I did more professional things with J2ME too, At Conrad Caine I worked with a workmate (Lucas Teixeira) in a J2ME 3D multiplayer race game, but different from those that I can share, this one was commercial and much more complex.&lt;br /&gt;&lt;br /&gt;Well… my intent with this post was just sharing it, so here it is to whom it may interest:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hvilela.webs.com/Mines.rar"&gt;Mines&lt;/a&gt; -  &lt;a href="http://hvilela.webs.com/Mixer.rar"&gt;Mixer&lt;/a&gt; - &lt;a href="http://hvilela.webs.com/Puzzle.rar"&gt;Puzzle&lt;/a&gt; - &lt;a href="http://hvilela.webs.com/Simon.rar"&gt;Simon&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To run it you need a cell/smart phone with Java (CLDC 1.0) and a minimum resolution of 320x240 or a desktop with &lt;a href="http://java.com/getjava/" target="_blank"&gt;Java&lt;/a&gt; and &lt;a href="http://java.sun.com/products/sjwtoolkit/" target="_blank"&gt;Wireless Toolkit&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Enjoy it! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/721238331852527930-2852906726115256417?l=blog.hvilela.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.hvilela.com/feeds/2852906726115256417/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.hvilela.com/2009/03/j2me-experiments.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/721238331852527930/posts/default/2852906726115256417?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/721238331852527930/posts/default/2852906726115256417?v=2" /><link rel="alternate" type="text/html" href="http://blog.hvilela.com/2009/03/j2me-experiments.html" title="J2ME Experiments" /><author><name>Henrique Vilela</name><uri>http://www.blogger.com/profile/06008589170497915339</uri><email>henrique.vilela@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="06449796200546953654" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_45KglRAcGGA/Sc7nLgfazYI/AAAAAAAAAGY/PUmaGbIK7JU/s72-c/100_2336.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;A0cCQHwzfip7ImA9WxJUF0Q.&quot;"><id>tag:blogger.com,1999:blog-721238331852527930.post-9114265539340367491</id><published>2009-02-19T16:42:00.015-03:00</published><updated>2009-07-16T23:51:01.286-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-16T23:51:01.286-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="drum" /><category scheme="http://www.blogger.com/atom/ns#" term="Drum Trainer" /><title>Drum Trainer</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_45KglRAcGGA/SZ22ul5O1OI/AAAAAAAAAGI/B0OfeShE71s/s1600-h/imagem.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 164px; height: 200px;" src="http://4.bp.blogspot.com/_45KglRAcGGA/SZ22ul5O1OI/AAAAAAAAAGI/B0OfeShE71s/s200/imagem.JPG" alt="" id="BLOGGER_PHOTO_ID_5304596847674709218" border="0" /&gt;&lt;/a&gt;About 3 years ago, before &lt;a href="http://en.wikipedia.org/wiki/Rock_Band_%28video_game%29" target="_blank" rel="nofollow"&gt;Rock Band&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Guitar_Hero:_World_Tour" target="_blank" rel="nofollow"&gt;Guitar Hero World Tour&lt;/a&gt;, I both an &lt;a href="http://www.staffdrum.com.br/baterias_dp100.htm" target="_blank" rel="nofollow"&gt;electronic drum set&lt;/a&gt;. I never had played it before and I tried to learn it by myself with no satisfactory results. I tried a teacher too, but I had no patience for the firsts non-funny exercises so I quit it on the very first class.&lt;br /&gt;Inspired by &lt;a href="http://en.wikipedia.org/wiki/Guitar_Hero_%28series%29" target="_blank" rel="nofollow"&gt;Guitar Hero&lt;/a&gt;, I decided to implement a software to help me to learn to play drums in a funny way, and that is where Drum Trainer comes from.&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;Drum Trainer works just like any other musical game with this kind of game play: Symbols rolling down on the screen that you have to hit on the right timing. The main difference is that on Drum Trainer you don't depend on witch songs that game releases to you as long it works with &lt;a href="http://en.wikipedia.org/wiki/Midi" target="_blank" rel="nofollow"&gt;MIDI files&lt;/a&gt;.&lt;br /&gt;Another big difference is that you can play with any &lt;a href="http://en.wikipedia.org/wiki/MIDI_controller" target="_blank" rel="nofollow"&gt;MIDI controller&lt;/a&gt; plugged at your PC, on my case I can use my real drum set to play it, what is much funnier than play with a toy.&lt;br /&gt;I never had so much fun developing like I did on this case and I just loved the result, but the truth is that I still can't play drums. The problem is that I never have time to sit in front of it.&lt;br /&gt;&lt;br /&gt;Drum Trainer is free and open source and can be downloaded &lt;a href="http://code.google.com/p/drumtrainer/" target="_blank"&gt;from here&lt;/a&gt;. Have fun!&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/721238331852527930-9114265539340367491?l=blog.hvilela.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.hvilela.com/feeds/9114265539340367491/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.hvilela.com/2009/02/drum-trainer.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/721238331852527930/posts/default/9114265539340367491?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/721238331852527930/posts/default/9114265539340367491?v=2" /><link rel="alternate" type="text/html" href="http://blog.hvilela.com/2009/02/drum-trainer.html" title="Drum Trainer" /><author><name>Henrique Vilela</name><uri>http://www.blogger.com/profile/06008589170497915339</uri><email>henrique.vilela@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="06449796200546953654" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_45KglRAcGGA/SZ22ul5O1OI/AAAAAAAAAGI/B0OfeShE71s/s72-c/imagem.JPG" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total></entry><entry gd:etag="W/&quot;A0YAR3Y9cSp7ImA9WxJUF0Q.&quot;"><id>tag:blogger.com,1999:blog-721238331852527930.post-3601416510888286745</id><published>2009-02-17T22:20:00.007-03:00</published><updated>2009-07-16T23:52:26.869-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-16T23:52:26.869-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="genetic algorithms" /><category scheme="http://www.blogger.com/atom/ns#" term="robocode" /><title>Robocode and Genetic Algorithms</title><content type="html">Some days ago I read &lt;a href="http://www.cs.bgu.ac.il/~sipper/papabs/eurogprobo-final.pdf" target="_blank"&gt;this article&lt;/a&gt; about evolving &lt;a href="http://robocode.sourceforge.net/" target="_blank"&gt;Robocode&lt;/a&gt; robots using &lt;a href="http://en.wikipedia.org/wiki/Genetic_algorithm" target="_blank" rel="nofollow"&gt;Genetic Algorithms (GA)&lt;/a&gt;. I just loved the idea because I really enjoy Robocode and I had already made some simple things with GA, but I never did anything with such tangible results.&lt;br /&gt;I started to follow the links, but I couldn’t find any downloadable content, a YouTube video or anything else to show me how far the guy that wrote it was able to go with it. Based on that, I decided to implement something on this area.&lt;br /&gt;The idea of this text is to present to you the main problems that I faced until I get the first results.&lt;br /&gt;&lt;br /&gt;My first thought was to generate random Java code and do the genetic operations such as &lt;a href="http://en.wikipedia.org/wiki/Crossover_(genetic_algorithm)" target="_blank" rel="nofollow"&gt;crossover&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Mutation_(genetic_algorithm)" target="_blank" rel="nofollow"&gt;mutation&lt;/a&gt; on the code it self. It’s quite simple to see how bad this idea is when you imagine how many possibilities and how many invalid results it would have.&lt;br /&gt;So, my first step was to create a piece of code that generates a Java class that extends &lt;a href="http://www.codepoet.org/~markw/robocode/javadoc/robocode/AdvancedRobot.html" target="_blank"&gt;AdvancedRobot&lt;/a&gt; using a String as seed, so each robot is represented by the String that generated him. This way I can generate a random robot just by creating a random String.&lt;br /&gt;If are you wondering: “How can he generate a Java code from a String?” here is a piece of the code that generates the Java code:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;for (byte code : genome.getBytes()) {&lt;br /&gt; int command = code % 20;&lt;br /&gt;&lt;br /&gt; switch (command) {&lt;br /&gt; case 0:&lt;br /&gt;  if (code % 50 == 0) {&lt;br /&gt;   return;&lt;br /&gt;  }&lt;br /&gt; case 1:&lt;br /&gt;  out.write(("setAhead(" + code + ");").getBytes());&lt;br /&gt;  break;&lt;br /&gt; case 2:&lt;br /&gt;  out.write(("back(" + code + ");").getBytes());&lt;br /&gt;  break;&lt;br /&gt; case 3:&lt;br /&gt;  out.write(("setTurnRight(" + code + ");").getBytes());&lt;br /&gt;  break;&lt;br /&gt; case 4:&lt;br /&gt;  out.write(("turnLeft(" + code + ");").getBytes());&lt;br /&gt;  break;&lt;br /&gt; // keep going...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;As you can see, it’s not rocket science and, using this technique, the genetic operations are really simple too:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;private static String cross(String genome1, String genome2) {&lt;br /&gt; int crosses = (int) (Math.random() * 10) + 1;&lt;br /&gt;&lt;br /&gt; for (int i = 0; i &lt; crosses; i++) {&lt;br /&gt;  int cut = (int) Math.floor(Math.random() * Math.min(genome1.length(), genome2.length()));&lt;br /&gt;&lt;br /&gt;  String temp = genome1.substring(0, cut) + genome2.substring(cut, genome2.length());&lt;br /&gt;  genome2 = genome2.substring(0, cut) + genome1.substring(cut, genome1.length());&lt;br /&gt;  genome1 = temp;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; return genome1;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;After generate and compile many random robots, the next step is to evaluate each robot. The unique fair way to do this is run each generated robot on a Robocode battlefield against another robot and see how much points it does.&lt;br /&gt;I couldn’t find any documentation about it on the Robocode page, but I figured out after some trys that’s possible to add the robocode.jar that comes with the Robocode to a Java project to run a predefined battle and get the result data. Here is how to do it:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;private void evaluate() {&lt;br /&gt; RobocodeEngine engine = new RobocodeEngine();&lt;br /&gt; BattlefieldSpecification battleField = new BattlefieldSpecification();&lt;br /&gt;&lt;br /&gt; for (Robot robot : robots) {&lt;br /&gt;  RobotSpecification[] specifications = new RobotSpecification[2];&lt;br /&gt;&lt;br /&gt;  for (RobotSpecification specification : engine.getLocalRepository()) {&lt;br /&gt;   if (specification.getName().equals(robot.name)) {&lt;br /&gt;    specifications[0] = specification;&lt;br /&gt;   } else if (specification.getName().equals("sample.Crazy")) {&lt;br /&gt;    specifications[1] = specification;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  BattleSpecification battle = new BattleSpecification(25, battleField, specifications);&lt;br /&gt;&lt;br /&gt;  engine.runBattle(battle, true);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; Collections.sort(robots);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;So… that’s it.&lt;br /&gt;&lt;br /&gt;Until the moment, I wasn’t able to evolve any competitive robot, but this project already created robots with some cool behaviors and it just has some days of live and a few lines of code, so I’ll keep going on it to see how far I can go.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/721238331852527930-3601416510888286745?l=blog.hvilela.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.hvilela.com/feeds/3601416510888286745/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.hvilela.com/2009/02/robocode-and-genetic-algorithms.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/721238331852527930/posts/default/3601416510888286745?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/721238331852527930/posts/default/3601416510888286745?v=2" /><link rel="alternate" type="text/html" href="http://blog.hvilela.com/2009/02/robocode-and-genetic-algorithms.html" title="Robocode and Genetic Algorithms" /><author><name>Henrique Vilela</name><uri>http://www.blogger.com/profile/06008589170497915339</uri><email>henrique.vilela@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="06449796200546953654" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry></feed>
