1. I am currently working on optimizing some of the more processor intensive operations in Make Pixel Art, like the fill and zoom tools.  While the capabilities of HTML5 and the new canvas element are neat, there are some major headaches lurking in the details.
For example, though methods for quickly scaling canvas elements are provided by Javascript, these methods smooth the image while scaling.  There is (currently) no way to turn off this smoothing.  So, if I use the built in scaling methods, I turn my pixel art drawings into a blurry mess.
Thus, I have to write my own bitmap scaling routines.  Bitmap scaling is not particularly complicated, but it requires a lot of calculations.  Even though I am dealing with small images, the pixels add up quickly!   240x160 = 38,400 pixels to scale!  And each pixel is actually 4 bytes of data, and if I am scaling the image up to 10x, I have to process 1,536,000 individual data points.
This is all well and good in Chrome, where the Javascript is super fast, and I have all the processor I can eat.  But on my iPad, where I am hindered by a variety of factors, not the least of which is that Apple TURNS OFF the Javascript optimizations when running web apps outside of the main browser, I’m having trouble keeping things as responsive as I would like them to be.  I have written about 6 different scaling routines at this point, none of which do a reliably good job on complex images.
Of course, the whole point of Make Pixel Art is to make simple, low res images, so this doesn’t even matter 99% of the time.  But I am worried about the 1% of people out there who will draw amazing, complex drawings who will have to suffer whenever they try to zoom in and out.
The image above is an explanation of one possible solution to this problem - using some sort of matrix math to process the data, blasting the correct bits out into a vector.  My friend Allison, who studies advanced theoretical math, figured out the function necessary to do this.  Unfortunately, Javascript doesn’t really support matrix math natively, so I’d have to figure THAT out too.
If anyone out there in Tumblr land has any advice, please contact me!

    I am currently working on optimizing some of the more processor intensive operations in Make Pixel Art, like the fill and zoom tools.  While the capabilities of HTML5 and the new canvas element are neat, there are some major headaches lurking in the details.

    For example, though methods for quickly scaling canvas elements are provided by Javascript, these methods smooth the image while scaling.  There is (currently) no way to turn off this smoothing.  So, if I use the built in scaling methods, I turn my pixel art drawings into a blurry mess.

    Thus, I have to write my own bitmap scaling routines.  Bitmap scaling is not particularly complicated, but it requires a lot of calculations.  Even though I am dealing with small images, the pixels add up quickly!   240x160 = 38,400 pixels to scale!  And each pixel is actually 4 bytes of data, and if I am scaling the image up to 10x, I have to process 1,536,000 individual data points.

    This is all well and good in Chrome, where the Javascript is super fast, and I have all the processor I can eat.  But on my iPad, where I am hindered by a variety of factors, not the least of which is that Apple TURNS OFF the Javascript optimizations when running web apps outside of the main browser, I’m having trouble keeping things as responsive as I would like them to be.  I have written about 6 different scaling routines at this point, none of which do a reliably good job on complex images.

    Of course, the whole point of Make Pixel Art is to make simple, low res images, so this doesn’t even matter 99% of the time.  But I am worried about the 1% of people out there who will draw amazing, complex drawings who will have to suffer whenever they try to zoom in and out.

    The image above is an explanation of one possible solution to this problem - using some sort of matrix math to process the data, blasting the correct bits out into a vector.  My friend Allison, who studies advanced theoretical math, figured out the function necessary to do this.  Unfortunately, Javascript doesn’t really support matrix math natively, so I’d have to figure THAT out too.

    If anyone out there in Tumblr land has any advice, please contact me!

    posted 6 months ago on Jul 22, 2011 | Permalink | 4 notes

  2. In addition to kicking ass for our clients, we’ve been hard at work for the last couple of weeks on a new tool that we are launching today.   I am very proud of this launch because this is the first thing XOXCO has done with our new intern Damien, and in our new office space.

    Of course, we’re getting kicked out of our new office space today too, but that’s another story.

    The new product is called SendTab.  It’s for people like us who have a dedicated entertainment computer attached to their TV.  In short, it lets you beam links from your laptop or phone or ipad to the big screen.   No more searching for the wireless keyboard, no more screen sharing.  Just tap SendTab and BOOM, it’s there.

    Learn more and download SendTab here, or read our official announcement here, or check out Katie’s awesome photo of me using SendTab to send Sendtab from my ipad to my TV.

    posted 1 year ago on Aug 20, 2010 | Permalink | 24 notes

  3. I just launched some pretty new stuff for Helsinki Design Lab: Dossiers.  These are flexible, version-able collections of information about specific questions that HDL has posed.  As data is added, new “crystalizations” of the collection are published.  You can then scroll back and forth between versions to see how the project has evolved.
Behind the scenes, these are powered by a crazy drag-and-drop layout tool that allows Bryan to build these beasts.  I am going to shoot a screencast this week, because I am super duper proud of my work on it.
It’s going to be really interesting to watch these dossiers grow and evolve as the work on these projects continues.  I wish I had someone to track information about all the stuff I do so I could watch it evolve into a LEGO rainbow of data!

    I just launched some pretty new stuff for Helsinki Design LabDossiers.  These are flexible, version-able collections of information about specific questions that HDL has posed.  As data is added, new “crystalizations” of the collection are published.  You can then scroll back and forth between versions to see how the project has evolved.

    Behind the scenes, these are powered by a crazy drag-and-drop layout tool that allows Bryan to build these beasts.  I am going to shoot a screencast this week, because I am super duper proud of my work on it.

    It’s going to be really interesting to watch these dossiers grow and evolve as the work on these projects continues.  I wish I had someone to track information about all the stuff I do so I could watch it evolve into a LEGO rainbow of data!

    posted 1 year ago on Aug 19, 2010 | Permalink | 4 notes