I'm Jacky, a Computer Engineering student from the University of Waterloo. I am passionate about beautiful software with emphasis on fullstack development, data arts, and machine learning. Previously, I have been working at A9 to improve Amazon's visual search though machine learning. Before that, with Flipboard creating tools for user engagement, activation, and retention. When not writing software, I find myself crafting things on Instructables, writing reviews on Yelp, and posting about things that inspire me on tumblr. Let's make something together.


Noise accelerated particle systems

Spaces Above Us

There is beauty in seeing something difficult to understand. I think sky-boxes fall into this category. After all, very few people have a knowledge of it, many people have secretly seen it, yet no one thinks twice about it. If you’ve ever played a older generation first person shooter, or anything within a last generation 3D world, chances were, you were inside a sky-box. A sky-box is designed to emerge the user in beautiful backdrops without rendering complex objects. The clouds in your last match of Counter Strike are a product of static sky-boxes.

Implementation is easy with the introduction of three.js. At a high level, a cube is created and it’s six sides are mapped to a sky-box image, the camera is placed in the center of the cube. Attention needs to be paid with respect to camera controls and lighting. After your scene is complete, viola beautiful skies. Recently, I found time for housekeeping. So lets load our assets properly, add a composer for vignetting with wagner, throw in some fancy animations with the greensock tweening offerings and finally, we have something we can immerse ourselves in.

The demo can be found here.


Type Red

Papercrafted robotics

Jekyll and I

Unpacking after a long awaited move

Jekyll and I

My site has been redesigned from the ground up and is now hosted on Github Pages. This time I am psudo-blogging using Jekyll. For all of you who have not seen this domain’s earlier days, it was your typical parallax bootstraped portfolio site filled with encouraging words and marquee elements (not really). Moving away from the norm, and taking advantage of the web experience I have acquired over at Pivotal Labs, I am seeking refuge in this ultra minimalist design.

Jekyll is really light weight and simple to work with. Every post is formatted using markdown. The workflow is very simple. Make a new file in the _posts folder, and write in markdown. Run the command jekyll serve and it’ll be viewable on your local host.

One problem is you need to have ruby installed on your local machine. As rails devlopers know, installing ruby anything on a Windows machine is quite the heartache. Thankfully, I can use to work on a virtual linux machine within my browser from anywhere in the world. Site components are very similar to frontend ruby on rails layouts in syntax and conventions. I would highly recommend trying it out.


Beauty is bound up with symmetry


tree The beauty of plants has attracted the attention of mathematics for centuries. A question arose one day about how a tree would be drawn programagically. My first though was that it would be a recursive algorithm of drawing branches and child branches. This solution works but it offers complexity and is not general enough for re-use in similar applications. However, when i found this site, I was introduced to a whole new approach, the Lindenmayer System. The central concept of L-systems is that of rewriting. In general, rewriting is a technique for defining complex objects by successively replacing parts of a single initial object using a set of rewriting rules of productions.

After reading more into this, I decided I want to apply these concepts to a project. I decided I wanted this to be available on the web. In this way people would be able to learn about coding for an L-systems and experiment with their own designs. But, first I had to learn three.js. Learning about three.js was fun too, but this is another story for another project in my head. After a few iterations, the prototype is now done.


Creating art with code, a Processing adventure


Particular is a Processing experiment.

I recently discovered processing, a programming language, development environment, and online community. Processing serves as a software sketchbook. Programs written in this medium are called sketches because they are experimental pieces of algorithmic art. Much as you would sketch with a pencil on paper, i decided to write some sketches in this java environment. The result is this.

I implemented a very simply particular system with thousands nodes each having their own characteristics. Interactions on the canvas bring the particles to life. Using some basic physics, the effect I got is incredibly dramatic and smooth. I haven’t experienced such immediate gratification since discovering Mandelbrot and Julia sets in grade 10.

Processing turned out to be very popular. It has a JavaScript port which makes it easy to share sketches on the web. Khan Academy’s programs written by students also uses a variation on processing.js for their online programming [exercises]. I decided to port my java version here as well.