Jonathan Ting

Personal Projects

PolyMul

The Fast Fourier Transform (FFT) is used for a vast number of applications, and one of them is multiplying polynomials in O(nlogn) time.

When my Algorithms course covered this, we weren't tested or expected to know the workings of this algorithm, but I wanted to get a better understanding of how it worked.

Check it out!
XKCD Comic
Source: XKCD

PicFilters

This project was created at a 24-hour hackathon as an extension of a class project along with someone I met during the hackathon.

I had been learning how to create a GUI in Java at the time, so I decided to apply it along with image processing algorithms I had learned in previous classes.

Check it out!
Applied Sobel Filter
Sobel filter on Cal logo

Miscellaneous

Brainf__k Interpreter

A small interpreter I created while running across this esoteric language.

Inspiration from browsing HackerRank.

The interpreter can either take a file or load an interactive session.

Ford Fulkerson

I had just finished the semester and the algorithm was still fresh in my mind.

However, so far I had only worked it out on paper and not in code, so I implemented it.

Maze Generator

I was lazing around during break doing some programming practice on the side for interviews.

I made a small program that generates a small maze of any size

Also, I experimented with using it for a reddit bot.

Class Projects

Raytracer

Raytracing is a method used to render images by sending out rays from a camera testing for intersection with objects.

Information gathered from these rays give a (not as accurate) representation of how light interacts with materials.

Check it out!
Generated image through raytracing
Example generated image

Bezier Subdivision

Bezier subdivision is a method in which to represent a surface using many bezier curves which are combined to form bezier surfaces.

Uses OpenGL to make it interactive (can rotate, translate, zoom, and toggle features).

Check it out!
Generated image through raytracing
Bezier subdivision on a teapot

Inverse Kinematics

Given an arm and instructions on how to move it, it is easy to make it form a path. This is forward kinematics.

Given an arm and a path, it is not so easy to generate the instructions to make the arm follow the path. This is inverse kinematics.

Check it out!
Inverse kinematics example
An arm following a path
Note:
I am not a front-end developer and actively plan to never become one.
Yes, I realize that the content above is not responsive to your browser size, and sorry I don't want to fix it :P