sure, let's talk about it.
About Me
Hello There
Introducing myself is hard; I never know what to say. It's hard to talk about myself without either feeling that I'm bragging or feeling that I'm a failure. Or, for the less technically inclined, boring you with vacuous innuendos on categories and functors.
What do I do?
In specious phrasing, I tell computers what to do. I speak Python, Haskell, and C++ well. My Rust is rusty 🦀, but I am working on it. I am learning new ways of figuring out what to tell computers to do, and occasionally help other learners pick up the whats and the hows.
Most recently, I am learning and doing research around the applications of deep learning in computer vision. I also have interests and experiences in reinforcement learning, natural language processing, database systems, high-performance computing, and functional programming.
I'm also a hobbyist designer.
I am currently a student at Dartmouth College. In the past, I have been at Y Combinator, Carnegie Mellon University, and Starehe Boys' Center & School.
For more about myself, read on.
If interested in something particularly, let me know.
Fun Facts
Stats & Languages
What am I Listening to?
Work Experience
Some Things I've Built
Other Noteworthy Projects
Linear Regression Classifiers
Using ridge regression and lasso regression models to find an optimal learning strategy for a given set of data.
May 02, 2022Gradient Descent
Using regression models to classify provided data. The models are not pre-trained, se we use gradient descent to find the optimal parameters for the model.
Apr 21, 2022Position-Based Dynamics
Using a position-based system with constraints (instead of the more common mass-spring model) to simulate bodies. The method, as described in this paper, offers several advantages over the mass-spring model including being more generalizable to other scenarios and requiring less computation to simulate a body.
Mar 14, 2022Rigid Body Simulation
We use rotational dynamics to simulate a rigid-body helicopter, using rotor blades to generate lift and thrust. We use the Euler method to numerically integrate the equations of motion.
Feb 14, 2022Smoke Simulation
Using Physics-based simulation to simulate a fluid-flow system. We use the SPH method to simulate the Navier Stokes equations for smoke. We also apply the Vorticity confinement method to simulate the vorticity of the fluid. To reduce the computational space,we use a grid to store the fluid particles.
Feb 13, 2022Particle Simulation
Using Physics-based simulation to simulate fluid and particle systems.
We use the SPH method to simulate the Navier Stokes equations for fluids.
For particles, we use positional indexing to efficiently detect collisions and propagate forces between particles.Jan 27, 2022Hair Strand Simulation
Using Physics-based simulation to animate a hair strand using connection and bending constraints. The simulation is implemented in C++ using the OpenGL framework.
Jan 20, 2022Logic Algorithms
Using GSAT and WalkSAT, two common logic algorithms, to solve problems expressible as first-order logic clauses. In this particular case, we solve sudoku puzzles, but the method is generalizable to any logic problem.
Oct 21, 2021Constraint Satisfaction
Using backtracking and forward-checking to solve constraint satisfaction problems such as map coloring and circuit placement. We use heuristics such as least-constraining value, most-constraining variable and minimum remaining values to intelligently narrow the search space.
Oct 13, 2021Informed Search
Using informed search techniques such as A* search and Greedy search and heuristics such as manhattan distance and euclidean distance to navigate a robot through a maze with obstacles to a goal location.
Oct 03, 2021Uninformed Search
Using uninformed search algorithms such as breadth-first search and depth-first search to search the solution space for elementary problems such as the 🐔 and 🐶 problem (we wish to get x chicken and y foxes across a crossway with limited carriage capacity without leaving any chicken unattended with the foxes.
Sep 25, 2021Data Structures
Efficient implementations of various data structures in C.
A bag stores unique items without duplication. A set stores unique key-value pairs without duplication. A hashtable mimics the set, but uses hashing with chaining for improved efficiency.
May 13, 2021Command-Line Utilities
Three different command-line utilities written in C: chill calculates the chill factor of a given temperature and wind speed. words efficiently prints out the words in a file. histo prints a histogram for a stream of numbers.
Apr 25, 2021Bash Scripting
Hacking our way out of various scenarios with bash scripting.
Includes processing streams of data using sed, matching string patters in files using grep, extracting bits of data from files using head / tail, and more.
Apr 05, 2021Collaborative Editor
A collaborative editor on shared canvas. Multiple users can connect, and each sees changes in real-time as they are made. We use mutexes and locks to enable concurrent access whilst avoiding data races and deadlock pitfalls such as mutual exclusion, hold-and-wait, circular wait, and no preemption.
Mar 07, 2021Parts-Of-Speech Tagging
A bot that uses hidden markov models to tag parts of speech in a sentence. We use the viterbi algorithm to generate a sequence of tags for the sentence keeping in mind the tag probabilities for each word and the transition probabilities between tags.
Mar 02, 2021Huffman Encoding
A program that encodes text using a lossless compression algorithm. A frequency tree is built from the text. Thereafter, binary codes are assigned to each character having the most frequent characters get shortest codes.
Mar 01, 2021Actor Network Semantics
The infamous Kevin Bacon game; given any two actors, find the shortest social connection path between them. We use breadth-first search and depth-first search as the two strategies to find the shortest path (favoring BFS).
Feb 05, 2021Efficient Spatial Collision Detection
Program to efficiently detect collisions between blobs in 2D space by using {quad-trees] to partition the space into smaller regions and index which blobs are in which region.
Jan 29, 2021Cam Paint
Interactive program that allows the user to draw on a canvas using their webcam. The program detects the color of the paintbrush and draws the path of the brush on the canvas.
Jan 17, 2021Campus Pathfinder
An interactive program that renders locations on a campus map and highlights the shortest path between any two points the user clicks on. We use breadth-first search to find the shortest path.
Nov 02, 2020City Demographics
An interactive program that processes provided raw data about world city populations and other important metrics and renders the cities on a map highlighting standout locations or other interesting data-points.
Oct 04, 2020Astronomy Simulations
A Physics-accurate simulation of mass bodies (stars, planets, etc.) in a 2D space. The program uses the PyQt5 library to display graphics and allows the user to arbitrarily add more bodies to the simulation by clicking, adding bigger bodies by holding for longer, etc.
Oct 02, 2020Pong Game
An interactive GUI game of pong that uses the PyQt5 library to display graphics and handles user inputs, detects collisions (for the game), and tracks scores as well as the high score in the current streak of games.
Sep 23, 2020