Posts

Password generator

July 21, 2024
Self-hosted random password generator for the times when the "suggest strong password" option isn't available.

Wordle Clone

February 16, 2022
Just a fun personal project to see if I could clone the popular game, Wordle.

Connect Four

May 27, 2019
A Connect Four game with a minimax AI. It's not perfect but it should give you a run for your money.

Knight's Tour

May 18, 2019
A fun interactive solution to the Knight's tour problem.

Making SVGs work with CSS

August 14, 2017
I recently had a ticket to make the bell "fill in" when the user's mouse hovers over it. There was a simple CSS solution, but it required re-formatting the SVG to "play nicely" with the CSS attributes "fill" and "stroke". This is a simple explanation of the problems with the SVG when I received it and how to fix them.

Post-Earthquake Structural Evaluation System

May 7, 2017
After a major earthquake, inspectors and engineers risk their own safety to inspect buildings. This semester I worked with four talented civil engineers to develop an automated replacement to this process. Using an easily-installed, scalable, and web-connected sensor network, we can estimate building deformations following earthquakes, reducing risk by giving inspectors a new tool.

Dwinelle Navigator

May 5, 2017
Dwinelle Hall is a notoriously labyrinthian building on the UC Berkeley campus. Our project is a browser-based 3D representation of the building, complete with interactive directions between the many entrances, exits, and rooms.

Realistic Lighting Using Ray Tracing

March 7, 2017
Ray tracing is a way of simulating lighting as realistically as possible. In this project, I implemented some of the algorithms that make ray tracing both realistic and efficient.

Curved Surfaces: How do They Work?

February 24, 2017
Computers hold discrete information - ones and zeroes - so how can the likes of Pixar generate beautiful curved shapes? Bezier surfaces and polygon meshes are the data structures that allow programs to generate close estimations of smooth shapes. It was incredibly interesting to get into the details of these data structures.

Malthusian Population Growth in Matplotlib

February 15, 2017
In my final semester here at Cal, I am taking ECON C175: International Demography. It's a really interesting exploration of theories that try to explain trends in population growth and per-capita income. I made a particularly unique plot from Swedish census data that you might enjoy.

Navigating the Graphics Pipeline

February 9, 2017
Graphics concepts are fascinating! The project brought together many different math concepts (mostly linear algebra) to answer questions like "how do you map a texture to a surface?" and "how do video games efficiently render textures that are far away?". For this project, I dipped my toe into a very large (and at times, confusing) codebase and was able to fill in skeleton code to do very cool things. It gives me real appreciation for those who developed the first graphics engines without prior code.

Angular2 Lessons Learned

June 5, 2016
During my first week or so at IBM Watson, the UI team was working out whether to use React.js or Angular2. The design specification wasn't quite agreed upon yet so I had a chance to play around with tutorials for both. Here's what I learned.

Video Keyword Auto-Cuts

April 15, 2016
For the final project for the excellent class, CS194-26, Zachary Zeleznick and I wanted to stretch ourselves. We worked tirelessly through the final weeks of the semester to write a script that does something amazing. Given a video file, and a key word or sentence, our code allows the user to programmatically generate a "supercut" where the words spoken in the video match the requested text.

Auto-Stitching Panoramas

November 15, 2015
For the culmination of all that I had learned in CS194-26: Image Manipulation and Computational Photography, I wrote the code to seamlessly blend (okay, there are some seams) multiple images of the same subject based on the actual content of the image. Pretty amazing, right? Check out how I did it.

Colorizing 1900s Russia

August 23, 2015
For CS194-26, a class I took about image manipulation, our first project was really neat. Basically a guy in the 1900s in Russia knew that there was no colour film yet, but he took series of 3 photos, just filtering out red, green, and blue. And now with modern technology, we can take those images, line them up, and turn them into colour images. So for project 1 I wrote code to automatically line up the images based on an algorithmic measure of similarity called Normalised Cross-Correlation. We had to submit the project as a web page anyway, so I figured I might as well share it!

CS Scholars FAQ

July 10, 2015
After answering a lot of questions on the CS Scholars' Program, I just went ahead and made this FAQ page with my copied and pasted answers. Hope it helps someone.

WebDev for TRUST Center

May 30, 2015
Freelance work so professional and aesthetically pleasing that they asked me back twice.

CS61c: Proj4-2 Spec

April 13, 2015
Out of frustration with an unclear project description in CS61c at Cal, I rewrote and rehosted the entire thing.

CS61c: Proj1 Spec

February 19, 2015
In our machine structures class at Berkeley, we saw that the project specification page was rather ugly. Out of that sprang a fun and rather pointless competition to build the prettiest and most helpful version of the spec.