Blog.JS
The lightest-weight, easiest, most customizable blogging platform you'll ever see.
- Add posts with raw HTML for maximum customizability
- Automatically adds urls slugs, allowing for direct navigation to a post
- no reloads mean that going from post to post to listing is insanely fast
ElectWise
HDFS secured online voting system for large scale elections that allows voting from a computer, tablet, or phone
- Administrator interfaces allow for creation and editing of election criterion
- Voting results in bucketed real-time results, and can be completed in under 5 minutes
- Candidate portal ensures every voter has accurate, representative information about each choice
LibMe
An entirely online library system for handling books
- Hold system ensures that books are held books are immediately checked out upon return
- Admin and User interfaces ensure a 360° experience for a library
- Keyword searching by partial name, author, or ISBN makes it a breeze to find a book
Expenser
A progressive web app for tracking month-to-month expenses and monitoring spending habits
- Easy interface to edit/add expenses with a name, price, and date and have it update in real time
- manifest.json ensures the app is a PWA, and can be downloaded on a phone, tablet, or computer.
- Series of useful graphs allow intuitive understanding of spending habits.
Online Debiaser
A classifier for removing bias from trained machine learning in Fairness, Accountability and Transparency(FAT*) models in the online setting
- Provides the necessary liveness guarentees to prevent freezing of the production model
- Provides the safety guarentees to ensure that we are never more epsilon-biased than our threshhold
- Visualizes the difference in class-wise accuracy via tensorboard charts
Skynet Security
A light/sound based security system using object detection, image classification, and proximity detection on a raspberry pi
- Tensor Flow image classification and object detection
- TFMini - Micro LiDAR Module achieves real-time and contactless distance measurement
- Threshold Frame created from the high contrast and difference frames
Dogstagram
A social media/image sharing platform with a twist: image classification prevents upload of any image other than dogs
- Tensor Flow Image Classification assures "dog" tag is set before uploading the image
- Dashboard and friend system allows users to see what other users they follow are posting
- All the usual options are there: Add, Delete, Modify, and caption photos
Sudoku Solver
Deterministic non-polynomial time sudoku solver written in haskell
- unsolved puzzle can be pipelined in via a seperate text file, or inputted directly into the program
- Handles non-unique cases by returning the first of many possibilities
- Though the algorithm efficiency is non-polynomial, efficiencies mean it solves in under a second
Checkers
The classic game of checkers with a special algorithm to calculate all possible jumps for a given piece
- Handles the functionality for 'kinging' once a piece reaches the opposite side
- Implements a two-player turn-based version of the game, for quick and easy play with a friend or against yourself
- Calculates all possible available moves for a given piece, including chained-jumps
Chess
The classic game of chess with a special algorithm to calculate all possible moves for a given piece and the beginnings of an AI
- Calculates all possible moves for a Pawns, Rooks, Queens, Bishops, Knights, and Kings, including special considerations for en passant, and potential checks
- Working on a basic implementation of the mini-max algorithm for an AI opponent, with a depth up to 10.
Connect-N
Why play connect-4 with an 8x7 board when you could play connect-10 with any sized board?
- The playing board can be any size, allowing for unique strategies beyond the traditional connect4 strategies
- Change the number of connections necessary to win(defauls to 4, but can be as large as the min of the number of columns and number of rows).
- Handles the win-conditions for rows, columns, and diagonals automatically for the specified number of connections.
Face-To-Face Object Detection Benchmarking
An implementation of Convolutional Neural Networks, Histogram Oriented Gradients, and Haar Cascading Classifiers, as well as a benchmark method for them
- Implements real-time facial detection(as well as mouth and eyes) through Haar Cascading Classifiers and your webcam
- Measures the accuracy, precision, and recall and time differences between Haar, CNN, and HoG
- Implemented Prinicipal Component Analysis(PCA) and Support Vector Machines(SVM) to break recongized faces into eigenvectors
Dots and Boxes
Using a node and graph data structure instead of a grid, try to create more boxes than your friend!
- Clicking between any two nodes creates an edge that is 1/4 of a box
- Colors any square completed by a player, and gives that player another turn
- Calculates in real-time the score of each player
Minesweeper
The classic game of minesweeper with many additional features - my take on a recursive revealing algorithm
- Recursive algorithm first randomly places the specified number of bombs, and then generates the values of each square from that
- Settings allow maniputation of the number of rows, columns, and the number of bombs
- Right clicking on a square marks it with a flag, preventing it from exploding
Rubiks Cube
my take on a functioning Rubiks Cube model, using CSS shaders controlled with a mouse
- Shuffle functionality allows a user to quickly simulate any number of turns in order to try and solve it
- Solve button immediately resets the cube back to its solved state
- A series of anchors allow for a mouse click and drag to either rotate the whole cube, or make a turn
Sudoku
play randomly generated sudoku, create your own, or use the built in backtracking algorithm to have a board solved for you
- Backtracking algorithm brute force solves an inputted puzzle
- User friendly board allows keyboard controls and mouse controls to select and change the value of any square
Tetris
As a former compeitive tetris player(7th in the world!), I thought it fitting to recreate my favorite game and learn it's matrix arithmetic
- Uses linear algebra to calcluate how pieces should rotate as the fall, and how they 'fit' once they reach the bottom
- keyboard controls allow for easy rotation, hard drops, soft drops, and panning.
Unbeatable Tic-Tac-Toe AI
The classic game of tic-tic-toe for one or two players, featuring an unbeatable AI
- The mini-max algorithm with alpha beta pruning on a solved game means you cannot beat the AI
- Support for one player vs AI, or playing against a friend
- Automtically calculates wins, and tallys the wins, losses, and draws for each player.
FitNoter
A progressive web app for tracking workouts through sets, reps, and various exercises, as well as analyzing progress over time and personal records
- Intuitive graph page shows volume over time, exercise weight over time, and amount of volume dedicated to each bodypart in a week, month, or year
- Listing tab allows a user to easily enter in a new exrecise, assign it to a bodypart, and view PRs for each exercise.
- Enter in the sets and reps for each exercise done in a day(with date switcher), and see the total volume, sets, and reps.
Langton's Ant
A simulation of a two-dimensional universal turing machine with resultant complex behavior
- Simple settings allow for the adjustment of the number of ants, as well as the grid size, and number of steps
- The locations of the ants are randomized, and the shown behaviour demonstrates how rules build patterns
TimeIt
A simple timer with millisecond precision that calculates average times, originally made for speed-cubing.
- Calculates a running average, and an average of the last 5 and 10 trials for more data.
- Can be started and stopped by pressing any key, avoiding accidental misclicks that don't start or stop the timer.
Puzzles.JS
A series of puzzle games featuring A.I. opponents and two player support easy to embed in a website.
- Uses mini-max algorithms with basic alpha-beta pruning to implement a working engine opponent
- Play fun games with your friends or against a machine at any time
- Written as importable classes that can be declared in one line on any webpage