TalkersDoers.

sure, let's talk about it.

but first, let's build

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.

head shot

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


GitHub activity.GitHub activity.

Most-used programming languages.Most-used programming languages.

What am I Listening to?


What am I listening to?What am I listening to?


Work Experience

Researcher  @  D-RLab

Summer 2023

Some Things I've Built

  • Featured Project

    Relational Database App

    A relational database with a Python frontend and a MySQL backend. It is modeled for a collective of publishing houses and offers data stores and a command-line interface for querying and analyzing the data. It offers support for different user modes (author, editor, reviewer), and each user can opt into password authentication. Several automated events are handled internally — assigning and re-assigning editors and reviewers, auto-rejecting submissions that are not within the relevant scope, and accepting OR rejecting publications once all reviews are in.


    Collaborative project with Ke Lou.

    • Python
    • MySQL
    • Relational Design
    • Database Systems
    Relational Database App
  • Featured Project

    Robot Colocation

    A common problem in robotics is localizing a robot in a novel environment given sensor readings. This project uses hidden markov models — the forward-backward algorithms and the viterbi algorithm — to decipher where a robot most likely is in a maze given its immediate readings and what we know regarding the environment. Emissions due to sensor inaccuracies are also factored in .

    • Python
    • Markov Decision Processes
    • Robotics
    • AI
    Robot Colocation
  • Featured Project

    Intelligent Chess bot

    A chess bot that uses various strategies including minimax, alpha-beta pruning, iterative deepening, transposition table, move ordering, null-move pruning, aspiration windows, and quiescence search to maximize outcome against an opponent (human or otherwise).

    • Python
    • Adversarial Search
    • AI
    Intelligent Chess bot
  • Featured Project

    Logisim Processor

    A fully functional 16-bit CPU implemented in Logisim. All CPU components including ALU, registers, control unit, program counter, RAM, micro-sequencer, finite-state machine, and IO are implemented from basic gates.

    • Assembly
    • Circuit Design
    • Computer Architecture
    Logisim Processor
  • Featured Project

    Neural Networks

    As part of a publication exploring the emergence and the state of the art in machine learning and most-importantly the utilities and caveats that machine learning afford us, I implemented neural networks to demonstrate how predictions work in the context of simple classification and regression problems.

    • Julia
    • Neural Computing
    • Deep Learning
    Neural Networks
  • Featured Project

    Tiny Search Engine

    A hyper-efficient search engine that crawls webpages (whose domain can be restricted to a given subset) and indexes them, then handles user queries on the collection of pages, with results ranked by frequency. It also supports query modifiers such as AND, OR, and NOT.

    • C
    • Bash
    • Make
    • Web Crawling
    Tiny Search Engine
  • Featured Project

    Wordle, Grep

    Wordle and Grep replicas implemented in Haskell, a purely functional programming language.

    Wordle is a program picks a random five-letter word out of a corpus then lets the user guess the word, providing feedback at every iteration. The game is won when the full word is guessed, usually in at most 5 tries although my version allows playing in infinite mode.

    Grep is a program that matches a string prompt to a text-stream, e.g. from files. Basically, it's Google search for your local file contents.

    • Haskell
    • Cabal
    • Functional Programming
    Wordle, Grep
  • Featured Project

    Nuggets Game

    A multiplayer command-line game of nuggets. Players join over web sockets. The maze is revealed to each player as they and view it. The game ends when all the nuggets are collected, and we print a leader-board of the players' scores.


    Collaborative project with Alphonso Bradham and Zimehr Abbasi.

    • C
    • Bash
    • Make
    • Web Sockets
    Nuggets Game

Other Noteworthy Projects

  • Folder

    NoSQL App

    A blog server built with a Python frontend and a MongoDB backend. It supports registered users posting updates and comments, querying for posts and comments, and deleting posts and comments.

    Collaborative project with Ke Lou.

    Nov 03, 2022
    • Python
    • MongoDB
    • NoSQL
    • Database Systems
  • Folder

    Linear Regression Classifiers

    Using ridge regression and lasso regression models to find an optimal learning strategy for a given set of data.

    May 02, 2022
    • Python
    • Machine Learning
  • Folder

    Gradient 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, 2022
    • Python
    • Machine Learning
  • Folder

    Position-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, 2022
    • C++
    • Visual Computing
    • Physical Simulation
  • Folder

    Rigid 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, 2022
    • C++
    • Visual Computing
    • Physical Simulation
  • Folder

    Smoke 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, 2022
    • C++
    • Visual Computing
    • Physical Simulation
  • Folder

    Particle 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, 2022
    • C++
    • Visual Computing
    • Physical Simulation
  • Folder

    Hair 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, 2022
    • C++
    • Visual Computing
    • Physical Simulation
  • Folder

    Logic 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, 2021
    • Python
    • First Order Logic
    • AI
  • Folder

    Constraint 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, 2021
    • Python
    • Graph Search
    • AI
  • Folder

    Informed 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, 2021
    • Python
    • Graph Search
    • AI
  • Folder

    Uninformed 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, 2021
    • Python
    • Graph Search
    • AI
  • Folder

    Data 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, 2021
    • Bash
    • C
    • Linux
    • Data Structures
  • Folder

    Command-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, 2021
    • Bash
    • C
    • Linux
  • Folder

    Bash 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, 2021
    • bash scripting
    • regular expressions
  • Folder

    Collaborative 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, 2021
    • Java
    • threads
    • mutexes
    • web sockets
  • Folder

    Parts-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, 2021
    • Java
    • Markov Decision Processes
  • Folder

    Huffman 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, 2021
    • Java
    • Information Theory
    • Object-Oriented Programming
  • Folder

    Actor 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, 2021
    • Java
    • Graph Algorithms
    • Social Graphs
  • Folder

    Efficient 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, 2021
    • Java
    • spatial algorithms
    • quad-trees
  • Folder

    Cam 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, 2021
    • Java
    • image recognition
  • Folder

    Campus 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, 2020
    • Python
    • Graph Algorithms
  • Folder

    City 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, 2020
    • Python
    • Data Processing
  • Folder

    Astronomy 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, 2020
    • Python
    • Physics Simulation
  • Folder

    Pong 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
    • Python
    • Graphics Simulation
Show More404

What's Next?

Get In Touch

I am particularly excited to make new connections.
Ping me an email, or find me on Instagram, Twitter, GitHub, Behance, LinkedIn, and beyond.

I hope you're kind to the world, and I hope the world is kind to you.