Attempting to Justify a New TV?



Simon C Page's Colourful Universe posters inspired me to make a javascript canvas particle-system in a similar style.

Click to launch demo
(Try left clicking or pressing space, press "p" to pause)

AR Toolkit Card

Last summer I graduated with my undergraduate degree amidst much celebration from my family. I wanted to do something special to thank them so I carted out AR Toolkit, Papervision 3D and Flex Builder to put together an augmented reality "thank you" card.

Visit the original page and play with it

Tech Demo: JavaScript Tyrian

screen cap
Launch JavaScript Tyrian Demo

These days if you head over to you can see Google Chrome's V8 engine doing all sorts of things you thought it was not JavaScript's job to do. Flash back to 2007, blogger and now chief creative officer at Spry Fox, Danc, released remastered sprite art from the 1995 Epic MegaGames shoot'em'up called Tyrian. Put the two together and you get this humble little number.

Obviously this is a work in progress. My scrap-built game engine runs spectacularly well in Chrome and can get far into the hundreds of sprites on screen before slowing down, but a level designer I am not. So, if anyone is interested in doing the design dirty work, drop me a line. I've created some level design tools with about a third of the sprites I have available loaded in and I put more in periodically when I have time.

Replace a Cracked or Broken Flip UltraHD Lens

Repaired Flip

I was recently presented with a dropped Flip UltraHD that had cracked its lens, or what I thought was a lens but technically has no curvature to it so is technically best described as a dust shield, guard or cover. Regardless, it's flat circular bit of glass 1mm thick and 20mm in diameter, exactly like a watch crystal, which you can buy for $0.88 (plus $9.19 shipping) from

Click through for directions on replacing the glass

Generating Normally Distributed Random Numbers in JavaScript

JavaScript's pseudo-random number generator Math.random() outputs what you want a pseudo-random number generator to output: a random number uniformly distributed between 0 and 1. Great, but say you are in a situation where you don't want every number to be equally likely, you want them evenly distributed about a mean. You want a normally distributed random number. To get this you can use the Box-Muller transformation on two uniformly distributed random numbers. Problem solved!

Click to launch demo
normal preview

In this demonstration I use the Box-Muller transformation on numbers generated by JavaScript's Math.random() and use the Kolmogorov-Smirnov test to compare the result against a normal cdf table generated by Mathematica to see if they actually come out normally distributed.

Streaming Video On Your Website

This article is for businesses who want to stream video on their websites and cannot use free services like YouTube, Vimeo or Revver because their content is to be strictly commercial or promotional. It will give you, business owner (or web master working for business owner), a sense of the bandwidth and space costs associated with streaming video on your website as well as the technologies involved.

Visualization of Undergraduate Grades

I was thinking today that now I have all my undergraduate grades and they represent the largest set of quantitative data I have about myself. So, I started analyzing them and thinking of interesting ways represent them. This is the first thing I came up with:

Grades By Department

"Triangulate" Algorithm in Javascript

Now that the semester is over I thought I would update my nifty Javascript polygon triangulation demo which I first created in February of 2009 as practice for a computational geometry class and promptly didn't touch for a year and a half. It is now interactive (it allows you to draw your own polygon), comes with examples (those that I remember from the class) and works in all modern browsers thanks to the magic of jQuery and excanvas. jQuery is far and away my favorite Javascript library for doing anything and excanvas allows Internet Explorer to join the HTML5 canvas tag party. For the next version of this thing I would like to have an option to explain the ear-clipping algorithm it uses as it goes through rather than just showing it in action.

Check it out at my Stony Brook site.
an example triangulation

Rogue Dead Guy Ale

Dead Guy

About a year ago I set myself the task of getting to know a beer per week. Two weeks later I realized that wasn't such a good idea and scaled it back to about two beers per month. I currently have 18 types of beer in my little log that I hope represent a broad enough range to get me started learning how to appreciate beer. For now, I'm going to pretend it's time to get ready for May and finally try a Maibock I've heard so much about: Rouge Dead Guy Ale.