<?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>soledad penadés &#187; javascript</title>
	<atom:link href="http://soledadpenades.com/tag/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://soledadpenades.com</link>
	<description>repeat 4[fd 100 rt 90]</description>
	<lastBuildDate>Wed, 25 Apr 2012 21:10:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Mesh subdivision (2012 extended edition)</title>
		<link>http://soledadpenades.com/2012/04/16/mesh-subdivision-2012-extended-edition/</link>
		<comments>http://soledadpenades.com/2012/04/16/mesh-subdivision-2012-extended-edition/#comments</comments>
		<pubDate>Mon, 16 Apr 2012 21:54:15 +0000</pubDate>
		<dc:creator>sole</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[demoscene]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[opengl]]></category>
		<category><![CDATA[three.js]]></category>
		<category><![CDATA[webgl]]></category>

		<guid isPermaLink="false">http://soledadpenades.com/?p=3947</guid>
		<description><![CDATA[Back in 2004, when I was starting to experiment with OpenGL, I had the idea of creating meshes from scratch. This will come in handy for intros, since this way I won&#8217;t be needing to include the meshes&#8217; data with the executable!, I thought. I would create a simple base pyramidal mesh, and subdivide it [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://lab.soledadpenades.com/js/mesh_subdivision/#eyJudW1iZXJfcGFzc2VzIjo4LCJiYWNrZ3JvdW5kX2NvbG9yIjoxMjMwMzI5MSwid2lyZWZyYW1lIjp0cnVlLCJ3aXJld2lkdGgiOjEsIndpcmVjb2xvciI6MCwiY29sb3JfMSI6MTY3MTE2ODAsImNvbG9yXzIiOjY1MjgwLCJjb2xvcl8zIjoyNTUsIndvYmJseSI6ZmFsc2UsIndvYmJseV9zcGVlZCI6MSwicm90YXRpb25fc3BlZWRfeCI6MSwicm90YXRpb25fc3BlZWRfeiI6MSwiY2FtZXJhX3giOjAsImNhbWVyYV95IjowLCJjYW1lcmFfeiI6MTAsImRyYXdfYXhpcyI6dHJ1ZX0="><img src="/imgs/2012/ms01.jpg" alt="mesh subdivision 2012" /></a></p>
<p>Back in 2004, when I was starting to experiment with OpenGL, I had the idea of creating meshes <em>from scratch</em>. <q>This will come in handy for intros, since this way I won&#8217;t be needing to include the meshes&#8217; data with the executable!</q>, I thought.</p>
<p>I would create a simple base pyramidal mesh, and subdivide it until I got something with more vertices and faces, but properly connected (not just a bunch of random points). So I when I had a couple of free days, I came up with <a href="http://soledadpenades.com/2004/04/19/improving-mesh-subdivision/">a very rough way</a> of creating and subdividing meshes. It was very raw, but I loved that I had done it myself!<br />
<span id="more-3947"></span><br />
<a href="http://soledadpenades.com/2004/04/19/improving-mesh-subdivision/"><img src="http://www.soledadpenades.com/imgs/mesh_sdv_3passes_fixed_lw.png" /></a></p>
<p>At the end, I didn&#8217;t use it for any intro at all, but I used the <em>trick</em> in a demo instead, called <a href="http://soledadpenades.com/projects/demoscene/codecolors-by-ppg/">codecolors</a> (<a href="https://github.com/sole/demoscene/tree/master/releases/ppg/ppg_05_cc/src">source code</a>, if you&#8217;re feeling adventurous). Although it&#8217;s hard to notice, since everything was generously blurred (I had recently learned how to get a cheap motion blur effect and was really eager to use it in every single frame!).</p>
<p>Fast forward to 2012. I am learning (tinkering with?) <a href="https://github.com/mrdoob/three.js">three.js</a> and I wanted to find out how to manipulate vertex data dynamically. I somehow remembered this experiment and where I left it (<q>Next step is playing with the vertices!</q>), and I decided to continue it.</p>
<p>Once I got the basics working, I thought it would be neat to have some way of interacting with the scene&#8211;so I added <a href="https://code.google.com/p/dat-gui/">dat.gui</a>, which are the controls on top right. Then I also wanted to save the images, as I once I added controls for altering the look I started getting great imagery! So I added <a href="https://github.com/eligrey/FileSaver.js">FileSaver.js</a> and <a href="https://github.com/eligrey/canvas-toBlob.js">canvas-toBlob.js</a>, since browser support for downloading images is still a bit incomplete (so to speak).</p>
<p>And finally I thought: <q>hey, storing images is ok, but what if I want to modify an existing configuration?</q>. So I added support for storing the current configuration via some simple location hash serialising. I am not sure if it&#8217;s the best way but it seems to work well enough for now!</p>
<p><a href="http://lab.soledadpenades.com/js/mesh_subdivision/#eyJudW1iZXJfcGFzc2VzIjo0LCJiYWNrZ3JvdW5kX2NvbG9yIjoxMjMwMzI5MSwid2lyZWZyYW1lIjpmYWxzZSwid2lyZXdpZHRoIjoxLCJ3aXJlY29sb3IiOjE2NzExNjgwLCJjb2xvcl8xIjoxNjcxMTY4MCwiY29sb3JfMiI6NjUyODAsImNvbG9yXzMiOjI1NSwid29iYmx5IjpmYWxzZSwid29iYmx5X3NwZWVkIjoxLCJyb3RhdGlvbl9zcGVlZF94IjoxLCJyb3RhdGlvbl9zcGVlZF96IjoxLCJjYW1lcmFfeCI6MCwiY2FtZXJhX3kiOjAsImNhbWVyYV96IjoxMCwiZHJhd19heGlzIjp0cnVlfQ=="><img src="/imgs/2012/ms02.jpg" alt="mesh subdivision 2012" /></a></p>
<p>Oh, and since I just <em>love</em> text effects, I added a silly text-manipulation thingie to dynamically alter the innerText of the page contents. Just because!</p>
<p>It&#8217;s fun to play with all the settings and seeing what happens. I have found myself mesmerised just by looking at the end result. Some images seem really organic; others look very fractal/spaceish to me. (Don&#8217;t forget to make it <a href="http://lab.soledadpenades.com/js/mesh_subdivision/#eyJudW1iZXJfcGFzc2VzIjo1LCJiYWNrZ3JvdW5kX2NvbG9yIjoxMjMwMzI5MSwid2lyZWZyYW1lIjp0cnVlLCJ3aXJld2lkdGgiOjEsIndpcmVjb2xvciI6MTY3MTE2ODAsImNvbG9yXzEiOjE2NzExNjgwLCJjb2xvcl8yIjo2NTI4MCwiY29sb3JfMyI6MjU1LCJ3b2JibHkiOnRydWUsIndvYmJseV9zcGVlZCI6OS43MDMyOTY3MDMyOTY3MDMsInJvdGF0aW9uX3NwZWVkX3giOjEsInJvdGF0aW9uX3NwZWVkX3oiOjEsImNhbWVyYV94IjoyMDAsImNhbWVyYV95IjoyMDAsImNhbWVyYV96IjoyMDAsImRyYXdfYXhpcyI6dHJ1ZX0=">wobbly</a>! &#8211;looks like someone is having a discussion inside the pyramid!).</p>
<p>I&#8217;m <em>very</em> happy with the end result, and even more about the development process. I can vividly recall the many hours I spent in 2004 dealing with arrays and memory allocation for such a simple task as this one. Quite unproductive, to be honest! But Javascript + WebGL totally ROCK! Also, after so many years of trying to explain what the demoscene and realtime is about, it&#8217;s great to be able to demonstrate it <em>in realtime</em>. Yay!</p>
<p>I&#8217;ll write about the new &#8220;Simple yet Frequently Asked Questions&#8221; about three.js that I encountered while doing this experiment&#8230; but that will be tomorrow, if you don&#8217;t mind!</p>
<p>Have fun! :)</p>
 <p><a href="http://soledadpenades.com/?flattrss_redirect&amp;id=3947&amp;md5=71ce55931be4ec0f0a529035f5efa2d9" title="Flattr" target="_blank"><img src="http://soledadpenades.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://soledadpenades.com/2012/04/16/mesh-subdivision-2012-extended-edition/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=8399&amp;amp;url=http%3A%2F%2Fsoledadpenades.com%2F2012%2F04%2F16%2Fmesh-subdivision-2012-extended-edition%2F&amp;amp;language=en_GB&amp;amp;category=text&amp;amp;title=Mesh+subdivision+%282012+extended+edition%29&amp;amp;description=%0D%0A%0D%0ABack+in+2004%2C+when+I+was+starting+to+experiment+with+OpenGL%2C+I+had+the+idea+of+creating+meshes+from+scratch.+This+will+come+in+handy+for+intros%2C+since+this+way+I+won%27t+be+needing+to+include+the+meshes%27+data+with+the+executable%21%2C+I+thought.%0D%0A%0D%0AI+would+create+a+simple+base+pyramidal+mesh%2C+and+subdivide+it+until+I+got+something+with+more+vertices+and+faces%2C+but+properly+connected+%28not+just+a+bunch+of+random+points%29.+So+I+when+I+had+a+couple+of+free+days%2C+I+came+up+with+a+very+rough+way+of+creating+and+subdividing+meshes.+It+was+very+raw%2C+but+I+loved+that+I+had+done+it+myself%21%0D%0A%0D%0A%0D%0A%0D%0AAt+the+end%2C+I+didn%27t+use+it+for+any+intro+at+all%2C+but+I+used+the+trick+in+a+demo+instead%2C+called+codecolors+%28source+code%2C+if+you%27re+feeling+adventurous%29.+Although+it%27s+hard+to+notice%2C+since+everything+was+generously+blurred+%28I+had+recently+learned+how+to+get+a+cheap+motion+blur+effect+and+was+really+eager+to+use+it+in+every+single+frame%21%29.%0D%0A%0D%0AFast+forward+to+2012.+I+am+learning+%28tinkering+with%3F%29+three.js+and+I+wanted+to+find+out+how+to+manipulate+vertex+data+dynamically.+I+somehow+remembered+this+experiment+and+where+I+left+it+%28Next+step+is+playing+with+the+vertices%21%29%2C+and+I+decided+to+continue+it.%0D%0A%0D%0AOnce+I+got+the+basics+working%2C+I+thought+it+would+be+neat+to+have+some+way+of+interacting+with+the+scene--so+I+added+dat.gui%2C+which+are+the+controls+on+top+right.+Then+I+also+wanted+to+save+the+images%2C+as+I+once+I+added+controls+for+altering+the+look+I+started+getting+great+imagery%21+So+I+added+FileSaver.js+and+canvas-toBlob.js%2C+since+browser+support+for+downloading+images+is+still+a+bit+incomplete+%28so+to+speak%29.%0D%0A%0D%0AAnd+finally+I+thought%3A+hey%2C+storing+images+is+ok%2C+but+what+if+I+want+to+modify+an+existing+configuration%3F.+So+I+added+support+for+storing+the+current+configuration+via+some+simple+location+hash+serialising.+I+am+not+sure+if+it%27s+the+best+way+but+it+seems+to+work+well+enough+for+now%21%0D%0A%0D%0A%0D%0A%0D%0AOh%2C+and+since+I+just+love+text+effects%2C+I+added+a+silly+text-manipulation+thingie+to+dynamically+alter+the+innerText+of+the+page+contents.+Just+because%21%0D%0A%0D%0AIt%27s+fun+to+play+with+all+the+settings+and+seeing+what+happens.+I+have+found+myself+mesmerised+just+by+looking+at+the+end+result.+Some+images+seem+really+organic%3B+others+look+very+fractal%2Fspaceish+to+me.+%28Don%27t+forget+to+make+it+wobbly%21+--looks+like+someone+is+having+a+discussion+inside+the+pyramid%21%29.%0D%0A%0D%0AI%27m+very+happy+with+the+end+result%2C+and+even+more+about+the+development+process.+I+can+vividly+recall+the+many+hours+I+spent+in+2004+dealing+with+arrays+and+memory+allocation+for+such+a+simple+task+as+this+one.+Quite+unproductive%2C+to+be+honest%21+But+Javascript+%2B+WebGL+totally+ROCK%21+Also%2C+after+so+many+years+of+trying+to+explain+what+the+demoscene+and+realtime+is+about%2C+it%27s+great+to+be+able+to+demonstrate+it+in+realtime.+Yay%21%0D%0A%0D%0AI%27ll+write+about+the+new+%22Simple+yet+Frequently+Asked+Questions%22+about+three.js+that+I+encountered+while+doing+this+experiment...+but+that+will+be+tomorrow%2C+if+you+don%27t+mind%21%0D%0A%0D%0AHave+fun%21+%3A%29&amp;amp;tags=demoscene%2Chtml5%2Cjavascript%2Copengl%2Cthree.js%2Cwebgl%2Cblog" type="text/html" />
	</item>
		<item>
		<title>WebGL VGA</title>
		<link>http://soledadpenades.com/2012/04/09/webgl-vga/</link>
		<comments>http://soledadpenades.com/2012/04/09/webgl-vga/#comments</comments>
		<pubDate>Mon, 09 Apr 2012 00:17:53 +0000</pubDate>
		<dc:creator>sole</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[retro]]></category>
		<category><![CDATA[three.js]]></category>
		<category><![CDATA[vga]]></category>
		<category><![CDATA[webgl]]></category>

		<guid isPermaLink="false">http://soledadpenades.com/?p=3937</guid>
		<description><![CDATA[For some odd reason, I happened to remember a little demo that came with the first 16 bit computer I ever used&#8211;an Amstrad PC 2286. It was meant for showing off the capabilities of the new and shiny Paradise VGA graphics adapter that the 2000 line of computers incorporated. 256 simultaneous colours! 640&#215;350 graphics! So [...]]]></description>
			<content:encoded><![CDATA[<p>For some odd reason, I happened to remember a little demo that came with the first 16 bit computer I ever used&#8211;an Amstrad PC 2286. It was meant for showing off the capabilities of the new and shiny Paradise VGA graphics adapter that the 2000 line of computers incorporated. 256 simultaneous colours! 640&#215;350 graphics! So stunning back then! I ran this demo from time to time, admiring all those colours at the same time on the screen. Then I learnt how to make the computer output them with GW-Basic, but that is another story.</p>
<p>I wanted to watch that demo again, but it seems that the Amstrad PC line of computers doesn&#8217;t get as much love as the CPCs do. So there is hardly any software repository (or dump) for those computers, and thus I couldn&#8217;t locate that demo. It doesn&#8217;t help that I didn&#8217;t remember its filename either&#8230;</p>
<p>But I found several images depicting the demo, and somehow I decided that <em>rebuilding</em> the demo was an excellent idea &#8211;and a great excuse to learn <a href="https://github.com/mrdoob/three.js">three.js</a>!</p>
<p>This is how the original looked:</p>
<p><img src="/imgs/2012/amstrad_pc2086.jpg" alt="VGA demo" /></p>
<p>And <a href="http://lab.soledadpenades.com/js/webgl_vga/">this</a> is what I ended up with:</p>
<p><a href="http://lab.soledadpenades.com/js/webgl_vga/"><img src="/imgs/2012/amstrad_pc2086_revisited.png" alt="VGA demo + webgl 2012" /></a><br />
<span id="more-3937"></span><br />
In the process I thought I would spice things up a little. Since rotations are &#8220;cheap&#8221; with WebGL, I made things move around, mostly by rotating them. I also added some scaling here and there, and liberally used Math.sin and Math.cos (as Javascript is <em>so</em> fast nowadays too). Still, I didn&#8217;t go too far, for the sake of keeping some resemblance to the original!</p>
<h2>SFAQ</h2>
<p>Although three.js is designed to be simple and intuitive, I had several <q>how do I do this apparently simple thing with three.js?</q> moments, so I thought it would be interesting to write these down as a sort of &#8220;SFAQ&#8221; (Silly Frequently Asked Questions). There we go:</p>
<h3>How do I make a line?</h3>
<p>You first create a geometry, then add vertices to its <em>vertices</em> property. Then create a material to set the line color, and use both the geometry and the material to create a line.</p>
<div class="syhi_block"><code><span style="color: #003366; font-weight: bold;">var</span> geometry <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> THREE.<span style="color: #660066;">Geometry</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
geometry.<span style="color: #660066;">vertices</span>.<span style="color: #660066;">push</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">new</span> THREE.<span style="color: #660066;">Vertex</span><span style="color: #009900;">&#40;</span> <span style="color: #003366; font-weight: bold;">new</span> THREE.<span style="color: #660066;">Vector3</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
geometry.<span style="color: #660066;">vertices</span>.<span style="color: #660066;">push</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">new</span> THREE.<span style="color: #660066;">Vertex</span><span style="color: #009900;">&#40;</span> <span style="color: #003366; font-weight: bold;">new</span> THREE.<span style="color: #660066;">Vector3</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">100</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #003366; font-weight: bold;">var</span> material <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> THREE.<span style="color: #660066;">LineBasicMaterial</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span> color<span style="color: #339933;">:</span> 0xFF0000 <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #003366; font-weight: bold;">var</span> line <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> THREE.<span style="color: #660066;">Line</span><span style="color: #009900;">&#40;</span>geometry<span style="color: #339933;">,</span> material<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></code></div>
<p>Actually, you can create the line skipping the material creation. It will get a randomly assigned colour then.</p>
<h3>How do I make a line strip? (i.e. a series of connected segments)</h3>
<p>You start with a geometry, like in the line example above, but add as many points as you require. Then when creating the line you specify that the line type is THREE.LineStrip:</p>
<div class="syhi_block"><code><span style="color: #003366; font-weight: bold;">var</span> geometry <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> THREE.<span style="color: #660066;">Geometry</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
geometry.<span style="color: #660066;">vertices</span>.<span style="color: #660066;">push</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">new</span> THREE.<span style="color: #660066;">Vertex</span><span style="color: #009900;">&#40;</span> <span style="color: #003366; font-weight: bold;">new</span> THREE.<span style="color: #660066;">Vector3</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
geometry.<span style="color: #660066;">vertices</span>.<span style="color: #660066;">push</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">new</span> THREE.<span style="color: #660066;">Vertex</span><span style="color: #009900;">&#40;</span> <span style="color: #003366; font-weight: bold;">new</span> THREE.<span style="color: #660066;">Vector3</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">100</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
geometry.<span style="color: #660066;">vertices</span>.<span style="color: #660066;">push</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">new</span> THREE.<span style="color: #660066;">Vertex</span><span style="color: #009900;">&#40;</span> <span style="color: #003366; font-weight: bold;">new</span> THREE.<span style="color: #660066;">Vector3</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">100</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">100</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #006600; font-style: italic;">// ... add as many vertices as you need</span><br />
<br />
<span style="color: #003366; font-weight: bold;">var</span> material <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> THREE.<span style="color: #660066;">LineBasicMaterial</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span> color<span style="color: #339933;">:</span> 0xFF0000 <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #003366; font-weight: bold;">var</span> line <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> THREE.<span style="color: #660066;">Line</span><span style="color: #009900;">&#40;</span>geometry<span style="color: #339933;">,</span> material<span style="color: #339933;">,</span> THREE.<span style="color: #660066;">LineStrip</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></code></div>
<h3>How do I make a line in which each segment has a different colour?</h3>
<p>The answer to this is <strong>vertex colours</strong>, which works in the same way as the homonym concept in OpenGL: you need to specify a colour per vertex, instead of just a colour for the entire line. The way to specify the colours is to add instances of THREE.Color with the desired colour to the <strong>colors</strong> property, and then tell the line material to use them, as follows:</p>
<div class="syhi_block"><code><span style="color: #003366; font-weight: bold;">var</span> geometry <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> THREE.<span style="color: #660066;">Geometry</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
geometry.<span style="color: #660066;">vertices</span>.<span style="color: #660066;">push</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">new</span> THREE.<span style="color: #660066;">Vertex</span><span style="color: #009900;">&#40;</span> <span style="color: #003366; font-weight: bold;">new</span> THREE.<span style="color: #660066;">Vector3</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
geometry.<span style="color: #660066;">colors</span>.<span style="color: #660066;">push</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">new</span> THREE.<span style="color: #660066;">Color</span><span style="color: #009900;">&#40;</span> 0xFF0000 <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
geometry.<span style="color: #660066;">vertices</span>.<span style="color: #660066;">push</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">new</span> THREE.<span style="color: #660066;">Vertex</span><span style="color: #009900;">&#40;</span> <span style="color: #003366; font-weight: bold;">new</span> THREE.<span style="color: #660066;">Vector3</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">100</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
geometry.<span style="color: #660066;">colors</span>.<span style="color: #660066;">push</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">new</span> THREE.<span style="color: #660066;">Color</span><span style="color: #009900;">&#40;</span> 0x00FF00 <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #003366; font-weight: bold;">var</span> material <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> THREE.<span style="color: #660066;">LineBasicMaterial</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span> vertexColors<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span> <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #003366; font-weight: bold;">var</span> line <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> THREE.<span style="color: #660066;">Line</span><span style="color: #009900;">&#40;</span>geometry<span style="color: #339933;">,</span> material<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></code></div>
<p>I&#8217;m using this for the odd colourful figure on top left.</p>
<h3>How do I build hierarchies of objects?</h3>
<p>You can use the generic THREE.Object3D class as container for other objects. When you add children to that object, and move it, the children will move along with the parent:</p>
<div class="syhi_block"><code><span style="color: #003366; font-weight: bold;">var</span> container <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> THREE.<span style="color: #660066;">Object3D</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #003366; font-weight: bold;">var</span> geometry <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> THREE.<span style="color: #660066;">CubeGeometry</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">10</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">10</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #003366; font-weight: bold;">var</span> cube <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> THREE.<span style="color: #660066;">Mesh</span><span style="color: #009900;">&#40;</span>geometry<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
container.<span style="color: #660066;">add</span><span style="color: #009900;">&#40;</span>cube<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<br />
cube.<span style="color: #660066;">position</span>.<span style="color: #660066;">x</span> <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// Local x = 0</span><br />
container.<span style="color: #660066;">position</span>.<span style="color: #660066;">x</span> <span style="color: #339933;">=</span> <span style="color: #CC0000;">10</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// The cube's 'world' X coordinate at this point is 10</span></code></div>
<p>I used this for the &#8220;moire blocks&#8221; in the middle of the screen.</p>
<h3>How do I change the colour of an object after having instantiated it?</h3>
<p>Simply access its material.color property and change it as required:</p>
<div class="syhi_block"><code><span style="color: #003366; font-weight: bold;">var</span> geometry <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> THREE.<span style="color: #660066;">Geometry</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
geometry.<span style="color: #660066;">vertices</span>.<span style="color: #660066;">push</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">new</span> THREE.<span style="color: #660066;">Vertex</span><span style="color: #009900;">&#40;</span> <span style="color: #003366; font-weight: bold;">new</span> THREE.<span style="color: #660066;">Vector3</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
geometry.<span style="color: #660066;">vertices</span>.<span style="color: #660066;">push</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">new</span> THREE.<span style="color: #660066;">Vertex</span><span style="color: #009900;">&#40;</span> <span style="color: #003366; font-weight: bold;">new</span> THREE.<span style="color: #660066;">Vector3</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">100</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #003366; font-weight: bold;">var</span> material <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> THREE.<span style="color: #660066;">LineBasicMaterial</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span> color<span style="color: #339933;">:</span> 0xFF0000 <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #003366; font-weight: bold;">var</span> line <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> THREE.<span style="color: #660066;">Line</span><span style="color: #009900;">&#40;</span>geometry<span style="color: #339933;">,</span> material<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #006600; font-style: italic;">// the line is red</span><br />
<br />
<span style="color: #006600; font-style: italic;">// But if we change its green attribute to 1...</span><br />
line.<span style="color: #660066;">material</span>.<span style="color: #660066;">color</span>.<span style="color: #660066;">g</span> <span style="color: #339933;">=</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #006600; font-style: italic;">// ...the line is yellow now!</span></code></div>
<p>This technique is used for animating the colour of the rectangles on top right.</p>
<h2>A call for help!</h2>
<p>If you know the file name, or have a copy of the original demo, please let me know! I would love to watch it again after so many years! Hopefully it will work with DOSBox. Please! :-)</p>
 <p><a href="http://soledadpenades.com/?flattrss_redirect&amp;id=3937&amp;md5=21d51722868ccc951ca3f6167f765e69" title="Flattr" target="_blank"><img src="http://soledadpenades.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://soledadpenades.com/2012/04/09/webgl-vga/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=8399&amp;amp;url=http%3A%2F%2Fsoledadpenades.com%2F2012%2F04%2F09%2Fwebgl-vga%2F&amp;amp;language=en_GB&amp;amp;category=text&amp;amp;title=WebGL+VGA&amp;amp;description=For+some+odd+reason%2C+I+happened+to+remember+a+little+demo+that+came+with+the+first+16+bit+computer+I+ever+used--an+Amstrad+PC+2286.+It+was+meant+for+showing+off+the+capabilities+of+the+new+and+shiny+Paradise+VGA+graphics+adapter+that+the+2000+line+of+computers+incorporated.+256+simultaneous+colours%21+640x350+graphics%21+So+stunning+back+then%21+I+ran+this+demo+from+time+to+time%2C+admiring+all+those+colours+at+the+same+time+on+the+screen.+Then+I+learnt+how+to+make+the+computer+output+them+with+GW-Basic%2C+but+that+is+another+story.%0D%0A%0D%0AI+wanted+to+watch+that+demo+again%2C+but+it+seems+that+the+Amstrad+PC+line+of+computers+doesn%27t+get+as+much+love+as+the+CPCs+do.+So+there+is+hardly+any+software+repository+%28or+dump%29+for+those+computers%2C+and+thus+I+couldn%27t+locate+that+demo.+It+doesn%27t+help+that+I+didn%27t+remember+its+filename+either...%0D%0A%0D%0ABut+I+found+several+images+depicting+the+demo%2C+and+somehow+I+decided+that+rebuilding+the+demo+was+an+excellent+idea+--and+a+great+excuse+to+learn+three.js%21%0D%0A%0D%0AThis+is+how+the+original+looked%3A%0D%0A%0D%0A%0D%0A%0D%0AAnd+this+is+what+I+ended+up+with%3A%0D%0A%0D%0A%0D%0A%0D%0AIn+the+process+I+thought+I+would+spice+things+up+a+little.+Since+rotations+are+%22cheap%22+with+WebGL%2C+I+made+things+move+around%2C+mostly+by+rotating+them.+I+also+added+some+scaling+here+and+there%2C+and+liberally+used+Math.sin+and+Math.cos+%28as+Javascript+is+so+fast+nowadays+too%29.+Still%2C+I+didn%27t+go+too+far%2C+for+the+sake+of+keeping+some+resemblance+to+the+original%21%0D%0A%0D%0ASFAQ%0D%0A%0D%0AAlthough+three.js+is+designed+to+be+simple+and+intuitive%2C+I+had+several+how+do+I+do+this+apparently+simple+thing+with+three.js%3F+moments%2C+so+I+thought+it+would+be+interesting+to+write+these+down+as+a+sort+of+%22SFAQ%22+%28Silly+Frequently+Asked+Questions%29.+There+we+go%3A%0D%0A%0D%0AHow+do+I+make+a+line%3F%0D%0A%0D%0AYou+first+create+a+geometry%2C+then+add+vertices+to+its+vertices+property.+Then+create+a+material+to+set+the+line+color%2C+and+use+both+the+geometry+and+the+material+to+create+a+line.%0D%0A%0D%0A%0D%0Avar+geometry+%3D+new+THREE.Geometry%28%29%3B%0D%0A%0D%0Ageometry.vertices.push%28new+THREE.Vertex%28+new+THREE.Vector3%280%2C+0%2C+0%29+%29+%29%3B%0D%0Ageometry.vertices.push%28new+THREE.Vertex%28+new+THREE.Vector3%28100%2C+0%2C+0%29+%29+%29%3B%0D%0A%0D%0Avar+material+%3D+new+THREE.LineBasicMaterial%28%7B+color%3A+0xFF0000+%7D%29%3B%0D%0Avar+line+%3D+new+THREE.Line%28geometry%2C+material%29%3B%0D%0A%0D%0A%0D%0AActually%2C+you+can+create+the+line+skipping+the+material+creation.+It+will+get+a+randomly+assigned+colour+then.%0D%0A%0D%0AHow+do+I+make+a+line+strip%3F+%28i.e.+a+series+of+connected+segments%29%0D%0A%0D%0AYou+start+with+a+geometry%2C+like+in+the+line+example+above%2C+but+add+as+many+points+as+you+require.+Then+when+creating+the+line+you+specify+that+the+line+type+is+THREE.LineStrip%3A%0D%0A%0D%0A%0D%0Avar+geometry+%3D+new+THREE.Geometry%28%29%3B%0D%0A%0D%0Ageometry.vertices.push%28new+THREE.Vertex%28+new+THREE.Vector3%280%2C+0%2C+0%29+%29+%29%3B%0D%0Ageometry.vertices.push%28new+THREE.Vertex%28+new+THREE.Vector3%28100%2C+0%2C+0%29+%29+%29%3B%0D%0Ageometry.vertices.push%28new+THREE.Vertex%28+new+THREE.Vector3%28100%2C+100%2C+0%29+%29+%29%3B%0D%0A%2F%2F+...+add+as+many+vertices+as+you+need%0D%0A%0D%0Avar+material+%3D+new+THREE.LineBasicMaterial%28%7B+color%3A+0xFF0000+%7D%29%3B%0D%0Avar+line+%3D+new+THREE.Line%28geometry%2C+material%2C+THREE.LineStrip%29%3B%0D%0A%0D%0A%0D%0AHow+do+I+make+a+line+in+which+each+segment+has+a+different+colour%3F%0D%0A%0D%0AThe+answer+to+this+is+vertex+colours%2C+which+works+in+the+same+way+as+the+homonym+concept+in+OpenGL%3A+you+need+to+specify+a+colour+per+vertex%2C+instead+of+just+a+colour+for+the+entire+line.+The+way+to+specify+the+colours+is+to+add+instances+of+THREE.Color+with+the+desired+colour+to+the+colors+property%2C+and+then+tell+the+line+material+to+use+them%2C+as+follows%3A%0D%0A%0D%0A%0D%0Avar+geometry+%3D+new+THREE.Geometry%28%29%3B%0D%0A%0D%0Ageometry.vertices.push%28new+THREE.Vertex%28+new+THREE.Vector3%280%2C+0%2C+0%29+%29+%29%3B%0D%0Ageometry.colors.push%28new+THREE.Color%28+0xFF0000+%29+%29%3B%0D%0Ageometry.vertices.push%28new+THREE.Vertex%28+new+THREE.Vector3%28100%2C+0%2C+0%29+%29+%29%3B%0D%0Ageometry.colors.push%28new+THREE.Color%28+0x00FF00+%29+%29%3B%0D%0A%0D%0Avar+material+%3D+new+THREE.LineBasicMaterial%28%7B+vertexColors%3A+true+%7D%29%3B%0D%0Avar+line+%3D+new+THREE.Line%28geometry%2C+material%29%3B%0D%0A%0D%0A%0D%0AI%27m+using+this+for+the+odd+colourful+figure+on+top+left.%0D%0A%0D%0AHow+do+I+build+hierarchies+of+objects%3F%0D%0A%0D%0AYou+can+use+the+generic+THREE.Object3D+class+as+container+for+other+objects.+When+you+add+children+to+that+object%2C+and+move+it%2C+the+children+will+move+along+with+the+parent%3A%0D%0A%0D%0A%0D%0Avar+container+%3D+new+THREE.Object3D%28%29%3B%0D%0Avar+geometry+%3D+new+THREE.CubeGeometry%2810%2C+10%2C+10%29%3B%0D%0Avar+cube+%3D+new+THREE.Mesh%28geometry%29%3B%0D%0A%0D%0Acontainer.add%28cube%29%3B%0D%0A%0D%0A%0D%0Acube.position.x+%3D+0%3B+%2F%2F+Local+x+%3D+0%0D%0Acontainer.position.x+%3D+10%3B+%2F%2F+The+cube%27s+%27world%27+X+coordinate+at+this+point+is+10%0D%0A%0D%0A%0D%0AI+used+this+for+the+%22moire+blocks%22+in+the+middle+of+the+screen.%0D%0A%0D%0AHow+do+I+change+the+colour+of+an+object+after+having+instantiated+it%3F%0D%0A%0D%0ASimply+access+its+material.color+property+and+change+it+as+required%3A%0D%0A%0D%0A%0D%0Avar+geometry+%3D+new+THREE.Geometry%28%29%3B%0D%0A%0D%0Ageometry.vertices.push%28new+THREE.Vertex%28+new+THREE.Vector3%280%2C+0%2C+0%29+%29+%29%3B%0D%0Ageometry.vertices.push%28new+THREE.Vertex%28+new+THREE.Vector3%28100%2C+0%2C+0%29+%29+%29%3B%0D%0A%0D%0Avar+material+%3D+new+THREE.LineBasicMaterial%28%7B+color%3A+0xFF0000+%7D%29%3B%0D%0Avar+line+%3D+new+THREE.Line%28geometry%2C+material%29%3B%0D%0A%0D%0A%2F%2F+the+line+is+red%0D%0A%0D%0A%2F%2F+But+if+we+change+its+green+attribute+to+1...%0D%0Aline.material.color.g+%3D+1%3B%0D%0A%0D%0A%2F%2F+...the+line+is+yellow+now%21%0D%0A%0D%0A%0D%0AThis+technique+is+used+for+animating+the+colour+of+the+rectangles+on+top+right.%0D%0A%0D%0AA+call+for+help%21%0D%0A%0D%0AIf+you+know+the+file+name%2C+or+have+a+copy+of+the+original+demo%2C+please+let+me+know%21+I+would+love+to+watch+it+again+after+so+many+years%21+Hopefully+it+will+work+with+DOSBox.+Please%21+%3A-%29&amp;amp;tags=javascript%2Cretro%2Cthree.js%2Cvga%2Cwebgl%2Cblog" type="text/html" />
	</item>
		<item>
		<title>animated_gif.js</title>
		<link>http://soledadpenades.com/2012/04/02/animated_gif-js/</link>
		<comments>http://soledadpenades.com/2012/04/02/animated_gif-js/#comments</comments>
		<pubDate>Mon, 02 Apr 2012 07:18:13 +0000</pubDate>
		<dc:creator>sole</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Silly stuff]]></category>
		<category><![CDATA[animated gif]]></category>
		<category><![CDATA[canvas]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://soledadpenades.com/?p=3934</guid>
		<description><![CDATA[Past week I wanted to make an animated GIF &#8211; but didn&#8217;t want to use GIMP or ffmpeg for that. I wondered: can an animated GIF be made in the browser? Of course it can! There was a library (JSGIF) which was a port of the original ActionScript library, AS3GIF. I built a bit of [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://lab.soledadpenades.com/js/animated_gif/"><img src="/imgs/2012/animated_gif.png" alt="Animated GIF" /></a></p>
<p>Past week I wanted to make an animated GIF &#8211; but didn&#8217;t want to use GIMP or ffmpeg for that. I wondered: can an animated GIF be made in the browser? <strong>Of course it can!</strong> There was a library (<a href="https://github.com/antimatter15/jsgif">JSGIF</a>) which was a port of the original ActionScript library, <a href="http://code.google.com/p/as3gif/">AS3GIF</a>.</p>
<p>I built a bit of wrapping code around the library, and did some tests to see if the port worked, first by creating a canvas and painting random squares on it, and then using them as input frames and building the GIF with that. Secondly, I tried using images. It worked acceptably enough (the color quantizer could be better, but we&#8217;re not after photo-realistic animations, after all).</p>
<p>So I added the drag and drop + file api stuff, but there was still something missing&#8230; <strong>the look wasn&#8217;t 90s enough</strong>! It was all begging for a bit of outdated aesthetics, but done with CSS3 and HTML5. Hence, there are multicolour logos via CSS animations, eye-cancer phosphorescent pink that turns into X-Files green glow (via CSS animations too), an HTML5 &lt;footer&gt; element used just because, and even a modern, 21st century blink-kind effect thanks to more CSS animations. You can&#8217;t but love it. And those huge frames! They are done with an ingenious abuse of CSS borders, but that could be done with CSS five years ago already. Nothing new here, but all very funny in any case.</p>
<p>Note that even if I finished this yesterday &#8211;April&#8217;s Fools&#8211; it wasn&#8217;t originally intended to be an April&#8217;s Fools joke. Hopefully you can take it seriously, right?</p>
<p>Right!</p>
<p><small>PS I actually looked into making animated WebP&#8217;s but the library I found wasn&#8217;t fast enough so all the fun factor was lost :-(</p>
<p>Maybe in a couple of years, when WebP is retro already&#8230;</small></p>
 <p><a href="http://soledadpenades.com/?flattrss_redirect&amp;id=3934&amp;md5=cfeffadb082760226e262c878a6b9457" title="Flattr" target="_blank"><img src="http://soledadpenades.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://soledadpenades.com/2012/04/02/animated_gif-js/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=8399&amp;amp;url=http%3A%2F%2Fsoledadpenades.com%2F2012%2F04%2F02%2Fanimated_gif-js%2F&amp;amp;language=en_GB&amp;amp;category=text&amp;amp;title=animated_gif.js&amp;amp;description=%0D%0A%0D%0APast+week+I+wanted+to+make+an+animated+GIF+-+but+didn%27t+want+to+use+GIMP+or+ffmpeg+for+that.+I+wondered%3A+can+an+animated+GIF+be+made+in+the+browser%3F+Of+course+it+can%21+There+was+a+library+%28JSGIF%29+which+was+a+port+of+the+original+ActionScript+library%2C+AS3GIF.%0D%0A%0D%0AI+built+a+bit+of+wrapping+code+around+the+library%2C+and+did+some+tests+to+see+if+the+port+worked%2C+first+by+creating+a+canvas+and+painting+random+squares+on+it%2C+and+then+using+them+as+input+frames+and+building+the+GIF+with+that.+Secondly%2C+I+tried+using+images.+It+worked+acceptably+enough+%28the+color+quantizer+could+be+better%2C+but+we%27re+not+after+photo-realistic+animations%2C+after+all%29.%0D%0A%0D%0ASo+I+added+the+drag+and+drop+%2B+file+api+stuff%2C+but+there+was+still+something+missing...+the+look+wasn%27t+90s+enough%21+It+was+all+begging+for+a+bit+of+outdated+aesthetics%2C+but+done+with+CSS3+and+HTML5.+Hence%2C+there+are+multicolour+logos+via+CSS+animations%2C+eye-cancer+phosphorescent+pink+that+turns+into+X-Files+green+glow+%28via+CSS+animations+too%29%2C+an+HTML5+%26lt%3Bfooter%26gt%3B+element+used+just+because%2C+and+even+a+modern%2C+21st+century+blink-kind+effect+thanks+to+more+CSS+animations.+You+can%27t+but+love+it.+And+those+huge+frames%21+They+are+done+with+an+ingenious+abuse+of+CSS+borders%2C+but+that+could+be+done+with+CSS+five+years+ago+already.+Nothing+new+here%2C+but+all+very+funny+in+any+case.%0D%0A%0D%0ANote+that+even+if+I+finished+this+yesterday+--April%27s+Fools--+it+wasn%27t+originally+intended+to+be+an+April%27s+Fools+joke.+Hopefully+you+can+take+it+seriously%2C+right%3F%0D%0A%0D%0ARight%21%0D%0A%0D%0APS+I+actually+looked+into+making+animated+WebP%27s+but+the+library+I+found+wasn%27t+fast+enough+so+all+the+fun+factor+was+lost+%3A-%28%0D%0A%0D%0AMaybe+in+a+couple+of+years%2C+when+WebP+is+retro+already...&amp;amp;tags=animated+gif%2Ccanvas%2Ccss3%2Chtml5%2Cjavascript%2Cblog" type="text/html" />
	</item>
		<item>
		<title>London-New York (and back), via Hong Kong, Macau, Tokyo and San Francisco</title>
		<link>http://soledadpenades.com/2012/01/29/london-new-york-and-back-via-hong-kong-macau-tokyo-and-san-francisco/</link>
		<comments>http://soledadpenades.com/2012/01/29/london-new-york-and-back-via-hong-kong-macau-tokyo-and-san-francisco/#comments</comments>
		<pubDate>Sun, 29 Jan 2012 23:03:40 +0000</pubDate>
		<dc:creator>sole</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[hong kong]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[london]]></category>
		<category><![CDATA[macau]]></category>
		<category><![CDATA[new york]]></category>
		<category><![CDATA[san francisco]]></category>
		<category><![CDATA[sketches]]></category>
		<category><![CDATA[tokyo]]></category>

		<guid isPermaLink="false">http://soledadpenades.com/?p=3891</guid>
		<description><![CDATA[The sketch book I mentioned a couple weeks ago has finally been released! To recap (just in case you accidentally ended here and have no context), it is a travel sketchbook depicting our experiences while travelling around the world these past April and May. I&#8217;ve finally settled on building a simple HTML(5) page with a [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://5013.es/data/projects/b/proj_big.jpg" alt="London-New York (and back), via Hong Kong, Macau, Tokyo and San Francisco" /></p>
<p>The sketch book I mentioned <a href="http://soledadpenades.com/2012/01/12/the-end-of-the-world/">a couple weeks ago</a> has finally been <a href="http://5013.es/sketches/london-newyork/">released</a>! To recap (just in case you accidentally ended here and have no context), it is a travel sketchbook depicting our experiences while travelling <em>around the world</em> these past April and May.</p>
<p>I&#8217;ve finally settled on building a simple HTML(5) page with a sprinkle of Javascript to navigate the bigger images. Something that gets the job done, which is showing you my crazy sketches!</p>
<p>I might possibly build a Kindle version in the near future, so if you&#8217;re a Kindle user, stay tuned ;-)</p>
<p>In the meantime you can read a bit about the background and the &#8220;tools&#8221; in the <a href="http://5013.es/p/b">project page</a>.</p>
 <p><a href="http://soledadpenades.com/?flattrss_redirect&amp;id=3891&amp;md5=e135772421736291f5d9213e7cab3282" title="Flattr" target="_blank"><img src="http://soledadpenades.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://soledadpenades.com/2012/01/29/london-new-york-and-back-via-hong-kong-macau-tokyo-and-san-francisco/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=8399&amp;amp;url=http%3A%2F%2Fsoledadpenades.com%2F2012%2F01%2F29%2Flondon-new-york-and-back-via-hong-kong-macau-tokyo-and-san-francisco%2F&amp;amp;language=en_GB&amp;amp;category=text&amp;amp;title=London-New+York+%28and+back%29%2C+via+Hong+Kong%2C+Macau%2C+Tokyo+and+San+Francisco&amp;amp;description=%0D%0A%0D%0AThe+sketch+book+I+mentioned+a+couple+weeks+ago+has+finally+been+released%21+To+recap+%28just+in+case+you+accidentally+ended+here+and+have+no+context%29%2C+it+is+a+travel+sketchbook+depicting+our+experiences+while+travelling+around+the+world+these+past+April+and+May.%0D%0A%0D%0AI%27ve+finally+settled+on+building+a+simple+HTML%285%29+page+with+a+sprinkle+of+Javascript+to+navigate+the+bigger+images.+Something+that+gets+the+job+done%2C+which+is+showing+you+my+crazy+sketches%21%0D%0A%0D%0AI+might+possibly+build+a+Kindle+version+in+the+near+future%2C+so+if+you%27re+a+Kindle+user%2C+stay+tuned+%3B-%29%0D%0A%0D%0AIn+the+meantime+you+can+read+a+bit+about+the+background+and+the+%22tools%22+in+the+project+page.&amp;amp;tags=hong+kong%2Chtml5%2Cjavascript%2Clondon%2Cmacau%2Cnew+york%2Csan+francisco%2Csketches%2Ctokyo%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Some notes from Google DevFest Barcelona 2011</title>
		<link>http://soledadpenades.com/2011/11/10/some-notes-from-google-devfest-barcelona-2011/</link>
		<comments>http://soledadpenades.com/2011/11/10/some-notes-from-google-devfest-barcelona-2011/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 16:32:14 +0000</pubDate>
		<dc:creator>sole</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[webgl]]></category>

		<guid isPermaLink="false">http://soledadpenades.com/?p=3822</guid>
		<description><![CDATA[I thought I wouldn&#8217;t make it to the place. Barcelona&#8217;s metro system is still pretty much unknown to me and it&#8217;s hard to find navigational help using the official web from the transport entity. Maps are confusing (we need a Beck!). A shame, but I finally did it, after walking the same loooong underground exchange [...]]]></description>
			<content:encoded><![CDATA[<p>I thought I wouldn&#8217;t make it to the place. Barcelona&#8217;s metro system is still pretty much unknown to me and it&#8217;s hard to find navigational help using the official web from the transport entity. Maps are confusing (we need a <a href="http://en.wikipedia.org/wiki/Harry_Beck">Beck</a>!). A shame, but I finally did it, after walking the same loooong underground exchange that Fuzzion guys used for recording their famous <a href="http://www.youtube.com/watch?v=Txv8pC2niXk">kukka:r0kasit7e!aarku</a> demo. I arrived a tad late, but I did it! Yay! :-) </p>
<p>And while most of the attendees brought their laptops, I went oldschool and brought a trusty notepad and a ballpen to jot down whatever caught my attention.<br />
<span id="more-3822"></span><br />
First in the morning was the HTML session. I didn&#8217;t write anything down about this one, since I was concentrated on looking at the stuff <a href="http://paul.kinlan.me/">Paul Kinlan</a> was showing. I knew about most of the stuff he talked about, but it was a nice reminder. It was cool that the slides were interactive themselves, so he could demonstrate things without getting out of the &#8220;slides environment&#8221;. Then went <a href="http://mrdoob.com">Mr.doob</a> and his short GLSL + WebGL talk. I think it was too short for the topic! Anyway, people were quite impressed with the patterns one could generate by writing a shader, and since he&#8217;s released <a href="http://mrdoob.com/projects/glsl_sandbox/">an improved version</a> of the interactive GLSL sandbox tool he used, you can now experiment in the same way he did! :-)</p>
<p>Then came the break time and I got talking and after that I sadly missed much of the talk about Google+ from <a href="http://www.oshineye.com/">Ade Oshineye</a>, confiding that I would be able to catch up later on by looking at the docs :-P</p>
<p>I entered the conference area again for the Android sessions with <a href="https://plus.google.com/102451193315916178828/about">Bruno Oliveira</a>. I was quite interested in hearing what they had to say, after the recent &#8220;events&#8221;: 4.0 announced, the Android git repo being taken down, the (in)famous fragmentation chart, etc&#8230;</p>
<p>&#8230; and what I heard was a bit disappointing. It seems to me there&#8217;s a <strong>fundamental disconnection</strong> between what Android developers want and what Google/Android has to offer. It was very obvious when questions time arrived and most of the attendees were asking questions about monetising the apps (or in other words, being able to recover the investment on the platform), and pretty much all Bruno had to answer was that Android intended to be <q>a democratic platform, focused on what the user wants</q>, and not forcing them to do something like entering credit card information when turning on the device for the first time. He also added that Android wasn&#8217;t targeted to any specific income range as <q>other platforms</q> do.</p>
<p>When asked about &#8220;fragmentation&#8221; he said that:<br />
<blockquote>[...] diversity is a feature of the platform, is not really fragmentation. Different operating system versions [...] is what people call fragmentation [...]<br />
It&#8217;s a consequence of being open source [...] we don&#8217;t want to put pressure on manufacturers. Maybe in a friendly way, releasing cool inspiring phones like the Nexus S, etc&#8230; [...]</p></blockquote>
<p>He was also asked about the agreement between Android and manufacturers regarding updates that was announced and widely discussed on past Google I/O, but after digressing for a while he didn&#8217;t give any definite statement on that matter.</p>
<p>Then he went on to give some advice on how to make great apps, suggesting we should <strong>detect the available features</strong> on each device and act accordingly, activating or deactivating features in our apps, because <q>not being compatible with a certain phone is being arrogant, like saying to the user that he bought the wrong phone</q>.</p>
<p>This is something that particularly irks me, as sometimes there&#8217;s no written specification that app developers can consult and be confident will be followed to the letter, as each phone diverges a lot on its behaviour. It&#8217;s impossible to know in advance what will happen unless you test it with the real phone. Yes, there&#8217;s the emulator, and that famous esoteric compatibility suite that a phone must passed in order to have the Google apps (Market, Gmail&#8230;) installed, but that doesn&#8217;t guarantee that a real phone will have a proper, complete GL ES implementation, for example.</p>
<p>So making that type of statements did actually sound wildly arrogant on <em>his</em> side. And he went on, happily adding there wasn&#8217;t no excuse for not creating all the different versions of resources for all the different screen sizes and densities. This was followed by a general moaning and mumbling in the public, as with each new release of the SDK not only are there new features that need to be used if you want a &#8220;cool app&#8221; that uses the latest stuff in new phones, but there are also new resources to be created and maintained, thus increasing the complexity required to build something &#8220;great&#8221; for Android versions &le; X.</p>
<p>Something else that really worries/annoys me is the <strong>insistence in showing raw activation and installation numbers</strong> in every presentation they do. It doesn&#8217;t make much sense on the long term: I have probably activated four devices but that doesn&#8217;t mean I use all of them (as I use them for testing), or that I am four different potential users. Another use case: people using carrier-subsidised phones change them quite often, but that doesn&#8217;t mean a new user is created from void each time a new phone is activated. It&#8217;s still the <em>same</em> user and he&#8217;s not going to expand the market&#8211;it actually stays the same, as the old phone will probably get thrown in a drawer. Same goes for installation numbers: that you install an application doesn&#8217;t mean you actually use or keep it on your device. They could show uninstallation numbers too, and the ratio between installs and uninstalls would be a way better indicator (but probably not as attractive).</p>
<p>Moving on, it was lunch time, which we used to discuss the above points. Most people dismissed Bruno&#8217;s compatibility strategy as it&#8217;s plain unrealistic (unless you have an infinite number of testing resources, or simply build very basic and unexciting apps). Some jokes were made about the fragmentation &#8220;feature&#8221;: <q>it&#8217;s not a defective phone, it&#8217;s a feature!</q>.</p>
<p>After lunch we got Paul Kinlan again, explaining several strategies for &#8220;making a business out of apps&#8221;. Again he relied massively on AdSense, which has proven to be a very unreliable and arbitrary source of income. He also mentioned the Chrome Webstore, of course, but it&#8217;s not very widely extended yet. This session wasn&#8217;t as enlightening as the HTML session, as the concepts weren&#8217;t new and &#8230; well, you can imagine the rest.</p>
<p>Next was Danny Hermes with an strange session on the Shopping API. He sounded slightly apologetic and felt like out of place since there wasn&#8217;t even a &#8220;Shopping&#8221; icon on the banner, whereas there were G+, Android and Chrome icons, but at least was really enthusiastic about his topic. I guess this talk could be interesting for people integrating Google&#8217;s Product Search with online shops, but this is not something I&#8217;m currently interested at so I didn&#8217;t pay much attention.</p>
<p>Sam Dutton&#8217;s Chrome Dev Tools session was way more interesting. It was funny that we were commenting: <q>it would be cool if you could save the changes you do live&#8230;</q> And then he said: <q>here&#8217;s this new feature: now you can save the changes you made to the document!</q>. </p>
<p>It also made me slightly envious: the Chrome developer tools are an amazing platform for developing, and the Android toolset pales in comparison. It&#8217;s all &#8220;hacks&#8221; here and there: a separate app for tracing, another one for viewing the layout, an app for debugging&#8230; Seems like Google should invest more in the Android team ;-)</p>
<p>It was time for &#8220;snacks&#8221; again. I had a coffee, thanks to the help of <a href="http://www.clicktorelease.com/code/">@thespite</a> which showed me how to use a Nespresso machine. Yes, I had never used one before&#8211;I&#8217;m a slow-food sort of person and generally use a french coffee maker instead ;-)</p>
<p>And finally it was time for more Ade Oshineye talks, this time on the Google+ Hangouts API, but for some reason (saturation?) my brain squarely refused to pay attention. I&#8217;m so sorry Ade! See, if the talks had been recorded I might be able to watch them ;-)</p>
<p>After the talk finished, it was &#8220;Pitch your app&#8221; time, where several attendees tried to convince us that their app was the best ever. The best demonstration got a voucher redeemable for a Nexus S, since the phone is not available for sale yet. I was nicely surprised by the level of English demonstrated by the guys pitching the app. They still have a lot of Spanish accent but they aren&#8217;t kicking the grammar like a punch bag every two words, and that&#8217;s something you can&#8217;t say about most mono-English speakers! So well done on that front!</p>
<p>Regarding the apps, I was a bit less impressed, as most of them weren&#8217;t really surprising: weather aggregation services, GPS tracking+Maps, cloud CMS integration, a football game, a chess game, bike rental locations aggregation/visualisation&#8230; nothing that got me enthusiastic about :-P</p>
<p>What <em>did</em> surprise me in fact was that one of the pitchers connected his laptop to the projector and I could see how he opened a terminal and wrote &#8220;pm-suspend&#8221; prior to disconnecting the computer from the projector. Now that is hardcore! Who needs widgets to suspend the computer? A terminal is all you need! \o/</p>
<p>So to sum up, it was quite an event-packed day, quite professionally organised. Thanks and well done, Google! It not only provide me with some new ideas and tricks, but it also got me thinking about the true Google strategy on Android. Unfortunately the post was getting too long, and that discourse seemed slightly out of place, so I cut that part out and will refine and publish it in the near future as a separate post.</p>
<p>Here&#8217;s hoping there&#8217;ll be a future DevFest BCN 2012! :-)</p>
 <p><a href="http://soledadpenades.com/?flattrss_redirect&amp;id=3822&amp;md5=6d2d33ee58f0ef1b8893fb9725ee817c" title="Flattr" target="_blank"><img src="http://soledadpenades.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://soledadpenades.com/2011/11/10/some-notes-from-google-devfest-barcelona-2011/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=8399&amp;amp;url=http%3A%2F%2Fsoledadpenades.com%2F2011%2F11%2F10%2Fsome-notes-from-google-devfest-barcelona-2011%2F&amp;amp;language=en_GB&amp;amp;category=text&amp;amp;title=Some+notes+from+Google+DevFest+Barcelona+2011&amp;amp;description=I+thought+I+wouldn%27t+make+it+to+the+place.+Barcelona%27s+metro+system+is+still+pretty+much+unknown+to+me+and+it%27s+hard+to+find+navigational+help+using+the+official+web+from+the+transport+entity.+Maps+are+confusing+%28we+need+a+Beck%21%29.+A+shame%2C+but+I+finally+did+it%2C+after+walking+the+same+loooong+underground+exchange+that+Fuzzion+guys+used+for+recording+their+famous+kukka%3Ar0kasit7e%21aarku+demo.+I+arrived+a+tad+late%2C+but+I+did+it%21+Yay%21+%3A-%29+%0D%0A%0D%0AAnd+while+most+of+the+attendees+brought+their+laptops%2C+I+went+oldschool+and+brought+a+trusty+notepad+and+a+ballpen+to+jot+down+whatever+caught+my+attention.%0D%0A%0D%0AFirst+in+the+morning+was+the+HTML+session.+I+didn%27t+write+anything+down+about+this+one%2C+since+I+was+concentrated+on+looking+at+the+stuff+Paul+Kinlan+was+showing.+I+knew+about+most+of+the+stuff+he+talked+about%2C+but+it+was+a+nice+reminder.+It+was+cool+that+the+slides+were+interactive+themselves%2C+so+he+could+demonstrate+things+without+getting+out+of+the+%22slides+environment%22.+Then+went+Mr.doob+and+his+short+GLSL+%2B+WebGL+talk.+I+think+it+was+too+short+for+the+topic%21+Anyway%2C+people+were+quite+impressed+with+the+patterns+one+could+generate+by+writing+a+shader%2C+and+since+he%27s+released+an+improved+version+of+the+interactive+GLSL+sandbox+tool+he+used%2C+you+can+now+experiment+in+the+same+way+he+did%21+%3A-%29%0D%0A%0D%0AThen+came+the+break+time+and+I+got+talking+and+after+that+I+sadly+missed+much+of+the+talk+about+Google%2B+from+Ade+Oshineye%2C+confiding+that+I+would+be+able+to+catch+up+later+on+by+looking+at+the+docs+%3A-P%0D%0A%0D%0AI+entered+the+conference+area+again+for+the+Android+sessions+with+Bruno+Oliveira.+I+was+quite+interested+in+hearing+what+they+had+to+say%2C+after+the+recent+%22events%22%3A+4.0+announced%2C+the+Android+git+repo+being+taken+down%2C+the+%28in%29famous+fragmentation+chart%2C+etc...%0D%0A%0D%0A...+and+what+I+heard+was+a+bit+disappointing.+It+seems+to+me+there%27s+a+fundamental+disconnection+between+what+Android+developers+want+and+what+Google%2FAndroid+has+to+offer.+It+was+very+obvious+when+questions+time+arrived+and+most+of+the+attendees+were+asking+questions+about+monetising+the+apps+%28or+in+other+words%2C+being+able+to+recover+the+investment+on+the+platform%29%2C+and+pretty+much+all+Bruno+had+to+answer+was+that+Android+intended+to+be+a+democratic+platform%2C+focused+on+what+the+user+wants%2C+and+not+forcing+them+to+do+something+like+entering+credit+card+information+when+turning+on+the+device+for+the+first+time.+He+also+added+that+Android+wasn%27t+targeted+to+any+specific+income+range+as+other+platforms+do.%0D%0A%0D%0AWhen+asked+about+%22fragmentation%22+he+said+that%3A+%5B...%5D+diversity+is+a+feature+of+the+platform%2C+is+not+really+fragmentation.+Different+operating+system+versions+%5B...%5D+is+what+people+call+fragmentation+%5B...%5D%0D%0AIt%27s+a+consequence+of+being+open+source+%5B...%5D+we+don%27t+want+to+put+pressure+on+manufacturers.+Maybe+in+a+friendly+way%2C+releasing+cool+inspiring+phones+like+the+Nexus+S%2C+etc...+%5B...%5D%0D%0A%0D%0AHe+was+also+asked+about+the+agreement+between+Android+and+manufacturers+regarding+updates+that+was+announced+and+widely+discussed+on+past+Google+I%2FO%2C+but+after+digressing+for+a+while+he+didn%27t+give+any+definite+statement+on+that+matter.%0D%0A%0D%0AThen+he+went+on+to+give+some+advice+on+how+to+make+great+apps%2C+suggesting+we+should+detect+the+available+features+on+each+device+and+act+accordingly%2C+activating+or+deactivating+features+in+our+apps%2C+because+not+being+compatible+with+a+certain+phone+is+being+arrogant%2C+like+saying+to+the+user+that+he+bought+the+wrong+phone.%0D%0A%0D%0AThis+is+something+that+particularly+irks+me%2C+as+sometimes+there%27s+no+written+specification+that+app+developers+can+consult+and+be+confident+will+be+followed+to+the+letter%2C+as+each+phone+diverges+a+lot+on+its+behaviour.+It%27s+impossible+to+know+in+advance+what+will+happen+unless+you+test+it+with+the+real+phone.+Yes%2C+there%27s+the+emulator%2C+and+that+famous+esoteric+compatibility+suite+that+a+phone+must+passed+in+order+to+have+the+Google+apps+%28Market%2C+Gmail...%29+installed%2C+but+that+doesn%27t+guarantee+that+a+real+phone+will+have+a+proper%2C+complete+GL+ES+implementation%2C+for+example.%0D%0A%0D%0ASo+making+that+type+of+statements+did+actually+sound+wildly+arrogant+on+his+side.+And+he+went+on%2C+happily+adding+there+wasn%27t+no+excuse+for+not+creating+all+the+different+versions+of+resources+for+all+the+different+screen+sizes+and+densities.+This+was+followed+by+a+general+moaning+and+mumbling+in+the+public%2C+as+with+each+new+release+of+the+SDK+not+only+are+there+new+features+that+need+to+be+used+if+you+want+a+%22cool+app%22+that+uses+the+latest+stuff+in+new+phones%2C+but+there+are+also+new+resources+to+be+created+and+maintained%2C+thus+increasing+the+complexity+required+to+build+something+%22great%22+for+Android+versions+%26le%3B+X.%0D%0A%0D%0ASomething+else+that+really+worries%2Fannoys+me+is+the+insistence+in+showing+raw+activation+and+installation+numbers+in+every+presentation+they+do.+It+doesn%27t+make+much+sense+on+the+long+term%3A+I+have+probably+activated+four+devices+but+that+doesn%27t+mean+I+use+all+of+them+%28as+I+use+them+for+testing%29%2C+or+that+I+am+four+different+potential+users.+Another+use+case%3A+people+using+carrier-subsidised+phones+change+them+quite+often%2C+but+that+doesn%27t+mean+a+new+user+is+created+from+void+each+time+a+new+phone+is+activated.+It%27s+still+the+same+user+and+he%27s+not+going+to+expand+the+market--it+actually+stays+the+same%2C+as+the+old+phone+will+probably+get+thrown+in+a+drawer.+Same+goes+for+installation+numbers%3A+that+you+install+an+application+doesn%27t+mean+you+actually+use+or+keep+it+on+your+device.+They+could+show+uninstallation+numbers+too%2C+and+the+ratio+between+installs+and+uninstalls+would+be+a+way+better+indicator+%28but+probably+not+as+attractive%29.%0D%0A%0D%0AMoving+on%2C+it+was+lunch+time%2C+which+we+used+to+discuss+the+above+points.+Most+people+dismissed+Bruno%27s+compatibility+strategy+as+it%27s+plain+unrealistic+%28unless+you+have+an+infinite+number+of+testing+resources%2C+or+simply+build+very+basic+and+unexciting+apps%29.+Some+jokes+were+made+about+the+fragmentation+%22feature%22%3A+it%27s+not+a+defective+phone%2C+it%27s+a+feature%21.%0D%0A%0D%0AAfter+lunch+we+got+Paul+Kinlan+again%2C+explaining+several+strategies+for+%22making+a+business+out+of+apps%22.+Again+he+relied+massively+on+AdSense%2C+which+has+proven+to+be+a+very+unreliable+and+arbitrary+source+of+income.+He+also+mentioned+the+Chrome+Webstore%2C+of+course%2C+but+it%27s+not+very+widely+extended+yet.+This+session+wasn%27t+as+enlightening+as+the+HTML+session%2C+as+the+concepts+weren%27t+new+and+...+well%2C+you+can+imagine+the+rest.%0D%0A%0D%0ANext+was+Danny+Hermes+with+an+strange+session+on+the+Shopping+API.+He+sounded+slightly+apologetic+and+felt+like+out+of+place+since+there+wasn%27t+even+a+%22Shopping%22+icon+on+the+banner%2C+whereas+there+were+G%2B%2C+Android+and+Chrome+icons%2C+but+at+least+was+really+enthusiastic+about+his+topic.+I+guess+this+talk+could+be+interesting+for+people+integrating+Google%27s+Product+Search+with+online+shops%2C+but+this+is+not+something+I%27m+currently+interested+at+so+I+didn%27t+pay+much+attention.%0D%0A%0D%0ASam+Dutton%27s+Chrome+Dev+Tools+session+was+way+more+interesting.+It+was+funny+that+we+were+commenting%3A+it+would+be+cool+if+you+could+save+the+changes+you+do+live...+And+then+he+said%3A+here%27s+this+new+feature%3A+now+you+can+save+the+changes+you+made+to+the+document%21.+%0D%0A%0D%0AIt+also+made+me+slightly+envious%3A+the+Chrome+developer+tools+are+an+amazing+platform+for+developing%2C+and+the+Android+toolset+pales+in+comparison.+It%27s+all+%22hacks%22+here+and+there%3A+a+separate+app+for+tracing%2C+another+one+for+viewing+the+layout%2C+an+app+for+debugging...+Seems+like+Google+should+invest+more+in+the+Android+team+%3B-%29%0D%0A%0D%0AIt+was+time+for+%22snacks%22+again.+I+had+a+coffee%2C+thanks+to+the+help+of+%40thespite+which+showed+me+how+to+use+a+Nespresso+machine.+Yes%2C+I+had+never+used+one+before--I%27m+a+slow-food+sort+of+person+and+generally+use+a+french+coffee+maker+instead+%3B-%29%0D%0A%0D%0AAnd+finally+it+was+time+for+more+Ade+Oshineye+talks%2C+this+time+on+the+Google%2B+Hangouts+API%2C+but+for+some+reason+%28saturation%3F%29+my+brain+squarely+refused+to+pay+attention.+I%27m+so+sorry+Ade%21+See%2C+if+the+talks+had+been+recorded+I+might+be+able+to+watch+them+%3B-%29%0D%0A%0D%0AAfter+the+talk+finished%2C+it+was+%22Pitch+your+app%22+time%2C+where+several+attendees+tried+to+convince+us+that+their+app+was+the+best+ever.+The+best+demonstration+got+a+voucher+redeemable+for+a+Nexus+S%2C+since+the+phone+is+not+available+for+sale+yet.+I+was+nicely+surprised+by+the+level+of+English+demonstrated+by+the+guys+pitching+the+app.+They+still+have+a+lot+of+Spanish+accent+but+they+aren%27t+kicking+the+grammar+like+a+punch+bag+every+two+words%2C+and+that%27s+something+you+can%27t+say+about+most+mono-English+speakers%21+So+well+done+on+that+front%21%0D%0A%0D%0ARegarding+the+apps%2C+I+was+a+bit+less+impressed%2C+as+most+of+them+weren%27t+really+surprising%3A+weather+aggregation+services%2C+GPS+tracking%2BMaps%2C+cloud+CMS+integration%2C+a+football+game%2C+a+chess+game%2C+bike+rental+locations+aggregation%2Fvisualisation...+nothing+that+got+me+enthusiastic+about+%3A-P%0D%0A%0D%0AWhat+did+surprise+me+in+fact+was+that+one+of+the+pitchers+connected+his+laptop+to+the+projector+and+I+could+see+how+he+opened+a+terminal+and+wrote+%22pm-suspend%22+prior+to+disconnecting+the+computer+from+the+projector.+Now+that+is+hardcore%21+Who+needs+widgets+to+suspend+the+computer%3F+A+terminal+is+all+you+need%21+%5Co%2F%0D%0A%0D%0ASo+to+sum+up%2C+it+was+quite+an+event-packed+day%2C+quite+professionally+organised.+Thanks+and+well+done%2C+Google%21+It+not+only+provide+me+with+some+new+ideas+and+tricks%2C+but+it+also+got+me+thinking+about+the+true+Google+strategy+on+Android.+Unfortunately+the+post+was+getting+too+long%2C+and+that+discourse+seemed+slightly+out+of+place%2C+so+I+cut+that+part+out+and+will+refine+and+publish+it+in+the+near+future+as+a+separate+post.%0D%0A%0D%0AHere%27s+hoping+there%27ll+be+a+future+DevFest+BCN+2012%21+%3A-%29&amp;amp;tags=android%2Cchrome%2Cgoogle%2Chtml5%2Cjavascript%2Cwebgl%2Cblog" type="text/html" />
	</item>
	</channel>
</rss>

