On this site, I continue to document all of my experiences, both technical and nontechnical. These experiences have formed me in a way that will help me be an asset on any development team.
Here are some selected images from past projects. Click on an image to be taken to the relevant repository.
Double click to get another rotating hypersolid: click to rotate.
Dynamic Programming Visualization, for Dice Game.
Interpreter/Compiler for a language of my own specification and IDE
Polygonal 3D Rendering along with procedural content generation
Mandelbrot Set Generator
Simulation of partial differential wave equations
Minimax Chess AI, with Alpha Beta Pruning
Second ray-tracing rendering
Number theory problem.
Control music through hand gestures.
The alarm clock that donates $1 to charity for hitting snooze.
VR tool to present Graphs of 2 dimensional slices of n dimensional functions and help present intuitions of higher dimensional geometry.
A soft plushy controller to help relieve stress with video games..
Bored in lecture: convert the lecture to a responsive website!
Building quantitative tooling using data management tools like Python, SQL, and domain specific tools in order to better inform traders decisions around risk.
Part-time web developer for UC Berkeley Student Tech Services: identifying key features, improving user engagement and experience, and designing backend/frontend integration with client’s vendors.
Assisted a nuero-radiologist in order to build a model of brain temperature based on DTI (Diffusion Tensor imaging, a way to quantify the orientation and behavior of fibers) data and also worked in data entry for a longitudinal study on Parkinson’s disease. Part of the training included HIPAA compliance and a discussion of ethical processing of patient data.
Led FRC team 1168 to its first championship banner in its 14 years by writing software for tele-operated and autonomous navigation and supervising team logistics, including starting our first-ever off-season training sessions.
Volunteer taught online classes to middle school students in the United States and the proceeds would go towards scholarships for the underprivileged in India.
Within 24 hours, learned fundamentals of Python Flask and web architecture to build a Web API, which allowed clients to verify an RSA signature against a public key. Concurrently, assisted on a pair of projects. One used OpenCV and a convolutional neural network to automatically output HTML from a website sketch, and one counted cells from a microscope image.
Collaborated on an interactive phone-bot using Twillio's natural language processing API and on a website to improve our response to natural disasters.
Implemented a dynamic programming solution which would use Bellman’s equation to create a near-optimal strategy to the given non-deterministic game of imperfect information. The bot ranked 11th against a competitive group of 124 others.
Wrote a pure Java (no libraries) implementation of a minimax AI, which would play Chess and other deterministic games (Reversi, tic-tac-toe, etc...) by solving out a game tree out to a finite depth.
Wrote a fully-functional interpreter for a “Turing-Complete” language of my own design, and co-wrote a set of packaged development tools to allow users to work with this language and other “esoteric languages”.
Wrote a pure Java implementation of a 3D rendering engine where the camera has all six necessary degrees of freedom along with code to provide varying scenery, including procedurally generated terrain (perlin noise).
Within a 36 hour Hackathon (PennApps), co-built a system to allow a user to control a Spotify Playlist with a number of gestures, and built an LED Glove to sync to the beat of the song being played.
I enjoy puzzles of all kinds, and I've explored this in a number of different ways ranging from Game-Theory for board-games to solving shortest-code challenges ("code-golfing") on this StackExchange, and I've spent a number of different Friday afternoons doing recreational mathematics.
In a similar vein, I really enjoy reading academic satire. This years iteration of SIGBOVIK, a satirical conference out of Carnegie Mellon, features some excellent "scholarly research" including a chess engine that does not know where it's own pieces are, as well as an article I wrote "proving" "P = NP" by running away from problems and redefining my cowardice as an "approximation scheme."
After a long day of tiring myself out trying to solve these problems or making sense of pointlessly elaborate humor, I have two ways to "unwind". The first way is watching/reading Dystopian and Sci-Fi fiction, but the second is distance running.
While it's true that most of the papers I've typeset are actually just satire pieces for CMU, I'm really interested in CS theory, and I'm openly recruiting for research assistant roles or part time teaching positions in fields relating to Computer Science, Math, Statistics, or Data Science.
As a teacher, I believe my job is to help not only provide formalisms that lead to a correct answer but also (and more importantly), provide an intuition for why this approach matches our intuitive reasoning. As I evolve as an instructor I think my work will start to reflect this ethos more and more, but for now, and I'll have more academic papers and course handouts to share here, but for now I'll share a worksheet I made for CS 70 (Berkeley, Discrete Mathematics and Probability Theory) along with it's answer key .
For SIGBOVIK (a satirical conference out of Carnegie Mellon) I was working on a framework for "reluctant proofs" these are proofs such that reading the entire proof is both necessary and sufficient to solve a given NP complete problem. The core primitive in such a proof is that a series of bits with the last one chosen so that the xor of the bits of the bits encodes a bit, look like a series of Bernouli random variables, and the encoded value can only be recovered with all of the bits. However, this left an open question: how long is the minimum witness length for Circuit sat? This took me down an interesting rabbit hole of a relatively interesting result: Conditioned on ETH the minimum witness string for Circuit SAT is ((1 - o(1)) * n) ( proof! ) Please note that the write up is quite informal, but was more of a really fun hobbyist project.
These images are irrelevant to my abilities as a software developer. Instead, these pictures capture moments I found particularly satisfying for any reason: big or small. I hope these images will capture these little memories in a persistent way and serve as an outlet to show you who I am.
Simply put, I hope to build more of these moments (no matter how silly) at my next employment or educational opportunity.
First day I could call myself a Cal Bear!
Our school mascot
Organized Chaos: It's fun!
Indian Festival of Colors: Holi
I like climbing!
This is a rabbit.
Professors are accessible, but very tall.
High School Graduation
Colleagues helped make my birthday special!
Houston, we have some legacy vacuum chambers at the space center.
An alpaca hanging out with me before finals.
Met a fun georgia tech team at hack MIT!
Tim the beaver, is just as cool as Oski.
Sometimes you have to climb a tree.
It's important to acknowledge the resources we use, especially when building software. This site was built using Bootstrap. In particular, I adapted this template. Both the template and the Bootstrap framework are licensed under an MIT License.Artist's Credit: Stephanie Bie helped out with some of the art on the site. More to come.