Personal Projects

3D rendering of an empty water glass on a wood floor

Tesserace: 3D Path Tracing Test

[2014, JS] Works in browsers with WebGL enabled. Uses GLSL mainly for the path tracing, and has fairly realistic light transport (not currently spectral or polarized).

Screenshot of Sudog showing a sudoku pattern

Sudog: Sudoku solving assistant

[2008, C++, Linux] Highlights common human-understandable patterns to eliminate candidates, using strategies up to swordfish/y-wing/coloring. Includes a command-line solver that outputs postscript or SVG step-by-step solution guides, and includes a GTK+/Cairo user interface for interactive solving.


Browser-specific content using Canvas quirks

Using edge-cases in HTML5 Canvas implementations, it's possible to create images that are different on most browsers without querying any browser information (via browser detection or reading Canvas pixels).

Not only does this allow creating unique images (try viewing the image to the left on other browsers), but it's possible to craft the ability to decide what to show for each browser.

see demo...


Black-and-white image that averages to exactly in-between for every circle of the radius shown

Flattening Convolution

Imagine someone tells you of a magical landscape where everywhere you go, the average elevation within 1km is always the same. Is there any way this landscape can have hills?


Additive Subset Picking

How can we choose a subset of $\{1,\ldots,n\}$ with as many elements as possible such that the sum of any two elements is distinct?



Four quirks that can differentiate between popular browsers

Canvas Browser-Specific Quirks

Currently, there are a number of HTML5 Canvas edge cases that display differently on different browsers. This is a list of all quirks that I've come across so far in Scenery development.