<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8877325777086061039</id><updated>2014-10-20T23:40:49.934-07:00</updated><category term="javascript"/><category term="canvas"/><category term="games"/><category term="3d"/><category term="elsewhere"/><category term="image"/><category term="pixastic"/><category term="image processing"/><category term="fixes and updates"/><category term="mashup"/><category term="music visualization"/><category term="webgl"/><category term="effects"/><category term="graphics"/><category term="audio"/><category term="binary"/><category term="chess"/><category term="exif"/><category term="math"/><category term="ubiquity"/><category term="ascii art"/><category term="flickr"/><category term="misc"/><category term="nihilogic"/><category term="video"/><category term="youtube"/><category term="appjet"/><category term="book"/><category term="compression"/><category term="digg"/><category term="hosting"/><category term="server-side"/><category term="book review"/><category term="competition"/><category term="css"/><category term="genetic algorithms"/><category term="google"/><category term="html5"/><category term="jquery"/><category term="particles"/><category term="physics"/><category term="wiki"/><title type='text'>Nihilogic</title><subtitle type='html'>Bending and breaking the web. Experiments in the world of JavaScript, HTML5, Canvas, CSS, Ajax, WebGL.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.nihilogic.dk/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://blog.nihilogic.dk/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Jacob Seidelin</name><uri>http://www.blogger.com/profile/04783658679191587047</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_OjchJpvqFiw/SE2FFZozX8I/AAAAAAAAAIc/8ZmxXQ-eJYg/S220/me.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>104</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8877325777086061039.post-6934923433616673918</id><published>2012-02-03T04:00:00.000-08:00</published><updated>2012-02-11T06:42:32.076-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="book"/><category scheme="http://www.blogger.com/atom/ns#" term="competition"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><title type='text'>New round of JS1K: Love</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://js1k.com/2012-love/&quot; imageanchor=&quot;1&quot; style=&quot;clear:left; float:left;margin-right:1em; margin-bottom:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; width=&quot;199&quot; src=&quot;http://1.bp.blogspot.com/-9npccWXw7Sc/TyvL30yQvuI/AAAAAAAAA-U/Lrst1CySstA/s200/js1k-love.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;  There&#39;s a new round of &lt;a href=&quot;http://js1k.com/2012-love/&quot;&gt;JS1K&lt;/a&gt; going on! This time the theme is &quot;Love&quot; and there are some pretty sweet prizes. My publisher has also agreed to sponsor 5 copies of my &lt;a href=&quot;http://www.amazon.com/HTML5-Games-Creating-CSS3-WebGL/dp/1119975085/ref=tmm_pap_title_0?tag=nihilogic0b-20&quot;&gt;HTML5 Games book&lt;/a&gt; for the top five entries. &lt;br/&gt;&lt;br/&gt;I hope I can find some time to work on something for the compo.</content><link rel='replies' type='application/atom+xml' href='http://blog.nihilogic.dk/feeds/6934923433616673918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nihilogic.dk/2012/02/new-round-of-js1k-love.html#comment-form' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/6934923433616673918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/6934923433616673918'/><link rel='alternate' type='text/html' href='http://blog.nihilogic.dk/2012/02/new-round-of-js1k-love.html' title='New round of JS1K: Love'/><author><name>Jacob Seidelin</name><uri>http://www.blogger.com/profile/02550074961492130310</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-9npccWXw7Sc/TyvL30yQvuI/AAAAAAAAA-U/Lrst1CySstA/s72-c/js1k-love.png" height="72" width="72"/><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877325777086061039.post-6565407044720546492</id><published>2011-12-27T14:23:00.000-08:00</published><updated>2012-02-11T06:42:56.174-08:00</updated><title type='text'>Book link correction</title><content type='html'>It appears that the link mentioned in the book is incorrect. I&#39;ve contacted my publisher to get this fixed but until then, you can download the project and sample files at: &lt;a href=&quot;http://wiley.com/go/html5games&quot;&gt;http://wiley.com/go/html5games&lt;/a&gt;. &lt;br/&gt;&lt;br/&gt;If you have bought the book and like it, please consider leaving a (hopefully positive!) review on &lt;a href=&quot;http://www.amazon.com/HTML5-Games-Creating-CSS3-WebGL/dp/1119975085/ref=tmm_pap_title_0?tag=nihilogic0b-20&quot;&gt;Amazon&lt;/a&gt;. Thanks!</content><link rel='replies' type='application/atom+xml' href='http://blog.nihilogic.dk/feeds/6565407044720546492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nihilogic.dk/2011/12/book-link-correction.html#comment-form' title='27 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/6565407044720546492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/6565407044720546492'/><link rel='alternate' type='text/html' href='http://blog.nihilogic.dk/2011/12/book-link-correction.html' title='Book link correction'/><author><name>Jacob Seidelin</name><uri>http://www.blogger.com/profile/02550074961492130310</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>27</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877325777086061039.post-8368270722899934643</id><published>2011-12-21T02:25:00.000-08:00</published><updated>2012-02-27T14:52:29.301-08:00</updated><title type='text'>My HTML5 Games book is now available</title><content type='html'>&lt;img src=&quot;http://3.bp.blogspot.com/-GCTQL7oBI14/ToT4c3ky3rI/AAAAAAAAAc4/GCGJJ1WtQvI/s175/1119975085.jpg&quot; style=&quot;float:left;margin-right:10px;margin-top:5px;&quot;&gt;Just a quick post to say that my book &lt;em&gt;&lt;a href=&quot;http://eu.wiley.com/WileyCDA/WileyTitle/productCd-1119975085,descCd-buy.html&quot;&gt;HTML5 Games: Creating Fun with HTML5, CSS3 and WebGL&lt;/a&gt;&lt;/em&gt; is now available on Amazon.com.&lt;br/&gt;&lt;br/&gt;So far, it&#39;s only in stock on the US site but you can of course still pre-order it through the other Amazons.&lt;br/&gt;&lt;br/&gt;Happy holidays! &lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Amazon links&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://amzn.to/html5games-us&quot;&gt;USA (amazon.com)&lt;/a&gt;&lt;li&gt;&lt;a href=&quot;http://amzn.to/html5games-uk&quot;&gt;UK (amazon.co.uk)&lt;/a&gt;&lt;li&gt;&lt;a href=&quot;http://amzn.to/html5games-de&quot;&gt;Germany (amazon.de)&lt;/a&gt;&lt;li&gt;&lt;a href=&quot;http://amzn.to/html5games-fr&quot;&gt;France (amazon.fr)&lt;/a&gt;&lt;li&gt;&lt;a href=&quot;http://amzn.to/html5games-ca&quot;&gt;Canada (amazon.ca)&lt;/a&gt;&lt;li&gt;&lt;a href=&quot;http://amzn.to/html5games-jp&quot;&gt;Japan (amazon.co.jp)&lt;/a&gt;&lt;/ul&gt;&lt;br/&gt;And if you buy it and like it, please consider leaving a review on Amazon!</content><link rel='replies' type='application/atom+xml' href='http://blog.nihilogic.dk/feeds/8368270722899934643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nihilogic.dk/2011/12/my-book-is-now-available.html#comment-form' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/8368270722899934643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/8368270722899934643'/><link rel='alternate' type='text/html' href='http://blog.nihilogic.dk/2011/12/my-book-is-now-available.html' title='My HTML5 Games book is now available'/><author><name>Jacob Seidelin</name><uri>http://www.blogger.com/profile/02550074961492130310</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-GCTQL7oBI14/ToT4c3ky3rI/AAAAAAAAAc4/GCGJJ1WtQvI/s72-c/1119975085.jpg" height="72" width="72"/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877325777086061039.post-1042526327357853095</id><published>2011-12-17T02:12:00.000-08:00</published><updated>2011-12-17T02:14:10.280-08:00</updated><title type='text'>Stop American Censorship</title><content type='html'>&lt;iframe src=&quot;http://americancensorship.org/callwidget&quot; width=&quot;550&quot; height=&quot;625&quot; border=&quot;0&quot;&gt;&lt;/iframe&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.nihilogic.dk/feeds/1042526327357853095/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nihilogic.dk/2011/12/stop-american-censorship.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/1042526327357853095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/1042526327357853095'/><link rel='alternate' type='text/html' href='http://blog.nihilogic.dk/2011/12/stop-american-censorship.html' title='Stop American Censorship'/><author><name>Jacob Seidelin</name><uri>http://www.blogger.com/profile/02550074961492130310</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877325777086061039.post-1820781728710418985</id><published>2011-09-29T16:43:00.000-07:00</published><updated>2012-02-11T06:37:57.683-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="book"/><category scheme="http://www.blogger.com/atom/ns#" term="games"/><category scheme="http://www.blogger.com/atom/ns#" term="html5"/><title type='text'>My book: HTML5 Games: Creating Fun with HTML5, CSS3 and WebGL</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span class=&quot;post-summary&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-GCTQL7oBI14/ToT4c3ky3rI/AAAAAAAAAc4/GCGJJ1WtQvI/s1600/1119975085.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-top:0.5em; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://3.bp.blogspot.com/-GCTQL7oBI14/ToT4c3ky3rI/AAAAAAAAAc4/GCGJJ1WtQvI/s200/1119975085.jpg&quot; style=&quot;width:120px;&quot;/&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt; I just finished writing a book! How cool is that? &lt;br /&gt;&lt;br /&gt;&lt;b style=&quot;font-size:90%;&quot;&gt;&lt;a href=&quot;http://amzn.to/html5games-us&quot;&gt;HTML5 Games: Creating Fun with HTML5, CSS3 and WebGL&lt;/a&gt;&lt;/b&gt;&lt;br/&gt;&lt;span style=&quot;font-size:80%&quot;&gt;ISBN: 978-1-1199-7508-3&lt;br /&gt;Paperback, ~416 pages&lt;br/&gt;Due out in January 2012 &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;clear: both;&quot;&gt;&lt;/div&gt;&lt;span class=&quot;full-article&quot;&gt;  Writing a book is crazy. Like eating strawberries while stabbing yourself in the leg. Painful yet delicious. I have massive respect for people who can just put words on paper like it was nothing. &lt;br /&gt;&lt;br /&gt; This has easily been one of the most difficult tasks I&#39;ve put myself in front of, which I suppose is why I haven&#39;t been doing much around here lately. That should hopefully change now that I get some free time again.   Anyway, for the past 6 months or so, I&#39;ve been working on my first book, titled &lt;a href=&quot;http://amzn.to/html5games-us&quot;&gt;&lt;em&gt;HTML5 Games - Creating Fun with HTML5, CSS3 and WebGL&lt;/em&gt;&lt;/a&gt;. It&#39;s all about HTML5 and related technologies and how they can be utilized in the context of game development on the Web and on mobile devices. It&#39;s not out yet but it should be in a few months (edit: it is now out!). Amazon links further down.  &lt;br /&gt;&lt;br /&gt;Here&#39;s a short blurp about it, made by Wiley (my publisher): &lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;Discover new opportunities for building 2D and 3D games with HTML5&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The newest iteration of HTML, HTML5 can be used with JavaScript, CSS3, and WebGL to create beautiful, unique, engaging games that can be played on the web or mobile devices like the iPad or Android phones. Gone are the days where games were only possible with plugin technologies such as Flash and this cutting-edge book shows you how to utilize the latest open web technologies to create a game from scratch using Canvas, HTML5 Audio, WebGL, and WebSockets. You&#39;ll discover how to build a framework on which you will create your HTML5 game. Then each successive chapter covers a new aspect of the game, including user input, sound, multiplayer functionality, 2D and 3D graphics, and more. &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Aims directly at a new way to develop games for the web through the use of HTML5     &lt;/li&gt;&lt;li&gt;Demonstrates how to make iOS and Android web apps     &lt;/li&gt;&lt;li&gt;Explains how to capture player input; create 3D graphics; and incorporate textures, lighting, and sound     &lt;/li&gt;&lt;li&gt;Guides you through the process of creating a game from scratch using Canvas, HTML5 Audio, WebGL, and WebSockets     &lt;/li&gt;&lt;li&gt;By the end of this invaluable book, you will have created a fully functional game that can be played in any compatible browser or on any mobile device that supports HTML5&amp;gt; &lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;If you&#39;d like to buy it, consider using the Amazon affiliate links below, so I can earn a few extra coins. &lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://amzn.to/html5games-us&quot; title=&quot;Buy my HTML5 Games book on Amazon.com&quot;&gt;US (amazon.com)&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://amzn.to/html5games-uk&quot; title=&quot;Buy my HTML5 Games book on Amazon.co.uk&quot;&gt;UK (amazon.co.uk)&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://amzn.to/html5games-de&quot; title=&quot;Buy my HTML5 Games book on Amazon.de&quot;&gt;Germany (amazon.de)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://amzn.to/html5games-fr&quot; title=&quot;Buy my HTML5 Games book on Amazon.fr&quot;&gt;France (amazon.fr)&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://amzn.to/html5games-jp&quot; title=&quot;Buy my HTML5 Games book on Amazon.co.jp&quot;&gt;Japan (amazon.co.jp)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.nihilogic.dk/feeds/1820781728710418985/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nihilogic.dk/2011/09/i-wrote-book-re-html5-games.html#comment-form' title='22 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/1820781728710418985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/1820781728710418985'/><link rel='alternate' type='text/html' href='http://blog.nihilogic.dk/2011/09/i-wrote-book-re-html5-games.html' title='My book: HTML5 Games: Creating Fun with HTML5, CSS3 and WebGL'/><author><name>Jacob Seidelin</name><uri>http://www.blogger.com/profile/02550074961492130310</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-GCTQL7oBI14/ToT4c3ky3rI/AAAAAAAAAc4/GCGJJ1WtQvI/s72-c/1119975085.jpg" height="72" width="72"/><thr:total>22</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877325777086061039.post-3129709535285354695</id><published>2011-03-24T04:33:00.000-07:00</published><updated>2011-07-13T14:29:35.126-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="google"/><category scheme="http://www.blogger.com/atom/ns#" term="music visualization"/><category scheme="http://www.blogger.com/atom/ns#" term="webgl"/><title type='text'>WebGL Music Visualizer</title><content type='html'>&lt;span class=&quot;post-summary&quot;&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; float: left; margin-right: 10px; text-align: center;&quot;&gt;&lt;span class=&quot;post-summary&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-55o0mhJGrI4/TYso-BXRleI/AAAAAAAAAB0/th__0cJTWFU/s1600/webgl-music-visualizer.png&quot; imageanchor=&quot;1&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;125&quot; src=&quot;http://3.bp.blogspot.com/-55o0mhJGrI4/TYso-BXRleI/AAAAAAAAAB0/th__0cJTWFU/s200/webgl-music-visualizer.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class=&quot;post-summary&quot;&gt;  I&#39;m not going to comment on the number of months since my last post here. I know I&#39;m a slacker. &lt;br /&gt;&lt;br /&gt;For most of December and some of January, I was travelling in East Africa. It&#39;s been about 5 years since I last visited there and it was fantastic to be back. Yay for sunburns and lions. Anyway, just before I left, I finished a neat little WebGL project that I never got around to posting here. &lt;br /&gt;&lt;br /&gt;&lt;/span&gt; &lt;span class=&quot;full-article&quot;&gt; Google asked me to do a demo for when WebGL moved from Chrome dev channel to beta. The project I did was a music visualizer - yes, I&#39;m that predictable.  It&#39;s more like a visualizer building tool, actually, with a few pre-made visualizers. Well, WebGL landed in the beta channel on &lt;a href=&quot;http://blog.chromium.org/2010/12/webgl-now-in-beta-here-comes-3d-web.html&quot;&gt;December 16th&lt;/a&gt;, the day after I left. Fortunately, I didn&#39;t have to do any remote debugging.  &lt;br /&gt;&lt;br /&gt;Have a look-see:  &lt;a href=&quot;http://www.chromeexperiments.com/detail/webgl-music-visualizer/?f=webgl&quot;&gt;WebGL Music Visualizer&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;To get started, click &quot;Load preset&quot;, pick a visualizer and start the music. Elements in the scene can be modified by double clicking in the object list. Most parameters can take both constant values and expressions using math functions and/or pre-defined variables (time, beat, bass, mid, etc..). &lt;br /&gt;&lt;br /&gt;What&#39;s also cool is that the visualizer was used at a Google-hosted party at the Game Developers Conference. I just had to modify it a bit to allow music input from the DJ&#39;s setup.  Sadly, I wasn&#39;t there myself but I believe everything worked out great. I like to close my eyes and imagine that the Android was my representative there, so I was almost (almost!) at GDC.  &lt;br /&gt;&lt;br /&gt;Here are a few pics from the event:  &lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-8p6z9rfYWho/TYsqcz8yGlI/AAAAAAAAACE/rj5ch0LuxoM/s1600/p861689223-4.jpg&quot; imageanchor=&quot;1&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;133&quot; src=&quot;http://3.bp.blogspot.com/-8p6z9rfYWho/TYsqcz8yGlI/AAAAAAAAACE/rj5ch0LuxoM/s200/p861689223-4.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;  &lt;a href=&quot;http://1.bp.blogspot.com/-dJ2klrP5Bcc/TYsqVyyAjmI/AAAAAAAAAB8/iGqG4SV9ZrY/s1600/p112211220-4.jpg&quot; imageanchor=&quot;1&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;133&quot; src=&quot;http://1.bp.blogspot.com/-dJ2klrP5Bcc/TYsqVyyAjmI/AAAAAAAAAB8/iGqG4SV9ZrY/s200/p112211220-4.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;  &lt;/div&gt;&lt;br /&gt;Sweet! &lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.nihilogic.dk/feeds/3129709535285354695/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nihilogic.dk/2011/03/webgl-music-visualizer.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/3129709535285354695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/3129709535285354695'/><link rel='alternate' type='text/html' href='http://blog.nihilogic.dk/2011/03/webgl-music-visualizer.html' title='WebGL Music Visualizer'/><author><name>Jacob Seidelin</name><uri>http://www.blogger.com/profile/02550074961492130310</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-55o0mhJGrI4/TYso-BXRleI/AAAAAAAAAB0/th__0cJTWFU/s72-c/webgl-music-visualizer.png" height="72" width="72"/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877325777086061039.post-3962072582579541781</id><published>2010-09-23T01:09:00.000-07:00</published><updated>2010-09-23T01:42:01.801-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="fixes and updates"/><category scheme="http://www.blogger.com/atom/ns#" term="music visualization"/><category scheme="http://www.blogger.com/atom/ns#" term="webgl"/><title type='text'>WebGL and HTML5 audio fixes</title><content type='html'>&lt;span class=&quot;post-summary&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/_OjchJpvqFiw/TJsGAFY22fI/AAAAAAAAArw/ZzTunaU-b7A/s200/musical_solar_system.png&quot; width=&quot;150&quot; height=&quot;150&quot; style=&quot;float:left; margin-right: 1em;&quot;/&gt; A couple of updates and fixes to some of my earlier WebGL and HTML5 audio experiments which have stopped working since I first put them online.&lt;br/&gt;&lt;/span&gt;&lt;span class=&quot;full-article&quot;&gt;&lt;br/&gt;  First up is the &lt;a href=&quot;http://www.nihilogic.dk/labs/webgl_musical_solar_system/&quot;&gt;musical solar system&lt;/a&gt; which went and got horribly broken due to changes in the WebGL spec. I published it when the WebGL implementations were still very much evolving and changes were happening almost faster than you adapt to them.Now with the spec having reached a more mature level, things have slowed down and the implementations are almost in agreement so browser-specific workarounds aren&#39;t so necessary. So anyway, after a few tweaks here and there, the planets should once again be dancing. &lt;a href=&quot;http://www.nihilogic.dk/labs/webgl_musical_solar_system/&quot;&gt;Check it out&lt;/a&gt;. &lt;br/&gt;&lt;br/&gt; &lt;img border=&quot;0&quot; src=&quot;http://4.bp.blogspot.com/_OjchJpvqFiw/TJsHZkqn-WI/AAAAAAAAAr0/CDbsnK57Uko/s200/worlds_of_webgl.png&quot; width=&quot;150&quot; height=&quot;150&quot; style=&quot;float:right;margin-left: 1em;&quot;/&gt; Next up, &lt;a href=&quot;http://www.nihilogic.dk/labs/worlds_of_webgl/&quot;&gt;Worlds of WebGL&lt;/a&gt; which had suffered pretty much the same fate. I&#39;d already updated it once to accommodate some of the spec changes and now it should be fully working again. &lt;br/&gt;&lt;br/&gt;However... In both WebGL projects, I had to reintroduce some code I had previously taken out because it was causing problems for some Mac users (iirc). So if you experience any problems with either experiment, please let me know. In particular, the affected parts would be the sun in the solar system and all the particles/planets in Worlds of WebGL. &lt;br/&gt;&lt;br/&gt; &lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/_OjchJpvqFiw/S8dlNr4x3HI/AAAAAAAAAq0/MKlXJrJXrSA/s200/points.png&quot; width=&quot;150&quot; height=&quot;150&quot; style=&quot;float:left; margin-right: 1em;&quot;/&gt; Finally, my HTML5 audio project &lt;a href=&quot;http://www.nihilogic.dk/labs/pocket_full_of_html5/&quot;&gt;Pocket Full of HTML5&lt;/a&gt; had lost its support of the new &lt;a href=&quot;https://wiki.mozilla.org/Audio_Data_API&quot;&gt;HTML5 audio data api&lt;/a&gt;, so it used the SoundManager2 fallback even when using a &lt;a href=&quot;http://www.mozilla.com/firefox/all-beta.html&quot;&gt;audio-data-enabled Firefox build&lt;/a&gt;. Again, the problem was due to changes in the API, which is still very early in its development, but fortunately the necessary changes were few and simple and Yury Delendik even provided me with a patch (thanks Yuri!). So check that out too. &lt;br/&gt;&lt;br/&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.nihilogic.dk/feeds/3962072582579541781/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nihilogic.dk/2010/09/webgl-and-html5-audio-fixes.html#comment-form' title='18 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/3962072582579541781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/3962072582579541781'/><link rel='alternate' type='text/html' href='http://blog.nihilogic.dk/2010/09/webgl-and-html5-audio-fixes.html' title='WebGL and HTML5 audio fixes'/><author><name>Jacob Seidelin</name><uri>http://www.blogger.com/profile/04783658679191587047</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_OjchJpvqFiw/SE2FFZozX8I/AAAAAAAAAIc/8ZmxXQ-eJYg/S220/me.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_OjchJpvqFiw/TJsGAFY22fI/AAAAAAAAArw/ZzTunaU-b7A/s72-c/musical_solar_system.png" height="72" width="72"/><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877325777086061039.post-468437525521459691</id><published>2010-09-11T02:10:00.000-07:00</published><updated>2010-09-11T02:10:29.988-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="canvas"/><category scheme="http://www.blogger.com/atom/ns#" term="graphics"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><title type='text'>Planet #1024 - my JS1K entry</title><content type='html'>&lt;span class=&quot;post-summary&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/_OjchJpvqFiw/TItCcw2PHXI/AAAAAAAAArs/xkLB9gyM9WE/s1600/planet1024.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;http://1.bp.blogspot.com/_OjchJpvqFiw/TItCcw2PHXI/AAAAAAAAArs/xkLB9gyM9WE/s200/planet1024.jpg&quot; width=&quot;200&quot; style=&quot;float:left;margin-right:10px;&quot;/&gt;&lt;/a&gt; So, the &lt;a href=&quot;http://js1k.com/&quot;&gt;JS1K contest&lt;/a&gt; is closed for submissions. The goal was to create something cool in just 1024 bytes (or less) and there have been lots and lots of entries, some of them pretty damn cool. I just had time to submit something before the deadline - a planet generator featuring random zooming, rotating planets, complete with cloud system, shading, atmospheric glow and a star filled background. &lt;a href=&quot;http://js1k.com/demo/797&quot;&gt;Check it out here&lt;/a&gt;. &lt;br/&gt;&lt;br/&gt;Should work in current versions of Firefox, Opera, Chrome and Safari. &lt;br/&gt;&lt;br/&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.nihilogic.dk/feeds/468437525521459691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nihilogic.dk/2010/09/planet-1024-my-js1k-entry.html#comment-form' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/468437525521459691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/468437525521459691'/><link rel='alternate' type='text/html' href='http://blog.nihilogic.dk/2010/09/planet-1024-my-js1k-entry.html' title='Planet #1024 - my JS1K entry'/><author><name>Jacob Seidelin</name><uri>http://www.blogger.com/profile/04783658679191587047</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_OjchJpvqFiw/SE2FFZozX8I/AAAAAAAAAIc/8ZmxXQ-eJYg/S220/me.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_OjchJpvqFiw/TItCcw2PHXI/AAAAAAAAArs/xkLB9gyM9WE/s72-c/planet1024.jpg" height="72" width="72"/><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877325777086061039.post-5288916160116605650</id><published>2010-08-21T23:57:00.000-07:00</published><updated>2010-08-21T23:57:50.461-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="elsewhere"/><category scheme="http://www.blogger.com/atom/ns#" term="image processing"/><title type='text'>My 10K Apart entry: Filterrific</title><content type='html'>&lt;span class=&quot;post-summary&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;133&quot; src=&quot;http://10k.aneventapart.com/Uploads/219/Thumbnail.png&quot; width=&quot;200&quot; style=&quot;float:left;margin-right:10px;&quot; /&gt;My entry for the 10K Apart contest is now up. It&#39;s a small image manipulation app showing some of the same functionality available in my &lt;a href=&quot;http://www.pixastic.com/lib/&quot;&gt;Pixastic&lt;/a&gt; library, but this time squeezed into a 10K web app. &lt;a href=&quot;http://10k.aneventapart.com/Entry/219&quot;&gt;Check it out&lt;/a&gt; and be sure to vote! Cheers. &lt;br/&gt;&lt;br/&gt;&lt;br/&gt; &lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.nihilogic.dk/feeds/5288916160116605650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nihilogic.dk/2010/08/my-10k-apart-entry-filterrific.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/5288916160116605650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/5288916160116605650'/><link rel='alternate' type='text/html' href='http://blog.nihilogic.dk/2010/08/my-10k-apart-entry-filterrific.html' title='My 10K Apart entry: Filterrific'/><author><name>Jacob Seidelin</name><uri>http://www.blogger.com/profile/04783658679191587047</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_OjchJpvqFiw/SE2FFZozX8I/AAAAAAAAAIc/8ZmxXQ-eJYg/S220/me.png'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877325777086061039.post-5533951122406706769</id><published>2010-07-26T23:35:00.000-07:00</published><updated>2010-07-26T23:36:00.162-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="3d"/><category scheme="http://www.blogger.com/atom/ns#" term="canvas"/><category scheme="http://www.blogger.com/atom/ns#" term="chess"/><category scheme="http://www.blogger.com/atom/ns#" term="elsewhere"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><title type='text'>3D chess developments</title><content type='html'>&lt;span class=&quot;post-summary&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;166&quot; src=&quot;http://2.bp.blogspot.com/_OjchJpvqFiw/SAt3d46cFGI/AAAAAAAAADw/gJVmHCQ0L7E/s320/chess.jpg&quot; width=&quot;320&quot; style=&quot;float:left;margin-right:10px&quot;/&gt; A long time ago I started working on a 3D chess game using canvas but never got around to finishing it. Well, Stefano Gioffré took it upon himself to add some very cool features and not least, integrate a chess engine allowing you to play against the computer. Awesome work, Stefano. &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Check it out here: &lt;a href=&quot;http://htmlchess.sourceforge.net/demo/example.html&quot;&gt;http://htmlchess.sourceforge.net/demo/example.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.nihilogic.dk/feeds/5533951122406706769/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nihilogic.dk/2010/07/long-time-ago-i-started-working-on-3d.html#comment-form' title='34 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/5533951122406706769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/5533951122406706769'/><link rel='alternate' type='text/html' href='http://blog.nihilogic.dk/2010/07/long-time-ago-i-started-working-on-3d.html' title='3D chess developments'/><author><name>Jacob Seidelin</name><uri>http://www.blogger.com/profile/04783658679191587047</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_OjchJpvqFiw/SE2FFZozX8I/AAAAAAAAAIc/8ZmxXQ-eJYg/S220/me.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_OjchJpvqFiw/SAt3d46cFGI/AAAAAAAAADw/gJVmHCQ0L7E/s72-c/chess.jpg" height="72" width="72"/><thr:total>34</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877325777086061039.post-247793186105830350</id><published>2010-04-15T13:24:00.000-07:00</published><updated>2010-07-28T10:16:14.821-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="canvas"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="music visualization"/><title type='text'>HTML5 audio visualizations</title><content type='html'>&lt;span class=&quot;post-summary&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;http://4.bp.blogspot.com/_OjchJpvqFiw/S8dlOyIgXkI/AAAAAAAAAq8/BCNARvFketQ/s200/void.png&quot; width=&quot;200&quot; style=&quot;float:left;margin-right:10px&quot;/&gt; For a while now I&#39;ve been playing around with music visualization, you can see some of my previous endeavours &lt;a href=&quot;http://blog.nihilogic.dk/search/label/music%20visualization?max-results=5&quot;&gt;here&lt;/a&gt;. The canvas element gives us everything we need to draw all sorts of cool stuff in the browser but the audio part still needs Flash to be any fun. While the new HTML5 audio element does allow for audio playback, it doesn&#39;t give us much in terms of audio data information - which is crucial if the visualizations are to react to the music. In &lt;a href=&quot;http://blog.nihilogic.dk/2009/11/webgl-musical-solar-system.html&quot;&gt;another experiment&lt;/a&gt; of mine I tried to solve it by doing a pre-analysis of the MP3 file and saving the data as JavaScript. The result was decent, I think, but having to pre-bake the data is a pretty severe limitation. &lt;/span&gt;&lt;span class=&quot;full-article&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;http://1.bp.blogspot.com/_OjchJpvqFiw/S8dlPl3ORtI/AAAAAAAAArA/LnCi6Ue6TQU/s200/xorflower.png&quot; width=&quot;200&quot; style=&quot;float:right;margin-left:10px;&quot;/&gt; However, a few people have been hacking away at Firefox, attempting to provide just that functionality for the audio element. Some documentation of the new API is available &lt;a href=&quot;https://wiki.mozilla.org/Audio_Data_API&quot;&gt;here&lt;/a&gt; and if you&#39;re interested, you can follow the development &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=490705&quot;&gt;in this bugzilla thread&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Anyway, I&#39;ve been wanting to mess around with this and I figured that retro-fitting my &quot;Pocket Full of Canvas&quot; experiment to use HTML5 audio would be a fairly easy task. You can &lt;a href=&quot;http://www.nihilogic.dk/labs/pocket_full_of_html5/&quot;&gt;check out the result here&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;http://2.bp.blogspot.com/_OjchJpvqFiw/S8dlOacmncI/AAAAAAAAAq4/YPCaMI96xo0/s200/star.png&quot; width=&quot;200&quot; style=&quot;float:left;margin-right:10px;&quot;/&gt; At the moment you&#39;ll need a patched version of Firefox to get access to these extras but if you&#39;re not comfortable with building your own version, there are &lt;a href=&quot;https://wiki.mozilla.org/Audio_Data_API#Additional_Resources&quot;&gt;builds available here&lt;/a&gt;. It will still run in other (canvas-enabled) browsers but it will fall back to using SoundManager2 for the audio. While Flash audio is not that exciting anymore, it lets it run in eg. Chromium and Opera - and man, that&#39;s something else. Even if Firefox/Minefield has the upper hand with the audio stuff, it is feeling reaaally sluggish compared to those two (and you should definitely be using a nightly Minefield build). Chromium has always been speedy and Opera has gotten really crazy fast as well, running the visualizations in full-screen is just great (click the viz area to toggle). &lt;br /&gt;&lt;br /&gt; And if you feel like playing around with the demos yourself, just click the &quot;Show code&quot; button and start hacking. I made a quick write-up of the very simple API &lt;a href=&quot;http://www.nihilogic.dk/labs/pocket_full_of_html5/api.htm&quot;&gt;here&lt;/a&gt;. The emphasis has been on making it easy to get from zero to something and not so much on making a lot of fancy functionality, so it is not very advanced.  &lt;br /&gt;&lt;br /&gt; Try it out: &lt;a href=&quot;http://www.nihilogic.dk/labs/pocket_full_of_html5/&quot;&gt;http://www.nihilogic.dk/labs/pocket_full_of_html5/&lt;/a&gt; &lt;br/&gt;&lt;br/&gt; More examples: &lt;br/&gt;&lt;div style=&quot;height:220px;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;http://2.bp.blogspot.com/_OjchJpvqFiw/S8dlNr4x3HI/AAAAAAAAAq0/MKlXJrJXrSA/s200/points.png&quot; width=&quot;180&quot; style=&quot;float:left;margin-right:5px;&quot;/&gt; &lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;http://3.bp.blogspot.com/_OjchJpvqFiw/S8dlMyjqvoI/AAAAAAAAAqw/ZEpyH4Ikv5I/s200/fft.png&quot; width=&quot;180&quot; style=&quot;float:left;margin-right:5px;&quot;/&gt; &lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;http://1.bp.blogspot.com/_OjchJpvqFiw/S8dlMNFtyMI/AAAAAAAAAqs/f_QZ8p4oIfY/s200/collider.png&quot; width=&quot;180&quot; style=&quot;float:left;margin-right:0px;&quot; /&gt;&lt;/div&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.nihilogic.dk/feeds/247793186105830350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nihilogic.dk/2010/04/html5-audio-visualizations.html#comment-form' title='28 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/247793186105830350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/247793186105830350'/><link rel='alternate' type='text/html' href='http://blog.nihilogic.dk/2010/04/html5-audio-visualizations.html' title='HTML5 audio visualizations'/><author><name>Jacob Seidelin</name><uri>http://www.blogger.com/profile/04783658679191587047</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_OjchJpvqFiw/SE2FFZozX8I/AAAAAAAAAIc/8ZmxXQ-eJYg/S220/me.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_OjchJpvqFiw/S8dlOyIgXkI/AAAAAAAAAq8/BCNARvFketQ/s72-c/void.png" height="72" width="72"/><thr:total>28</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877325777086061039.post-3682139467486925033</id><published>2010-04-10T05:07:00.000-07:00</published><updated>2010-06-14T00:02:36.043-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="elsewhere"/><category scheme="http://www.blogger.com/atom/ns#" term="webgl"/><title type='text'>Worlds of WebGL video</title><content type='html'>&lt;img border=&quot;0&quot; height=&quot;111&quot; src=&quot;http://4.bp.blogspot.com/_OjchJpvqFiw/S6KYCJ6Vy5I/AAAAAAAAAqM/JJ3zO2xtkDo/s320/worldsofwebgl.png&quot; width=&quot;320&quot; style=&quot;float:left;margin-right:10px;&quot;/&gt; In case anyone has trouble watching the &lt;a href=&quot;http://blog.nihilogic.dk/2010/03/worlds-of-webgl.html&quot;&gt;Worlds of WebGL&lt;/a&gt; demo I posted recently, I just saw that &lt;a href=&quot;http://azabani.com/pages/worlds-of-webgl-video&quot;&gt;Delan Azabani&lt;/a&gt; made a video of it and put it up on his site. I know the demo is currently broken in at least Chromium, due to recent changes there. I&#39;ll get that fixed as soon as possible. Check out &lt;a href=&quot;http://azabani.com/pages/worlds-of-webgl-video&quot;&gt;the video here&lt;/a&gt; until then. &lt;br/&gt;&lt;br/&gt;&lt;i&gt;Edit: Ok, the demo should work again in both Minefield and the latest Chromium build.&lt;/i&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.nihilogic.dk/feeds/3682139467486925033/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nihilogic.dk/2010/04/worlds-of-webgl-video.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/3682139467486925033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/3682139467486925033'/><link rel='alternate' type='text/html' href='http://blog.nihilogic.dk/2010/04/worlds-of-webgl-video.html' title='Worlds of WebGL video'/><author><name>Jacob Seidelin</name><uri>http://www.blogger.com/profile/04783658679191587047</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_OjchJpvqFiw/SE2FFZozX8I/AAAAAAAAAIc/8ZmxXQ-eJYg/S220/me.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_OjchJpvqFiw/S6KYCJ6Vy5I/AAAAAAAAAqM/JJ3zO2xtkDo/s72-c/worldsofwebgl.png" height="72" width="72"/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877325777086061039.post-1158749424256770741</id><published>2010-03-18T14:19:00.000-07:00</published><updated>2010-03-18T23:39:06.290-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="3d"/><category scheme="http://www.blogger.com/atom/ns#" term="canvas"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="webgl"/><title type='text'>Worlds of WebGL</title><content type='html'>&lt;span class=&#39;post-summary&#39;&gt;&lt;img border=&quot;0&quot; height=&quot;110&quot; src=&quot;http://4.bp.blogspot.com/_OjchJpvqFiw/S6KYCJ6Vy5I/AAAAAAAAAqM/JJ3zO2xtkDo/s320/worldsofwebgl.png&quot; width=&quot;320&quot; style=&quot;float:left;margin-right:10px;&quot;/&gt;Here&#39;s another thing I did while I was first playing around with WebGL, working on the &lt;a href=&quot;http://blog.nihilogic.dk/2009/11/webgl-musical-solar-system.html&quot;&gt;musical solar system&lt;/a&gt; thing. Due to changes in the WebGL spec and the various implementations it got broken before I had a chance to put it online and it&#39;s just been sitting collecting dust ever since. I just tried fixing some of the issues and it seems to run ok now (let me know if it doesn&#39;t). It&#39;s a small experiment with a whole bunch of particles/planets forming larger shapes. Enjoy!&lt;br/&gt;&lt;br/&gt;Link: &lt;a href=&quot;http://www.nihilogic.dk/labs/worlds_of_webgl/&quot;&gt;Worlds of WebGL&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span class=&quot;full-article&quot;&gt;Make sure you have a WebGL capable browser. Check out &lt;a href=&quot;http://learningwebgl.com/blog/?p=11&quot;&gt;this page&lt;/a&gt; over at Learning WebGL if you need help getting one. &lt;br/&gt;&lt;br/&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.nihilogic.dk/feeds/1158749424256770741/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nihilogic.dk/2010/03/worlds-of-webgl.html#comment-form' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/1158749424256770741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/1158749424256770741'/><link rel='alternate' type='text/html' href='http://blog.nihilogic.dk/2010/03/worlds-of-webgl.html' title='Worlds of WebGL'/><author><name>Jacob Seidelin</name><uri>http://www.blogger.com/profile/04783658679191587047</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_OjchJpvqFiw/SE2FFZozX8I/AAAAAAAAAIc/8ZmxXQ-eJYg/S220/me.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_OjchJpvqFiw/S6KYCJ6Vy5I/AAAAAAAAAqM/JJ3zO2xtkDo/s72-c/worldsofwebgl.png" height="72" width="72"/><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877325777086061039.post-8712259139931434168</id><published>2010-02-16T06:33:00.000-08:00</published><updated>2010-02-16T06:35:46.759-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="fixes and updates"/><category scheme="http://www.blogger.com/atom/ns#" term="webgl"/><title type='text'>WebGL Cheat Sheet update</title><content type='html'>&lt;img border=&quot;0&quot; height=&quot;123&quot; src=&quot;http://3.bp.blogspot.com/_OjchJpvqFiw/S3qsd8hO6_I/AAAAAAAAApo/sILZTa6HFU0/s200/webgl_cheat_sheet.png&quot; width=&quot;200&quot; style=&quot;float:left;margin-right:10px;&quot; /&gt; &lt;span class=&#39;post-summary&#39;&gt;Long overdue, here&#39;s an updated version of the WebGL Cheat Sheet with a few adjustments. Since the &lt;a href=&quot;http://blog.nihilogic.dk/2009/10/webgl-cheat-sheet.html&quot;&gt;original post&lt;/a&gt;, the official &lt;a href=&quot;https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/doc/spec/WebGL-spec.html&quot;&gt;WebGL specs&lt;/a&gt; have been made public and there have been some changes to the API (see &lt;a href=&quot;http://learningwebgl.com/blog/?p=1082&quot;&gt;this article&lt;/a&gt; for a list) that I haven&#39;t incorporated into these docs until now. Thanks to Gonzalo for &lt;a href=&quot;http://blog.nihilogic.dk/2009/10/webgl-cheat-sheet.html?showComment=1266116148768#c8197924404157964009&quot;&gt;poking me&lt;/a&gt; a few days so I could get this done. Additional corrections are of course still more than welcome. &lt;br/&gt;&lt;/span&gt;&lt;span class=&quot;full-article&quot;&gt; &lt;h4&gt;Links&lt;/h4&gt; &lt;a href=&quot;http://www.nihilogic.dk/labs/webgl_cheat_sheet/WebGL_Cheat_Sheet.pdf&quot;&gt;WebGL Cheat Sheet (PDF)&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href=&quot;http://www.nihilogic.dk/labs/webgl_cheat_sheet/WebGL_Cheat_Sheet.htm&quot;&gt;WebGL Cheat Sheet (HTML)&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.nihilogic.dk/feeds/8712259139931434168/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nihilogic.dk/2010/02/webgl-cheat-sheet-update.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/8712259139931434168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/8712259139931434168'/><link rel='alternate' type='text/html' href='http://blog.nihilogic.dk/2010/02/webgl-cheat-sheet-update.html' title='WebGL Cheat Sheet update'/><author><name>Jacob Seidelin</name><uri>http://www.blogger.com/profile/04783658679191587047</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_OjchJpvqFiw/SE2FFZozX8I/AAAAAAAAAIc/8ZmxXQ-eJYg/S220/me.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_OjchJpvqFiw/S3qsd8hO6_I/AAAAAAAAApo/sILZTa6HFU0/s72-c/webgl_cheat_sheet.png" height="72" width="72"/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877325777086061039.post-3520128382575389872</id><published>2009-11-10T09:36:00.000-08:00</published><updated>2009-11-11T14:39:08.971-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="3d"/><category scheme="http://www.blogger.com/atom/ns#" term="audio"/><category scheme="http://www.blogger.com/atom/ns#" term="webgl"/><title type='text'>WebGL Musical Solar System</title><content type='html'>&lt;div style=&quot;clear:both;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://4.bp.blogspot.com/_OjchJpvqFiw/Svmg7H7ARGI/AAAAAAAAApE/saVz-DJ4Hjs/s640/webgl_solar_system_grab.jpg&quot; /&gt;&lt;/div&gt;&lt;em&gt;A solar system of dancing planets, made with JavaScript, WebGL and HTML5 audio.&lt;/em&gt;&lt;br/&gt;&lt;br/&gt; In my quest to get to know WebGL better, I&#39;ve gradually been building my way up from the standard &quot;paint one triangle&quot; tests to more and more advanced things. Never having touched OpenGL before, this is all a nice learning experience for me and I can now render not only one but two triangles at once as well as cubes, spheres and what have you. There&#39;s been some nice progress around the web as well, most recently with Yohei Shimomae&#39;s &lt;a href=&quot;http://blogs.nitobi.com/yohei/?p=62&quot;&gt;Cube Defense&lt;/a&gt;, a tower defense like game built with JavaScript and WebGL - probably the first WebGL game ever but hopefully many will follow!  &lt;span class=&quot;full-article&quot;&gt;&lt;br/&gt;&lt;br/&gt; Without further ado, here&#39;s my own first, small pet project: &lt;a href=&quot;http://www.nihilogic.dk/labs/webgl_musical_solar_system/&quot;&gt;A solar system of dancing planets&lt;/a&gt;.   &lt;br/&gt;&lt;br/&gt; You will need either a &lt;a href=&quot;http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/&quot;&gt;Firefox nightly build&lt;/a&gt; or a &lt;a href=&quot;http://build.chromium.org/buildbot/continuous/LATEST/&quot;&gt;Chromium continuous build&lt;/a&gt; to run this (in my experience, it runs best in Chrome). I don&#39;t know if WebKit on Mac will work and I&#39;ve only tested FF and Chrome on Windows. If you have any success running it on Mac, please leave a comment saying so. So far it doesn&#39;t look good, though.  &lt;br/&gt;&lt;br/&gt; In Firefox you need to enable WebGL by going to &quot;about:config&quot;, searching for &quot;webgl&quot; and enabling it &quot;for all sites&quot;. &lt;br/&gt;&lt;br/&gt; Chrome needs to be launched with the command line arguments &quot;--enable-webgl --no-sandbox&quot;, so make a shortcut to chrome.exe and add those arguments. &lt;br/&gt;&lt;br/&gt; If for some reason you&#39;re unable to do that or you&#39;re just lazy, there&#39;s also a &lt;a href=&quot;http://www.youtube.com/watch?v=XsZM7ghFbqM&quot;&gt;YouTube video&lt;/a&gt;. The real thing looks better, though. &lt;br/&gt;&lt;br/&gt; For those interested, this time the audio comes from an HTML5 &amp;lt;audio&amp;gt; element and not from SoundManager2 (which is great but also Flash). However, HTML5 doesn&#39;t give you the same detailed audio data (FFT and such) that Flash does, so I&#39;m actually reading the data from a separate text file. I would of course rather have had actual access to the data, but this will do - and it keeps it totally Flash-less.  &lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.nihilogic.dk/feeds/3520128382575389872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nihilogic.dk/2009/11/webgl-musical-solar-system.html#comment-form' title='35 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/3520128382575389872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/3520128382575389872'/><link rel='alternate' type='text/html' href='http://blog.nihilogic.dk/2009/11/webgl-musical-solar-system.html' title='WebGL Musical Solar System'/><author><name>Jacob Seidelin</name><uri>http://www.blogger.com/profile/04783658679191587047</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_OjchJpvqFiw/SE2FFZozX8I/AAAAAAAAAIc/8ZmxXQ-eJYg/S220/me.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_OjchJpvqFiw/Svmg7H7ARGI/AAAAAAAAApE/saVz-DJ4Hjs/s72-c/webgl_solar_system_grab.jpg" height="72" width="72"/><thr:total>35</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877325777086061039.post-7165823103896733316</id><published>2009-10-30T02:51:00.000-07:00</published><updated>2010-01-29T03:25:52.713-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="3d"/><category scheme="http://www.blogger.com/atom/ns#" term="canvas"/><category scheme="http://www.blogger.com/atom/ns#" term="webgl"/><title type='text'>WebGL Cheat Sheet</title><content type='html'>&lt;span class=&#39;post-summary&#39;&gt; &lt;img border=&quot;0&quot; src=&quot;http://1.bp.blogspot.com/_OjchJpvqFiw/Suqu9gD-OvI/AAAAAAAAAo8/a31OnJWZP-s/s320/webgl_cheat_sheet.png&quot; style=&quot;float:left;margin-right:10px;&quot;/&gt; WebGL has been getting a fair amount of buzz lately - and rightfully so, because it is &lt;em&gt;cool&lt;/em&gt;. For those that don&#39;t know, WebGL is the 3D extension of the Canvas element, based on OpenGL ES 2.0. Having a standardized low-level graphics API like that available in the browser is pretty exciting stuff if you ask me. 3D canvas graphics has been long underway and not until just recently did it get to an interesting state when the first signs of WebGL showed up in both the &lt;a href=&quot;http://nightly.webkit.org/&quot;&gt;(Mac) WebKit&lt;/a&gt; and &lt;a href=&quot;http://ftp.mozilla.org/pub/firefox/nightly/latest-trunk/&quot;&gt;Firefox&lt;/a&gt; nightly builds.  &lt;/span&gt; &lt;span class=&quot;full-article&quot;&gt; &lt;br/&gt;&lt;br/&gt; &lt;span class=&quot;note&quot;&gt;Note: This cheat sheet has become a bit out of date as the specs have been released and changes have been made that are not reflected in the cheat sheet. I will update it as soon as possible. Cheers. &lt;/span&gt; It&#39;s still very much a work in progress and the official specs haven&#39;t been made public yet, I&#39;m not even sure how far they (&lt;a href=&quot;http://www.khronos.org/&quot;&gt;Khronos&lt;/a&gt;, the working group responsible) are in settling on the specs. So that means there aren&#39;t much in terms of references out there for people like me who are anxious to play around with this new toy. There are a few example demos from both the &lt;a href=&quot;http://webkit.org/blog/603/webgl-now-available-in-webkit-nightlies/&quot;&gt;WebKit&lt;/a&gt; and the &lt;a href=&quot;http://people.mozilla.com/~vladimir/webgl/spore/sporeview.html&quot;&gt;Mozilla&lt;/a&gt; camps and cool sites like &lt;a href=&quot;http://learningwebgl.com/&quot;&gt;Learning WebGL&lt;/a&gt; are starting to pop up. There&#39;s of course the &lt;a href=&quot;http://www.khronos.org/opengles/sdk/docs/man/&quot;&gt;OES 2.0 reference&lt;/a&gt; and the source code for both &lt;a href=&quot;http://trac.webkit.org/browser/trunk/WebCore/html/canvas/CanvasRenderingContext3D.cpp&quot;&gt;WebKit&lt;/a&gt; and &lt;a href=&quot;http://mxr.mozilla.org/mozilla-central/source/content/canvas/src/WebGLContextGL.cpp&quot;&gt;Mozilla&lt;/a&gt; implementations is also readily available. So, I decided to just make my own reference sheet by combining those sources and the result is a condensed WebGL cheat sheet which fits on 4 pages - or 2 if you have good eyes and print two on each page.   &lt;br/&gt;&lt;br/&gt;As an added bonus, this exercise forced me to dig through the entire OES2.0 spec, which was great since I&#39;m an OpenGL newbie and learning stuff is cool!  &lt;br/&gt;&lt;br/&gt; Of course, given the current state of WebGL, any of the information in this document is subject to change from day to day. I &lt;strike&gt;might&lt;/strike&gt; most certainly have missed a bunch of things as well due to lack of insight and good references. In addition to that there also seem to be a few differences in the two implementations, so those will be corrected when I know what actually needs correcting.  &lt;br/&gt;&lt;br/&gt; I also don&#39;t have access to a Mac and since the WebKit implementation is Mac-only for now, I haven&#39;t actually seen it action. There might be more differences between the two than I&#39;ve found just by glancing over the source.  &lt;br/&gt;&lt;br/&gt; Anyway, here it is in both PDF and HTML:  &lt;br/&gt;&lt;br/&gt; &lt;a href=&quot;http://www.nihilogic.dk/labs/webgl_cheat_sheet/WebGL_Cheat_Sheet.pdf&quot;&gt;WebGL Cheat Sheet PDF&lt;/a&gt;   &lt;br/&gt;&lt;br/&gt; &lt;a href=&quot;http://www.nihilogic.dk/labs/webgl_cheat_sheet/WebGL_Cheat_Sheet.htm&quot;&gt;WebGL Cheat Sheet HTML&lt;/a&gt; &lt;br/&gt;&lt;br/&gt; The HTML version has the extra bonus feature of tooltip information when you hover the mouse over (most of the) function parameters and enum values.  &lt;br/&gt;&lt;br/&gt; And corrections and suggestions are of course most welcome!  &lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.nihilogic.dk/feeds/7165823103896733316/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nihilogic.dk/2009/10/webgl-cheat-sheet.html#comment-form' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/7165823103896733316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/7165823103896733316'/><link rel='alternate' type='text/html' href='http://blog.nihilogic.dk/2009/10/webgl-cheat-sheet.html' title='WebGL Cheat Sheet'/><author><name>Jacob Seidelin</name><uri>http://www.blogger.com/profile/04783658679191587047</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_OjchJpvqFiw/SE2FFZozX8I/AAAAAAAAAIc/8ZmxXQ-eJYg/S220/me.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_OjchJpvqFiw/Suqu9gD-OvI/AAAAAAAAAo8/a31OnJWZP-s/s72-c/webgl_cheat_sheet.png" height="72" width="72"/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877325777086061039.post-2861161500778983093</id><published>2009-10-05T12:49:00.000-07:00</published><updated>2009-10-06T00:00:20.286-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="canvas"/><category scheme="http://www.blogger.com/atom/ns#" term="graphics"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="math"/><title type='text'>Strange attractors - beautiful chaos and canvas</title><content type='html'>&lt;img border=&quot;0&quot; src=&quot;http://3.bp.blogspot.com/_OjchJpvqFiw/SsofiW5lK0I/AAAAAAAAAoU/JVmhIX3YFBw/s200/dejong_246461200.png&quot; style=&quot;float:left;margin-right:10px;&quot;/&gt; Math has the ability to both be totally awesome and beautiful as well as make me bang my head into the wall. While the actual math involved at times goes way above my head, some things are just so damn elegant and when, on top of that, they can be visualized with pretty pictures, I&#39;m sold. To make things even better, we have &amp;lt;canvas&amp;gt; and with it the ability to throw some JavaScript at this &lt;strike&gt;magic&lt;/strike&gt; math.  &lt;span class=&quot;full-article&quot;&gt;Links to gallery and generator at the bottom if you want to skip the details. &lt;br/&gt;&lt;br/&gt; &lt;span class=&quot;note&quot;&gt;I&#39;m sorry if I offend any math-enabled people with this post, I am but a mere mortal so bear with me if I mess up any of the math.&lt;/span&gt;&lt;br/&gt;&lt;br/&gt; Anyway, fractals like the well-known &lt;a href=&quot;http://blog.nihilogic.dk/2008/10/23-pretty-javascript-fractals.html&quot;&gt;Mandelbrot set&lt;/a&gt; (and many others) have that ability as do another category of mathematical creatures known as strange attractors. So what are they? I asked &lt;a href=&quot;http://en.wikipedia.org/wiki/Attractor&quot;&gt;Wikipedia&lt;/a&gt;:   &lt;blockquote&gt; &quot;An attractor is a set to which a dynamical system evolves after a long enough time.&quot;  &lt;/blockquote&gt; &lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/_OjchJpvqFiw/Ssofq6dGEzI/AAAAAAAAAoc/dWcThIcky-s/s200/trig_588022932.png&quot; style=&quot;float:right;margin-left:10px;&quot; /&gt; While in every day use, one might think of an attractor as something that attracts stuff, in this context it&#39;s really the pattern or the result of what&#39;s going on in a system. E.g. if you&#39;re measuring and graphing the relationship between a number of variables over time, by connecting those points you could refer to the resulting pattern as an attractor. &lt;br/&gt;&lt;br/&gt; A point attractor a simple form of attractor. Consider a pendulum. Release it and it will always, eventually, end up at rest in the same place. That resulting pattern (the point) would be the attractor for that system. &lt;br/&gt;&lt;br/&gt; What about strange attractors, then?   &lt;blockquote&gt; &quot;An attractor is informally described as strange if it has non-integer dimension or if the dynamics on it are chaotic.&quot;  &lt;/blockquote&gt; &lt;img border=&quot;0&quot; src=&quot;http://4.bp.blogspot.com/_OjchJpvqFiw/SsohCjptO_I/AAAAAAAAAo0/8P0DjLygWkw/s200/trig_3093368131.png&quot; style=&quot;float:left;margin-right:10px;&quot; /&gt; Chaos, alright. Among other things, that involves being very sensitive to initial conditions (butterfly -&gt; wing-flapping -&gt; tornado, etc). It&#39;s more complex that than, but that&#39;s where it just goes beyond what I can grok. &lt;br/&gt;&lt;br/&gt; Ok, so what we need is a function that, when called over and over again, shows unpredictable and radically different behaviour if we change some initial conditions (even just slightly). Fortunately there are smart people who already found such functions.  &lt;br/&gt;&lt;br/&gt; One of those is the quadratic map given by &lt;br/&gt;&lt;br/&gt; x&lt;sub&gt;n+1&lt;/sub&gt; = a&lt;sub&gt;0&lt;/sub&gt; + a&lt;sub&gt;1&lt;/sub&gt; x&lt;sub&gt;n&lt;/sub&gt; + a&lt;sub&gt;2&lt;/sub&gt; x&lt;sub&gt;n&lt;/sub&gt;&lt;sup&gt;2&lt;/sup&gt; + a&lt;sub&gt;3&lt;/sub&gt; x&lt;sub&gt;n&lt;/sub&gt; y&lt;sub&gt;n&lt;/sub&gt; +   a&lt;sub&gt;4&lt;/sub&gt; y&lt;sub&gt;n&lt;/sub&gt; + a&lt;sub&gt;5&lt;/sub&gt; y&lt;sub&gt;n&lt;/sub&gt;&lt;sup&gt;2&lt;/sup&gt;,&lt;br/&gt;y&lt;sub&gt;n+1&lt;/sub&gt; = b&lt;sub&gt;0&lt;/sub&gt; + b&lt;sub&gt;1&lt;/sub&gt; x&lt;sub&gt;n&lt;/sub&gt; + b&lt;sub&gt;2&lt;/sub&gt; x&lt;sub&gt;n&lt;/sub&gt;&lt;sup&gt;2&lt;/sup&gt; + b&lt;sub&gt;3&lt;/sub&gt; x&lt;sub&gt;n&lt;/sub&gt; y&lt;sub&gt;n&lt;/sub&gt; +   b&lt;sub&gt;4&lt;/sub&gt; y&lt;sub&gt;n&lt;/sub&gt; + b&lt;sub&gt;5&lt;/sub&gt; y&lt;sub&gt;n&lt;/sub&gt;&lt;sup&gt;2&lt;/sup&gt;&lt;br/&gt;&lt;br/&gt; where a&lt;sub&gt;0&lt;/sub&gt;-a&lt;sub&gt;5&lt;/sub&gt; and b&lt;sub&gt;0&lt;/sub&gt;-b&lt;sub&gt;5&lt;/sub&gt; are constants that make up that attractor. Another is the Peter de Jong attractor   using trigonometric functions: &lt;br/&gt;&lt;br/&gt;x&lt;sub&gt;n+1&lt;/sub&gt; = sin(a y&lt;sub&gt;n&lt;/sub&gt;) - cos(b x&lt;sub&gt;n&lt;/sub&gt;),&lt;br/&gt;y&lt;sub&gt;n+1&lt;/sub&gt; = sin(a x&lt;sub&gt;n&lt;/sub&gt;) - cos(b y&lt;sub&gt;n&lt;/sub&gt;)  &lt;br/&gt;&lt;br/&gt; I&#39;ve only played around with a few but there are many more. These, however, produce some very interesting visuals. &lt;br/&gt;&lt;br/&gt; &lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/_OjchJpvqFiw/Ssog9J2BL6I/AAAAAAAAAos/a9gj7KFNHLI/s200/quad_2592177994.png&quot; style=&quot;float:right;margin-left:10px;&quot; /&gt; One problem, at least in the case of the quadratic attractor, is that, if the a0-a5 and b0-b5 factors are chosen randomly, very few (like 1% for quadratic, the other formulas seem to have a higher rate of success) combinations produce a useful chaotic system. Determining which ones do is done using something called the Lyapunov exponent, which I won&#39;t go into but &lt;a href=&quot;http://en.wikipedia.org/wiki/Lyapunov_exponent&quot;&gt;look&lt;/a&gt; &lt;a href=&quot;http://local.wasp.uwa.edu.au/~pbourke/fractals/lyapunov/&quot;&gt;it&lt;/a&gt; &lt;a href=&quot;http://mathworld.wolfram.com/LyapunovCharacteristicExponent.html&quot;&gt;up&lt;/a&gt; if you&#39;re interested. &lt;br/&gt;&lt;br/&gt; All this was heavily inspired by the work done by &lt;a href=&quot;http://local.wasp.uwa.edu.au/~pbourke/fractals/&quot;&gt;Paul Bourke&lt;/a&gt; who has done all sorts of awesome math visualization. The code itself is also partly based on a program available on &lt;a href=&quot;http://local.wasp.uwa.edu.au/~pbourke/fractals/lyapunov/&quot;&gt;Bourke&#39;s site&lt;/a&gt;. &lt;br/&gt;&lt;br/&gt; &lt;a href=&quot;http://www.nihilogic.dk/labs/strange_attractors/gallery/&quot;&gt;View the gallery&lt;/a&gt; for pretty pictures or make your own &lt;a href=&quot;http://www.nihilogic.dk/labs/strange_attractors/&quot;&gt;using the generator&lt;/a&gt;. The way it works is that you pick a formula/attractor type and click &quot;Generate&quot;. It then searches for potentially nice images by selecting random values for the a&lt;sub&gt;i&lt;/sub&gt; and b&lt;sub&gt;i&lt;/sub&gt; coefficients. When a chaotic attractor is found, it draws it on the screen, optionally with some pretty and colorful compositing (courtesy of &lt;a href=&quot;http://www.pixastic.com/lib/&quot;&gt;Pixastic&lt;/a&gt;). You can recreate any attractor by using its seed number (displayed after the name). If you find some really nice ones, leave a comment with the seed and attractor type so I and others can see. &lt;br/&gt;&lt;br/&gt; Also, If you&#39;re going to generate your own images, I &lt;em&gt;really&lt;/em&gt; suggest using Chrome (or WebKit, although it has problems with the compositing). Any recent canvas enabled browser should work, though. &lt;br/&gt;&lt;br/&gt; &lt;a href=&quot;http://www.nihilogic.dk/labs/strange_attractors/gallery/&quot;&gt;View the gallery&lt;/a&gt;&lt;br/&gt;&lt;a href=&quot;http://www.nihilogic.dk/labs/strange_attractors/&quot;&gt;Try the generator&lt;/a&gt;&lt;br/&gt;&lt;br/&gt; &lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.nihilogic.dk/feeds/2861161500778983093/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nihilogic.dk/2009/10/strange-attractors-beautiful-chaos-and.html#comment-form' title='63 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/2861161500778983093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/2861161500778983093'/><link rel='alternate' type='text/html' href='http://blog.nihilogic.dk/2009/10/strange-attractors-beautiful-chaos-and.html' title='Strange attractors - beautiful chaos and canvas'/><author><name>Jacob Seidelin</name><uri>http://www.blogger.com/profile/04783658679191587047</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_OjchJpvqFiw/SE2FFZozX8I/AAAAAAAAAIc/8ZmxXQ-eJYg/S220/me.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_OjchJpvqFiw/SsofiW5lK0I/AAAAAAAAAoU/JVmhIX3YFBw/s72-c/dejong_246461200.png" height="72" width="72"/><thr:total>63</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877325777086061039.post-8416171868418949959</id><published>2009-08-27T12:15:00.000-07:00</published><updated>2009-08-27T12:15:49.245-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="audio"/><category scheme="http://www.blogger.com/atom/ns#" term="canvas"/><category scheme="http://www.blogger.com/atom/ns#" term="graphics"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="music visualization"/><title type='text'>Pocket Full of Canvas</title><content type='html'>&lt;span class=&#39;post-summary&#39;&gt; &lt;img border=&quot;0&quot; src=&quot;http://1.bp.blogspot.com/_OjchJpvqFiw/Spa_JNdcPuI/AAAAAAAAAoE/m-unv3GX7X0/s200/munch.png&quot; style=&quot;float:left;margin-right:10px;&quot;/&gt; One thing I found interesting when I did the &lt;a href=&quot;http://blog.nihilogic.dk/2009/03/javascript-canvas-sm2-milkdrop.html&quot;&gt;JuicyDrop music visualization&lt;/a&gt; was MilkDrop&#39;s deformation effects. Rather than processing deformations for each and every pixel it works on a grid of points and then just interpolates the results for the actual pixels. I sort of mimicked that in JuicyDrop but in a simpler way. The grids used in JuicyDrop are something like 5x5 to 9x9 where MilkDrop uses much higher resolution grids and instead of doing per-pixel interpolation, the grid points are used to cut out triangles from the previous frame and paint them on the new frame, slightly transformed.   &lt;/span&gt;&lt;div class=&quot;full-article&quot;&gt;&lt;br/&gt;&lt;div style=&quot;clear:both;&quot;&gt;&lt;/div&gt;&lt;br/&gt; &lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/_OjchJpvqFiw/Spa_FhuTm0I/AAAAAAAAAn0/lKWF4c6aDjo/s200/chess.png&quot; style=&quot;float:right;margin-left:10px;&quot;/&gt; Since the deformations are usually very small when seen on a frame-by-frame basis, you can get some pretty good results even with fairly low resolution grids, and most recent browsers are more than capable of rendering 100 or even more triangles on a canvas. In the end, I was pleasantly surprised at how well everything turned out since I wasn&#39;t even sure I was going to get anything remotely close to what the original MilkDrop plugin produced.  &lt;br/&gt;&lt;div style=&quot;clear:both;&quot;&gt;&lt;/div&gt;&lt;br/&gt; &lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/_OjchJpvqFiw/Spa_EbAsVFI/AAAAAAAAAns/X4JZtcrjtpU/s200/bars.png&quot; style=&quot;float:left;margin-right:10px;&quot; /&gt; While I still plan on doing some more work on JuicydDrop eventually, I decided to rip out just the grid deformation part and built something new around it. You see, every now and then I get the urge to just throw something quick together and make some flashing light or dancing balls or whatever but usually that urge comes when I only have 30 minutes to spare. So I figured I&#39;d try to build a mini framework for making stupid demo effects and stuff like that.   &lt;br/&gt;&lt;div style=&quot;clear:both;&quot;&gt;&lt;/div&gt;&lt;br/&gt; &lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/_OjchJpvqFiw/Spa_HcwAKrI/AAAAAAAAAn8/x5R0Fy_KW9s/s200/mario.png&quot; style=&quot;float:right;margin-left:10px;&quot;/&gt; I&#39;ve ended up with a small application that loads simple scripts, exposes a bunch of functions to these scripts and then takes care of rendering and processing whatever the script tells it to. It&#39;s probably best explained by just taking a look at it. The whole idea was to make it as easy as possible for me to just throw some silly effect together real quick and hopefully not write too much code in the process, so it might not be the most thought through design but it gets the job done. The functions available range from basic drawing and image processing (via &lt;a href=&quot;http://www.pixastic.com/&quot;&gt;Pixastic&lt;/a&gt;) to audio data and 3D (via &lt;a href=&quot;http://deanm.github.com/pre3d/&quot;&gt;Pre3D&lt;/a&gt;). &lt;br/&gt;&lt;div style=&quot;clear:both;&quot;&gt;&lt;/div&gt;&lt;br/&gt;&lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/_OjchJpvqFiw/Spa_Kb-E8_I/AAAAAAAAAoM/LxJL05A_khQ/s200/warp.png&quot; style=&quot;float:left;margin-right:10px;&quot;/&gt; There&#39;s no larger goal with this and there are already more robust and more elaborate frameworks out there for programming and animating graphics with JavaScript/Canvas(&lt;a href=&quot;http://processingjs.org/&quot;&gt;Processing.js&lt;/a&gt; for instance) so this is just my own little time-sink. You&#39;re of course welcome to play around with it, modify the existing scripts or even make your own.   &lt;br/&gt;&lt;br/&gt; To wrap things up, I made a little a demo comprised of scripts I cooked up while testing and developing this thing (as well as a few adaptations of other people&#39;s work). I totally recommend using Chrome and if possible, the dev channel as it&#39;s given me by far the best performance and visual appearance.  &lt;br/&gt;&lt;div style=&quot;clear:both;&quot;&gt;&lt;/div&gt;&lt;br/&gt; &lt;a href=&quot;http://www.nihilogic.dk/labs/pocket_full_of_canvas/demo.php&quot;&gt;Watch the demo here&lt;/a&gt; &lt;br/&gt;&lt;br/&gt; &lt;a href=&quot;http://www.nihilogic.dk/labs/pocket_full_of_canvas/&quot;&gt;Play around with the application here&lt;/a&gt;  &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.nihilogic.dk/feeds/8416171868418949959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nihilogic.dk/2009/08/pocket-full-of-canvas.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/8416171868418949959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/8416171868418949959'/><link rel='alternate' type='text/html' href='http://blog.nihilogic.dk/2009/08/pocket-full-of-canvas.html' title='Pocket Full of Canvas'/><author><name>Jacob Seidelin</name><uri>http://www.blogger.com/profile/04783658679191587047</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_OjchJpvqFiw/SE2FFZozX8I/AAAAAAAAAIc/8ZmxXQ-eJYg/S220/me.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_OjchJpvqFiw/Spa_JNdcPuI/AAAAAAAAAoE/m-unv3GX7X0/s72-c/munch.png" height="72" width="72"/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877325777086061039.post-8608707814075453128</id><published>2009-08-15T08:01:00.000-07:00</published><updated>2009-08-17T11:50:35.216-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="book review"/><title type='text'>Book review: Object-Oriented JavaScript</title><content type='html'>&lt;span class=&#39;post-summary&#39;&gt; &lt;div style=&quot;float:left;margin-right:10px;margin-bottom:10px;&quot;&gt;&lt;iframe src=&quot;http://rcm.amazon.com/e/cm?t=nihilogic-20&amp;o=1&amp;p=8&amp;l=as1&amp;asins=1847194141&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr&quot; style=&quot;width:120px;height:240px;&quot; scrolling=&quot;no&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;&lt;/div&gt; The good people at &lt;a href=&quot;http://www.packtpub.com/&quot;&gt;Packt Publishing&lt;/a&gt; were kind enough to provide me with a copy of the book &lt;b&gt;Object-Oriented JavaScript&lt;/b&gt; by Stoyan Stefanov and it&#39;s just been sitting on my desk for far too long before I finally got around to reading it. But I did and so here are my thoughts on this book.   &lt;h4&gt;What&#39;s inside&lt;/h4&gt; Weighing in at just under 300 pages (excluding appendices) in 8 chapters, the book promises to teach you everything from the very basics of JavaScript programming to more advanced object-oriented patterns, regardless of your previous experience with programming and JavaScript.  &lt;/span&gt; &lt;div class=&quot;full-article&quot;&gt; &lt;br/&gt; When it comes to layout and ease of reading, I can&#39;t really put a finger on anything. In the very beginning of the book, various typographic conventions and such used throughout the book are explained but there shouldn&#39;t be room for much misunderstanding even if you skip that part. The pages read easily and have a nice balance of text and whitespace. Code examples, of which there are plenty although usually very short, are all clear, concise and easily identified.  &lt;br/&gt;&lt;br/&gt; The book takes a rather hands-on approach to learning and you&#39;re encouraged to try out short code examples as you read them. It works nicely, I think, at least if you&#39;re using &lt;a href=&quot;http://getfirebug.com/&quot;&gt;Firebug&lt;/a&gt; (which the author suggests you do and also instructs you how to set up) since the book shows you both what you should type as well as the expected response from the Firebug console.   &lt;h4&gt;JavaScript basics&lt;/h4&gt; The book is more or less divided in two parts, with the first part (consisting of the first 4 chapters) dealing with general, basic JavaScript programming and the second part taking on the object-oriented aspects as well as dealing with the browser environment and discussing some design patterns.  &lt;br/&gt;&lt;br/&gt; And the first chapters do really start with the very basics. After a short introduction to the language in chapter 1, including its history as well as how it fits in among other languages, you&#39;re taken through the basic syntax of the language, the available operators and the primitive data types. It then naturally progresses to discuss functions and objects, including scope, the important topic of closures and how everything in JavaScript is an object.  &lt;h4&gt;Prototypes, the browser and patterns&lt;/h4&gt; Now, part 2 is where it gets more interesting. Chapters 5 and 6 explain in great detail how JavaScript is a prototypical language and shows with many examples how to write object-oriented JavaScript using constructor functions and prototype chaining. It&#39;s my understanding that many people new to JavaScript have problems grasping this part and the two chapters seem appropriately thorough with many examples and even a few diagrams when necessary.   &lt;br/&gt;&lt;br/&gt; I won&#39;t say much about chapter 7. It simply walks you through the objects and functions available when running JavaScript in the browser, ie. the document and browser object models (DOM and BOM). It&#39;s not the most interesting chapter seen in the context of learning the language but for those wanting to use it for developing web sites/apps, it&#39;s a nice and quick introduction if you don&#39;t have a book dedicated to that.  &lt;br/&gt;&lt;br/&gt; Chapter 8 finishes the &quot;meat&quot; of the book with a discussion of various common coding and design patterns, ranging from namespacing to JSON and singletons. They are all good topics but some of them get so little space that they seem more like appetizers for further study than anything else. That said, it&#39;s a good chapter and highlights how the language features you&#39;ve just learned can and are being used to build real applications.  &lt;br/&gt;&lt;br/&gt; Near the end you&#39;ll find a few obligatory appendices listing things like reserved words, built-in objects and regular expressions. They are nice and detailed and about what you&#39;d expect from a book like this, nothing more, nothing less.  &lt;h4&gt;A few comments&lt;/h4&gt; As mentioned earlier, it&#39;s suggested that you use Firebug while reading the book, but I suppose any JavaScript console could work and it&#39;s only meant as a tool to give you instant feedback. For the most part, the book deals with JavaScript in a strict language-only way, ie. it doesn&#39;t care if you&#39;re using JavaScript in the browser, on the server or in more exotic places. In fact, I was a bit surprised to see that, given this environment-agnostic approach, the author still chose to devote all of chapter 7 to the browser environment (DOM, BOM, etc). Not that it&#39;s bad or useless information (and it&#39;s certainly a good start), but you might want to look at other books for a more thorough introduction to client-side web development.   &lt;br/&gt;&lt;br/&gt; On the other hand, there are some areas that perhaps could&#39;ve used some more space. Eg. things like public/privileged/private methods and properties in the context of JavaScript objects are only mentioned briefly in chapter 8 and a few of the other patterns discussed there could easily be &quot;upgraded&quot; and given a few more paragraphs.  &lt;br/&gt;&lt;br/&gt; You also won&#39;t find much about the newest editions of JavaScript, perhaps due to the book being, after all, somewhat tied to the browser environment where the newest versions are far from ubiquitous. As such, the book doesn&#39;t deal with the features introduced in JavaScript 1.6 and newer.  &lt;br/&gt;&lt;br/&gt; I&#39;d say the ideal reader for this book is one with at least a bit of programming experience. While the first chapters are very basic (more experienced programmers might want to just skim these) the later topics do get more advanced and if this is your very first experience with programming, some of it could provide a challenge.   &lt;h4&gt;Conclusion&lt;/h4&gt; To summarize, I think this is a great book for learning the JavaScript language. It could perhaps have been a bit heavier on the OO side of things and maybe let some of the browser stuff go, but for a good all-round book on modern JavaScript this is a good bet, whether you&#39;re looking to taking your JavaScript skills to the next level or adding another language to your resumé. Depending on what you&#39;ll be using JavaScript for, you might also want to supplement with some material about all the good stuff in version 1.7 and/or DOM scripting.  &lt;br/&gt;&lt;br/&gt; If you want to get a taste of the book, there&#39;s a &lt;a href=&quot;http://www.packtpub.com/files/Object-Oriented-JavaScript-sample-chapter-2-Primitive-Data-Types-Arrays-Loops-and-Conditions.pdf&quot;&gt;sample chapter available here&lt;/a&gt; in PDF format. It&#39;s chapter 2 which mostly talks about basic stuff like primitive data types, arrays and loops.  &lt;br/&gt;&lt;br/&gt; Finally, you can get the book here: &lt;a href=&quot;https://www.amazon.com/dp/1847194141?tag=nihilogic-20&amp;camp=0&amp;creative=0&amp;linkCode=as1&amp;creativeASIN=1847194141&amp;adid=09RF2EQ8C68VFVCGP5FA&amp;&quot;&gt;Amazon.com&lt;/a&gt; (or &lt;a href=&quot;http://www.amazon.co.uk/gp/product/1847194141?ie=UTF8&amp;tag=nihilogic-21&amp;linkCode=xm2&amp;camp=1634&amp;creativeASIN=1847194141&quot;&gt;Amazon.co.uk&lt;/a&gt;)&lt;br/&gt;- or directly from &lt;a href=&quot;http://www.packtpub.com/object-oriented-javascript-applications-libraries/book&quot;&gt;Packt Publishing&lt;/a&gt;.  &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.nihilogic.dk/feeds/8608707814075453128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nihilogic.dk/2009/08/book-review-object-oriented-javascript.html#comment-form' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/8608707814075453128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/8608707814075453128'/><link rel='alternate' type='text/html' href='http://blog.nihilogic.dk/2009/08/book-review-object-oriented-javascript.html' title='Book review: Object-Oriented JavaScript'/><author><name>Jacob Seidelin</name><uri>http://www.blogger.com/profile/04783658679191587047</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_OjchJpvqFiw/SE2FFZozX8I/AAAAAAAAAIc/8ZmxXQ-eJYg/S220/me.png'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877325777086061039.post-4797494954188577606</id><published>2009-06-27T09:53:00.000-07:00</published><updated>2009-06-27T11:33:36.323-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="pixastic"/><category scheme="http://www.blogger.com/atom/ns#" term="ubiquity"/><title type='text'>Photo editing with Ubiquity</title><content type='html'>&lt;span class=&#39;post-summary&#39;&gt;This is the first release of the new image editor that has actual Ubiquity functionality. Yay. In my &lt;a href=&quot;http://blog.nihilogic.dk/2009/05/photo-editing-in-browser-with-pixastic.html&quot;&gt;previous post&lt;/a&gt; I introduced a new JavaScript image editor based on my &lt;a href=&quot;http://www.pixastic.com/&quot;&gt;Pixastic image processing library&lt;/a&gt; and let you play around with a &quot;static&quot; demo version. Now I&#39;ve made a few Ubiquity commands that lets you take the editor with you around the web and edit any image you want. &lt;/span&gt;&lt;span class=&quot;full-article&quot;&gt; &lt;h4&gt;Before we start&lt;/h4&gt; You should only use this with &lt;em&gt;&lt;a href=&quot;http://www.mozilla.com/firefox/all-beta.html&quot;&gt;Firefox 3.5&lt;/a&gt;&lt;/em&gt;, anything older will probably not work at all (at least it didn&#39;t last time I checked). I haven&#39;t looked too deeply into it but I&#39;m not sure it&#39;s possible to make it work for earlier versions due to some changes in security concerning the canvas image data acccess. That said, even with 3.5 this is still in the alpha stage and things occasionally fail. &lt;br/&gt;&lt;br/&gt; When the commands are executed a whole bunch of JavaScript is injected into the page which then takes care of setting up the editor, loading CSS, images, etc (about 100KB gzip&#39;ed, everything included). All these assets are currently fetched from www.pixastic.com, maybe they&#39;ll eventually be bundled with Ubiquity. &lt;br/&gt;&lt;br/&gt; Once you&#39;ve got &lt;a href=&quot;http://www.mozilla.com/firefox/all-beta.html&quot;&gt;Firefox 3.5&lt;/a&gt; and the &lt;a href=&quot;http://labs.mozilla.com/projects/ubiquity/&quot;&gt;Ubiquity extension&lt;/a&gt; up and running you can subscribe to the commands at &lt;a href=&quot;http://www.pixastic.com/ubiquity/&quot;&gt;http://www.pixastic.com/ubiquity/&lt;/a&gt;. This will add the commands &lt;code&gt;edit-image&lt;/code&gt; and &lt;code&gt;edit-screenshot&lt;/code&gt; to your Ubiquity arsenal. The latest beta of Ubiquity supports hyphen-less commands but doing &quot;edit image&quot; seems to get mixed up with a Flickr search.   &lt;h4&gt;Image editing&lt;/h4&gt; The &lt;code&gt;edit-image&lt;/code&gt; command lets you edit any image on any web page using the Pixastic editor. Just execute the command and click on the relevant image to load the editor.  Currently only &lt;img&gt; elements are supported, I don&#39;t know if support for background images will be added at some point. I&#39;d also like some more UI feedback when in this &quot;image selection&quot; mode, and possibly allow for selecting an image with the mouse prior to command execution.   &lt;h4&gt;Screenshots and zooming&lt;/h4&gt; The other command, &lt;code&gt;edit-screenshot&lt;/code&gt;, does pretty much what it says. It takes a picture of the current page (only the visible portion and no browser UI) and then loads the editor using that image.  &lt;br/&gt;&lt;br/&gt; &lt;img border=&quot;0&quot; src=&quot;http://1.bp.blogspot.com/_OjchJpvqFiw/SkZMOVf3q1I/AAAAAAAAAm0/f1bHf2k9KOw/s200/zoomlevel.png&quot; style=&quot;float:right;margin-left:10px;&quot;/&gt; Since the screenshots are always bigger than the image viewport in the editor, I&#39;ve implemented some zoom functionality. There are just a few different pre-defined zoom levels and it doesn&#39;t allow for much zooming in, it&#39;s not very pretty anyway due to the interpolation when rescaling images in the browser. You&#39;ll see the current zoom level in the top left corner, some buttons or something for zooming in/out will be added later but for now you can use the mousewheel.   &lt;h4&gt;Image upload and Flickr&lt;/h4&gt; Ubiquity allows the editor to do stuff it wouldn&#39;t normally have access to (eg. taking a picture of the current page, editing images regardless of where they&#39;re hosted, etc) which means it is also possible to post the image to any destination such as photo hosting services and what not. An obvious one to implement was Flickr since it&#39;s widely used and has a nice and detailed API. &lt;br/&gt;&lt;br/&gt; &lt;img border=&quot;0&quot; src=&quot;http://3.bp.blogspot.com/_OjchJpvqFiw/SkZLobCBtHI/AAAAAAAAAmk/ExfV4--Uubg/s200/flickr.png&quot; style=&quot;float:right;margin-left:10px;&quot;/&gt; So you&#39;ll notice in the &quot;Done&quot; tab that there&#39;s now also an &quot;Upload to Flickr&quot; option where, with just a few clicks, you can authorize the editor with Flickr and then upload your edited image. It shouldn&#39;t be too hard to figure out. An authentication window is opened where you&#39;ll have to grant Pixastic the necessary privileges, you then confirm the authentication back in the editor and if all is ok, you can then fill in a few image details and begin the upload. It&#39;s all a bit rough around the edges and it needs a bit more work, better feedback to the user, more image info fields, etc. &lt;br/&gt;&lt;br/&gt; A feature I might try to implement is to register if the original image was loaded from a Flickr photo page and then ask if the user wants to update the existing image or just upload to a new one. That shouldn&#39;t be too hard, I think. And of course more destinations, maybe Facebook and also something like ImageShack for quick and simple image hosting.   &lt;h4&gt;Other changes since last time&lt;/h4&gt; &lt;img border=&quot;0&quot; src=&quot;http://4.bp.blogspot.com/_OjchJpvqFiw/SkZMMxEgzkI/AAAAAAAAAms/tlmsYRt5IVc/s320/selection.png&quot; style=&quot;width:150px;float:right;margin-left:10px;&quot;/&gt; Most actions now let you apply them to a selected region of the image. Just drag a rectangular area on the image to make a selection. The selection stays active across actions until you click &quot;Apply&quot; on one of them, at which point the selection is reset. &lt;br/&gt;&lt;br/&gt;&lt;div style=&quot;clear:both;&quot;&gt;&lt;/div&gt; &lt;img border=&quot;0&quot; src=&quot;http://1.bp.blogspot.com/_OjchJpvqFiw/SkZLnTZ3WtI/AAAAAAAAAmc/YhR5rBW6d70/s320/apply.png&quot; style=&quot;float:right;margin-left:10px;&quot;/&gt; To reduce the risk of forgetting to click &quot;Apply&quot; after setting the parameters for an editing action, the &quot;Apply&quot; button is now highlighted when any of the parameters are changed. If there are no parameters, eg. the invert action, the button will always be highlighted just as it will be for those actions where there are no &quot;non-image-changing&quot; default parameters (for instance the &quot;mosaic&quot; action, no value for the block size will leave the image untouched). &lt;br/&gt;&lt;br/&gt; If you still manage to move on to something else without committing your changes, you can simply go back to the action you came from and the settings should be intact and ready for you to apply. I hope that&#39;s a reasonable compromise but I&#39;m open to suggestions on how to improve the process.   &lt;h4&gt;Have fun&lt;/h4&gt; In case you missed it, you can find the Ubiquity commands &lt;a href=&quot;http://www.pixastic.com/ubiquity/&quot;&gt;here&lt;/a&gt; where you&#39;ll also have a few images to play around with if you&#39;re too lazy to find some yourself.  &lt;br/&gt;&lt;br/&gt; Be sure to let me know what you think. And since the web is such a hostile environment there might some pages where things get messed up, just give me links so I can check it out.  &lt;br/&gt;&lt;br/&gt; So, have fun, I know I will. That special &lt;a href=&quot;http://www.roskilde-festival.dk/&quot;&gt;Roskilde Festival&lt;/a&gt; type of fun! Back in a weeks time.  &lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.nihilogic.dk/feeds/4797494954188577606/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nihilogic.dk/2009/06/photo-editing-with-ubiquity.html#comment-form' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/4797494954188577606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/4797494954188577606'/><link rel='alternate' type='text/html' href='http://blog.nihilogic.dk/2009/06/photo-editing-with-ubiquity.html' title='Photo editing with Ubiquity'/><author><name>Jacob Seidelin</name><uri>http://www.blogger.com/profile/04783658679191587047</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_OjchJpvqFiw/SE2FFZozX8I/AAAAAAAAAIc/8ZmxXQ-eJYg/S220/me.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_OjchJpvqFiw/SkZMOVf3q1I/AAAAAAAAAm0/f1bHf2k9KOw/s72-c/zoomlevel.png" height="72" width="72"/><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877325777086061039.post-7559061036788080993</id><published>2009-06-05T05:42:00.000-07:00</published><updated>2009-06-05T05:50:11.575-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ubiquity"/><title type='text'>Grab colors from web pages with Ubiquity and Firefox</title><content type='html'>&lt;span class=&#39;post-summary&#39;&gt;It has always bothered me when I wanted to grab the color code of some HTML element of image on a web page and I had to either dig through a whole bunch of CSS or take a screenshot and load up Photoshop or whatever. I&#39;m sure somewhere someone has made a tool that lets you do something similar, but with &lt;a href=&quot;http://labs.mozilla.com/projects/ubiquity/&quot;&gt;Ubiquity&lt;/a&gt; and my new color grabber command I can now quickly put a page into color picking mode and grab any color I want, all from within Firefox. &lt;/span&gt;&lt;span class=&quot;full-article&quot;&gt;&lt;br/&gt;&lt;br/&gt;The idea came to me while working on the &lt;a href=&quot;http://blog.nihilogic.dk/2009/05/photo-editing-in-browser-with-pixastic.html&quot;&gt;new Pixastic image editor&lt;/a&gt;. One of the Ubiquity-specific features will be an &quot;edit-screenshot&quot; command that takes a picture of the current page and loads it up in the image editor. This is possible via the HTML5 &lt;code&gt;canvas&lt;/code&gt; element. While in normal web pages you can only paint regular images via the &lt;code&gt;drawImage()&lt;/code&gt; method, running with Ubiquity&#39;s privileges also gives you access to a &lt;code&gt;drawWindow()&lt;/code&gt; method that simply takes a window object instead. Pretty cool stuff. So that makes it rather easy to just grab a screenshot and use that in place of a regular image and, for this color picking command, to put the page in a &quot;click somewhere&quot; mode and then use the mouse coordinates to grab the pixel value from the screenshot image.  &lt;br/&gt;&lt;br/&gt; &lt;div style=&quot;float:right;margin-left:10px;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://4.bp.blogspot.com/_OjchJpvqFiw/SikJfkISJpI/AAAAAAAAAmM/TSz0E2pKt24/s200/grab_color_ubiquity.png&quot; /&gt;&lt;br/&gt;&lt;br/&gt;&lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/_OjchJpvqFiw/SikJcv3M4DI/AAAAAAAAAl8/zbfhwNX4yrI/s200/color_grab_hover.png&quot; /&gt;&lt;br/&gt;&lt;br/&gt;&lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/_OjchJpvqFiw/SikJeA3qM1I/AAAAAAAAAmE/KDW72LcgPXg/s200/color_prompt.png&quot; /&gt;&lt;/div&gt; So what you do is this. If you don&#39;t have Ubiquity installed, &lt;a href=&quot;http://labs.mozilla.com/projects/ubiquity/&quot;&gt;do that first&lt;/a&gt;. Then get the &lt;code&gt;grab-color&lt;/code&gt; command &lt;a href=&quot;http://www.pixastic.com/ubiquity/grab-color.htm&quot;&gt;here&lt;/a&gt; (notice the bar at the top and the &quot;Subscribe&quot; button in the top-right corner). &lt;br/&gt;&lt;br/&gt;You can now toggle Ubiquity (ctrl+space or whatever your command is) and type &lt;code&gt;grab-color&lt;/code&gt;. And that&#39;s it. When you move the mouse over the page, the color under the pointer is displayed in a box and when you click the page, the color is prompted to you for easy copying.&lt;br/&gt;&lt;br/&gt;The command has one optional argument that determines the format of the color returned to you, either &quot;hex&quot; or &quot;rgb&quot;. So to get the color in &lt;code&gt;rgb([r],[g],[b])&lt;/code&gt; format, do &lt;code&gt;grab-color rgb&lt;/code&gt;.  &lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.nihilogic.dk/feeds/7559061036788080993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nihilogic.dk/2009/06/grab-colors-from-web-pages-with.html#comment-form' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/7559061036788080993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/7559061036788080993'/><link rel='alternate' type='text/html' href='http://blog.nihilogic.dk/2009/06/grab-colors-from-web-pages-with.html' title='Grab colors from web pages with Ubiquity and Firefox'/><author><name>Jacob Seidelin</name><uri>http://www.blogger.com/profile/04783658679191587047</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_OjchJpvqFiw/SE2FFZozX8I/AAAAAAAAAIc/8ZmxXQ-eJYg/S220/me.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_OjchJpvqFiw/SikJfkISJpI/AAAAAAAAAmM/TSz0E2pKt24/s72-c/grab_color_ubiquity.png" height="72" width="72"/><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877325777086061039.post-1607351085022785556</id><published>2009-05-19T10:54:00.000-07:00</published><updated>2009-05-19T10:59:11.863-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="pixastic"/><category scheme="http://www.blogger.com/atom/ns#" term="ubiquity"/><title type='text'>Photo editing in the browser with Pixastic - revisited</title><content type='html'>&lt;img border=&quot;0&quot; src=&quot;http://3.bp.blogspot.com/_OjchJpvqFiw/ShLwUhyUIAI/AAAAAAAAAlk/1YIaf3GfRNc/s320/pixastic_editor.png&quot; style=&quot;float:left;margin-right:10px;&quot;/&gt; &lt;span class=&#39;post-summary&#39;&gt;A bit delayed, some progress has been made on the new &lt;a href=&quot;http://www.pixastic.com/&quot;&gt;Pixastic&lt;/a&gt; powered photo editor which will eventually find its way into the Mozilla Labs &lt;a href=&quot;http://labs.mozilla.com/projects/ubiquity/&quot;&gt;Ubiquity project&lt;/a&gt;. Here&#39;s a first preview of how the editor is going to look. It&#39;s still very alpha-ish and in a stage where I&#39;m just trying to get something up and running, so wear your hard hats. &lt;/span&gt;&lt;span class=&quot;full-article&quot;&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;In very few words, the current situation is that I have an editor application running on the Pixastic library (the one featured on the &lt;a href=&quot;http://editor.pixastic.com/&quot;&gt;Pixastic site&lt;/a&gt; doesn&#39;t actually use the library). There&#39;s no Ubiquity version yet (or rather, there is but it blows up every other time I run it), but I&#39;ve made a test page with a few images that you can play around with. &lt;br/&gt;&lt;br/&gt;In a lot more words, the main goals for this editor are:  &lt;h4&gt;Embeddable&lt;/h4&gt; I want it to be as easy as possible to embed into an existing page. This ties in with the goal to make accessible it via a Ubiquity command since this also means that it has to be all ninja like and there shouldn&#39;t be any trace of it post-edit. On the other hand, I&#39;d also like it to replace the editor on &lt;a href=&quot;http://www.pixastic.com/&quot;&gt;http://www.pixastic.com/&lt;/a&gt; so it should also run as a stand-alone app, but that shouldn&#39;t be a problem if the aforementioned criteria is met.&lt;br/&gt;&lt;br/&gt;Some JavaScript files obviously need to be included (in Ubiquity&#39;s case, they&#39;re injected when the command is triggered) and in its current form the application is then loaded in an &lt;code&gt;iframe&lt;/code&gt; where the DOM is filled and all the necessary CSS is loaded, keeping the editor separated from the page from which it was loaded.  &lt;h4&gt;Extendable&lt;/h4&gt; Well, it&#39;s based on Pixastic which is itself pretty easy to extend with new actions. Even though the internal API has a few flaws, it&#39;s easy and flexible enough that adding new actions and effects requires very little effort besides the actual image processing code. I&#39;d like it to be just as easy to add new functionality to the editor so I&#39;m working on a format that allows adding the most basic controls (text inputs, sliders, etc) with very little code but at the same is also flexible enough that you can create something like the cropping tool.  &lt;h4&gt;Load and save from/to anywhere?&lt;/h4&gt; Loading images is done programmatically at the moment but is as simple as calling loadImage(image) where image is an HTML &lt;code&gt;img&lt;/code&gt; element. It would be great if it was possible to load up images from anywhere (other websites, Flickr albums, local images, etc), but same-origin security restrictions limit us to accessing images from the same host. There should be more freedom when running from Ubiquity and that feature would be more useful to have in the general case. &lt;br/&gt;&lt;br/&gt;When it comes to saving, there are a few different options. The first - and most obvious when editing an in-page image - is to simply save the image back to the page. This is done by generating a &lt;code&gt;data:&lt;/code&gt; URI and setting the &lt;code&gt;src&lt;/code&gt; on the original image element. Second option is to save the image to the user&#39;s computer. This can be done by either making a link with the &lt;code&gt;data:&lt;/code&gt; URI for the user to right click or by triggering a download dialog. The last option would seem like the best but in order to do that, the mime type of the &lt;code&gt;data:&lt;/code&gt; URI has to be altered and it seems that Firefox is then unable to figure out the actual format of the image and defaults to giving it a .png extension, so that&#39;s only good for saving PNG images. I&#39;d like to also take advantage of some browsers&#39; ability to generate both PNG and JPG &lt;code&gt;data:&lt;/code&gt; URI&#39;s so at the moment I&#39;m not sure what to do. Any suggestions? &lt;br/&gt;&lt;br/&gt;But with the cross-domain XHR abilities available from Ubiquity it should also be possible to post the image to something like Flickr or maybe Facebook. I&#39;ve only just started looking at Flickr integration and I don&#39;t actually know if the Flickr API will even accept the image data - the &lt;code&gt;data:&lt;/code&gt; URI is base64 encoded and it would be nice to not have to mess around too much with it since it can be quite big. I&#39;ll also have to look into what other online photo services are accessible.  &lt;h4&gt;Skinnable&lt;/h4&gt; To some extent the editor should be skinnable but I&#39;m not going out of my way to make every detail customizable. In terms of layout I&#39;m sort of going with &lt;a href=&quot;http://www.azarask.in/blog/post/ubiquity-photo-editor/&quot;&gt;Aza Raskin&#39;s Lightroom inspired proposal&lt;/a&gt;, at least for now. I&#39;m using jQuery UI as a base for the UI elements, so all the theming that comes with that should apply here as well. It will likely end with a compromise with a somewhat fixed layout but color schemes and so on can be changed via CSS and jQuery UI themes if need be.  &lt;h4&gt;Feedback&lt;/h4&gt; At this point I&#39;m very much looking for feedback on just about every aspect (features, UI, usability issues, etc.), but a couple of specific things I&#39;m thinking about/that were brought to my attention are: &lt;br/&gt;&lt;br/&gt;&lt;ul&gt;&lt;li&gt;The undo feature: How does it work for you with the vertical bar? Is it in the right place? Should it stay hidden until there&#39;s actually something to undo? &lt;/li&gt;&lt;li&gt;Preview: On or off by default? I&#39;ve hesitated turning preview on by default since JavaScript image processing can still be a CPU intensive task (especially with large images), even with today&#39;s fast JS engines. If processing was instant, I would have no problem making &quot;on&quot; the default state. Maybe turning it on/off once should toggle it for all actions (ie. globally)? &lt;/li&gt;&lt;li&gt;Apply: You have to actively click &quot;Apply&quot; before anything actually happens to the image. If you select another action/tab without clicking &quot;Apply&quot;, your changes are lost, followed by much frustration. It&#39;s been suggested that all changes are applied right away (since you can just undo them). I&#39;m not sure if that&#39;s the right thing to do due to the way the UI works right now, but that might just be me being used to the extra layer of confirmation. Perhaps it would be better if the button was highlighted in some way as soon as there are any changes that would be lost? &lt;/li&gt;&lt;/ul&gt; &lt;h4&gt;So many words&lt;/h4&gt; Ok, &lt;a href=&quot;http://www.pixastic.com/editor-test/&quot;&gt;go on and play with the preview&lt;/a&gt;. When you&#39;re done, please let me know what you think. &lt;br/&gt;&lt;br/&gt;At the moment it only works in Firefox but the aim is to have it working in all appropriate browsers. That means Opera 9.5+, Safari 4 (and Chrome once it gets &lt;code&gt;[get|put]ImageData&lt;/code&gt; support in stable. &lt;br/&gt;&lt;br/&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.nihilogic.dk/feeds/1607351085022785556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nihilogic.dk/2009/05/photo-editing-in-browser-with-pixastic.html#comment-form' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/1607351085022785556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/1607351085022785556'/><link rel='alternate' type='text/html' href='http://blog.nihilogic.dk/2009/05/photo-editing-in-browser-with-pixastic.html' title='Photo editing in the browser with Pixastic - revisited'/><author><name>Jacob Seidelin</name><uri>http://www.blogger.com/profile/04783658679191587047</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_OjchJpvqFiw/SE2FFZozX8I/AAAAAAAAAIc/8ZmxXQ-eJYg/S220/me.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_OjchJpvqFiw/ShLwUhyUIAI/AAAAAAAAAlk/1YIaf3GfRNc/s72-c/pixastic_editor.png" height="72" width="72"/><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877325777086061039.post-7720671921764256105</id><published>2009-05-15T00:07:00.000-07:00</published><updated>2009-05-15T00:07:24.249-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="games"/><title type='text'>Nihilogic Games is now JavaScript Gaming</title><content type='html'>&lt;span class=&#39;post-summary&#39;&gt;At some point I&#39;d like the games portal to be able to live on its own and it didn&#39;t sit right with me that it was a subdomain of nihilogic.dk. So it now has a new home at &lt;a href=&quot;http://www.javascriptgaming.com/&quot;&gt;http://www.javascriptgaming.com/&lt;/a&gt;, check it out. Nothing but the name has changed (yet), though. The &lt;a href=&quot;http://feeds2.feedburner.com/nihilogic_games&quot;&gt;games feed&lt;/a&gt; is also still the same. Happy friday! &lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.nihilogic.dk/feeds/7720671921764256105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nihilogic.dk/2009/05/nihilogic-games-is-now-javascript.html#comment-form' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/7720671921764256105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/7720671921764256105'/><link rel='alternate' type='text/html' href='http://blog.nihilogic.dk/2009/05/nihilogic-games-is-now-javascript.html' title='Nihilogic Games is now JavaScript Gaming'/><author><name>Jacob Seidelin</name><uri>http://www.blogger.com/profile/04783658679191587047</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_OjchJpvqFiw/SE2FFZozX8I/AAAAAAAAAIc/8ZmxXQ-eJYg/S220/me.png'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877325777086061039.post-3106816705673046414</id><published>2009-05-05T13:03:00.000-07:00</published><updated>2009-05-06T00:18:38.773-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="games"/><title type='text'>Games round-up for April 2009</title><content type='html'>&lt;span class=&#39;post-summary&#39;&gt;I had hoped to get a good chunk of Brent Silby&#39;s games added to the &lt;a href=&quot;http://games.nihilogic.dk/&quot;&gt;games portal&lt;/a&gt; during April but I had to postpone that mission. Only one Silby game made it but fortunately a few other people were also kind enough to email me about their games. As always, just &lt;a href=&quot;mailto:jseidelin@nihilogic.dk&quot;&gt;let me know&lt;/a&gt; if you know of a cool game that fits the profile. &lt;/span&gt;&lt;span class=&quot;full-article&quot;&gt;&lt;br/&gt;&lt;br/&gt; &lt;img src=&quot;http://1.bp.blogspot.com/_OjchJpvqFiw/SdjC66kbefI/AAAAAAAAAkc/I7Y8bt9p_8M/s200/3bored.png&quot; width=&quot;100&quot; style=&quot;float:left;margin-right:10px;&quot; /&gt;&lt;b&gt;3bored&lt;/b&gt;&lt;br/&gt;A very creative and somewhat abstract &lt;code&gt;canvas&lt;/code&gt;-based shooter. If you ever wanted to be a white rectangle with the power of flight and bad odds of survival, this is the game for you. &lt;br/&gt;&lt;a href=&quot;http://games.nihilogic.dk/2009/04/3bored.html&quot;&gt;Read more about 3bored&lt;/a&gt;&lt;br/&gt; &lt;div style=&quot;clear:both;&quot;&gt;&lt;br/&gt;&lt;/div&gt; &lt;img src=&quot;http://3.bp.blogspot.com/_OjchJpvqFiw/SfgZU9I9UaI/AAAAAAAAAlE/phNPywUkGIk/s200/balloons_and_droids.png&quot; width=&quot;100&quot; style=&quot;float:left;margin-right:10px;&quot; /&gt;&lt;b&gt;Balloons and Droids&lt;/b&gt;&lt;br/&gt;The only one of Brent Silby&#39;s games I got around to adding, Balloons and Droids delivers exactly what it promises - balloons and droids, all in good arcade style fun.&lt;br/&gt;&lt;a href=&quot;http://games.nihilogic.dk/2009/05/balloons-and-droids.html&quot;&gt;Read more about Balloons and Droids&lt;/a&gt;&lt;br/&gt; &lt;div style=&quot;clear:both;&quot;&gt;&lt;br/&gt;&lt;/div&gt; &lt;img src=&quot;http://2.bp.blogspot.com/_OjchJpvqFiw/SfBI5zqwuoI/AAAAAAAAAk8/L2sYKkVZSbw/s200/canvas_invaders.png&quot; width=&quot;100&quot; style=&quot;float:left;margin-right:10px;&quot; /&gt;&lt;b&gt;Canvas Invaders&lt;/b&gt;&lt;br/&gt;Yet another Space Invaders clone, made by Jason Brown to gain more &lt;code&gt;canvas&lt;/code&gt; experience.&lt;br/&gt;&lt;a href=&quot;http://games.nihilogic.dk/2009/04/canvas-invaders.html&quot;&gt;Read more about Canvas Invaders&lt;/a&gt; &lt;div style=&quot;clear:both;&quot;&gt;&lt;br/&gt;&lt;/div&gt; &lt;img src=&quot;http://2.bp.blogspot.com/_OjchJpvqFiw/Sdiunb9-_eI/AAAAAAAAAkM/ESbxFpCPbbU/s200/coverfire.png&quot; width=&quot;100&quot; style=&quot;float:left;margin-right:10px;&quot; /&gt;&lt;b&gt;Coverfire&lt;/b&gt;&lt;br/&gt;A remake of the old Crossfire game - and it&#39;s Wii enabled.&lt;br/&gt;&lt;a href=&quot;http://games.nihilogic.dk/2009/04/coverfire.html&quot;&gt;Read more about Coverfire&lt;/a&gt; &lt;div style=&quot;clear:both;&quot;&gt;&lt;br/&gt;&lt;/div&gt; &lt;img src=&quot;http://1.bp.blogspot.com/_OjchJpvqFiw/SeDnp-FTmaI/AAAAAAAAAkk/56VCop04UpI/s200/mblocks.png&quot; width=&quot;100&quot; style=&quot;float:left;margin-right:10px;&quot; /&gt;&lt;b&gt;mBlocks&lt;/b&gt;&lt;br/&gt;Now, there are a lot (and I mean a lot) of Tetris clones out there but this one is so well done that it just puts most other attempts to shame.&lt;br/&gt;&lt;a href=&quot;http://games.nihilogic.dk/2009/04/mblocks.html&quot;&gt;Read more about mBlocks&lt;/a&gt;&lt;br/&gt; &lt;div style=&quot;clear:both;&quot;&gt;&lt;br/&gt;&lt;/div&gt; &lt;img src=&quot;http://4.bp.blogspot.com/_OjchJpvqFiw/SexAnm8jJeI/AAAAAAAAAk0/gxDlGdKdNlI/s200/multiplayer.png&quot; width=&quot;100&quot; style=&quot;float:left;margin-right:10px;&quot; /&gt;&lt;b&gt;Sarien.net&lt;/b&gt;&lt;br/&gt;Sarien.net lets you play old Sierra On-Line adventure games in your browser and spices it up with some interesting multiplayer &quot;action&quot;. Absolutely one of the coolest things I&#39;ve seen in a while.&lt;br/&gt;&lt;a href=&quot;http://games.nihilogic.dk/2009/04/sariennet.html&quot;&gt;Read more about Sarien.net&lt;/a&gt; &lt;div style=&quot;clear:both;&quot;&gt;&lt;br/&gt;&lt;/div&gt; &lt;img src=&quot;http://3.bp.blogspot.com/_OjchJpvqFiw/SfgiBdkTOgI/AAAAAAAAAlM/z4sFW9-3eBo/s200/tetris_bricks_car_racing.png&quot; width=&quot;100&quot; style=&quot;float:left;margin-right:10px;&quot; /&gt;&lt;b&gt;Tetris Bricks Car Racing&lt;/b&gt;&lt;br/&gt;Valentin Galea linked me to his nostalgia inducing racing game a&#39;la Tetris, inspired by the handheld devices of yore.&lt;br/&gt;&lt;a href=&quot;http://games.nihilogic.dk/2009/05/tetris-bricks-car-racing.html&quot;&gt;Read more about Tetris Bricks Car Racing&lt;/a&gt;&lt;br/&gt; &lt;div style=&quot;clear:both;&quot;&gt;&lt;br/&gt;&lt;/div&gt; &lt;img src=&quot;http://1.bp.blogspot.com/_OjchJpvqFiw/Sdi9cDi6JVI/AAAAAAAAAkU/Ud8LCY5H0BA/s200/word_wombat.png&quot; width=&quot;100&quot; style=&quot;float:left;margin-right:10px;&quot; /&gt;&lt;b&gt;Word Wombat&lt;/b&gt;&lt;br/&gt;A fun way to hone your typing skills. Type the falling words before they hit the bottom of the page.&lt;br/&gt;&lt;a href=&quot;http://games.nihilogic.dk/2009/04/word-wombat.html&quot;&gt;Read more about Word Wombat&lt;/a&gt;&lt;br/&gt; &lt;div style=&quot;clear:both;&quot;&gt;&lt;br/&gt;&lt;/div&gt; &lt;br/&gt;&lt;br/&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.nihilogic.dk/feeds/3106816705673046414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nihilogic.dk/2009/05/games-round-up-for-april-2009.html#comment-form' title='52 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/3106816705673046414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/3106816705673046414'/><link rel='alternate' type='text/html' href='http://blog.nihilogic.dk/2009/05/games-round-up-for-april-2009.html' title='Games round-up for April 2009'/><author><name>Jacob Seidelin</name><uri>http://www.blogger.com/profile/04783658679191587047</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_OjchJpvqFiw/SE2FFZozX8I/AAAAAAAAAIc/8ZmxXQ-eJYg/S220/me.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_OjchJpvqFiw/SdjC66kbefI/AAAAAAAAAkc/I7Y8bt9p_8M/s72-c/3bored.png" height="72" width="72"/><thr:total>52</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877325777086061039.post-6131100952323010786</id><published>2009-05-05T11:38:00.000-07:00</published><updated>2009-05-05T11:38:55.834-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="canvas"/><title type='text'>Canvas Cheat Sheet update</title><content type='html'>&lt;span class=&#39;post-summary&#39;&gt;As &lt;a href=&quot;http://blog.nihilogic.dk/2009/02/html5-canvas-cheat-sheet.html?showComment=1241176080000#c2726478613119172718&quot;&gt;zcorpan&lt;/a&gt; was so kind to point out, my &lt;a href=&quot;http://blog.nihilogic.dk/2009/02/html5-canvas-cheat-sheet.html&quot;&gt;Canvas Cheat Sheet&lt;/a&gt; wasn&#39;t quite up to date and I finally got around to fixing it up. Here are the links to the revised version: &lt;br/&gt;&lt;br/&gt;&lt;a href=&quot;http://www.nihilogic.dk/labs/canvas_sheet/HTML5_Canvas_Cheat_Sheet.pdf&quot;&gt;PDF document&lt;/a&gt;&lt;br/&gt;&lt;a href=&quot;http://www.nihilogic.dk/labs/canvas_sheet/HTML5_Canvas_Cheat_Sheet.png&quot;&gt;PNG image&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Besides a few minor corrections the only significant change is that &lt;code&gt;createPattern&lt;/code&gt; and &lt;code&gt;drawImage&lt;/code&gt; can both take &lt;code&gt;HTMLVideoElement&lt;/code&gt;s now. &lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.nihilogic.dk/feeds/6131100952323010786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nihilogic.dk/2009/05/canvas-cheat-sheet-update.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/6131100952323010786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877325777086061039/posts/default/6131100952323010786'/><link rel='alternate' type='text/html' href='http://blog.nihilogic.dk/2009/05/canvas-cheat-sheet-update.html' title='Canvas Cheat Sheet update'/><author><name>Jacob Seidelin</name><uri>http://www.blogger.com/profile/04783658679191587047</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_OjchJpvqFiw/SE2FFZozX8I/AAAAAAAAAIc/8ZmxXQ-eJYg/S220/me.png'/></author><thr:total>2</thr:total></entry></feed>