Hi there

I am Abhay Vashist and welcome to my site. I am a software developer, and runner. Checkout some of my recent projects or visit the about page to learn about me.

MCP Learning

Last year, the Anthropic team introduced the MCP API protocol, an open standard for connecting external tools to Large Language Models. The major contribution of this protocol is that it converts an N (Number of different LLMs) × N (Number of different services) problem into a 1 × N problem. I am currently working in the Agentic Solution Space and became curious about the protocol. I would like to share my journey and experience. ...

April 21, 2025 · 3 min · Abhay Vashist

Events App

I build Events Web Application using FastAPI, React, and SQLite: Check it out Github Repo: Check it out What Technologies I used Python (Programming Language) FastAPI (Backend Framework) Typescript (Programming Language) React (Frontend Framework) Material UI (Styling) Tailwind CSS (Styling) Vite (Frontend Bundler) SQLite (Database) Docker (Containerization) CloudFlare (DNS and SSL) Github Pages (SPA Hosting) Digital Ocean (Backend Hosting) Github (Version Tracking) Github Action (CI pipeline) How did I build It I implemented the business logic in the FastAPI application. There are a total of four REST endpoints, for four tables making up the application. The database-based used to manage the application data is SQLite. The UI experience was written in Typescript using the react library. The Material UI library was used for icons, and components. The styling was done through the use of tailwind. ...

February 8, 2024 · 2 min · Abhay Vashist

Digit Recognition

I created a number writing tool that you can check out here. Technologies Used Github Pages (Hosting & Deployment) React (UI) Python (Prototyping) Pytorch (Model design and training) Typescript (Model prediction) Vite (Building Process) Codebase The entire codebase is available on Github. Design For this web application, I utilized a React frontend and implemented a LeNet model using Pytorch. The model was trained on the MNIST dataset. Project Structure model_exploration: This section covers the training and model exploration processes. notebook.ipynb: A Jupyter notebook containing the model exploration. LeNet5.py: The Pytorch definition of the model. ui: This contains the React application that constitutes the frontend with a standard React structure. Model Training The Pytorch-based LeNet model code can be found here. The model consists of 5 blocks, with 3 being convolution blocks and 2 being feedforward blocks. The activation function used for all blocks except the final layer is Tanh. Training was conducted on the MNIST dataset for 10 epochs, resulting in an impressive test accuracy of 98.6%. ...

March 10, 2023 · 2 min · Abhay Vashist

Maze Game

I build maze solving game using Pygame: Check it out What Technologies I used Python (Programming Language) Pytest (Unit testing) Pygame (Visualization & Keyboard Events) Pygbag (Python to wasm tool for Web Distribution) Github Pages (Hosting) Github Action (CI pipeline) Github (Version Tracking) How did I build It Codebase Github Repo Design The game is built using the MVC (Model-View-Controller) architecture and is based on Wesley Werner’s repository. I highly recommend checking out his repository for better understanding. ...

February 10, 2023 · 8 min · Abhay Vashist

Sorting Visualization

I build a sorting visualization tool: Check it out What Technologies I used Github Pages (Hosting & Deployment) D3.js (Visualization) Javascript (UI & Sorting Logic) HTML (UI) CSS (Styling) How did I build It Code All of the code available on Github. Data Object The SortData type serves as a wrapper that contains all the necessary information for visualizing the sorting algorithm. type SortData = { init_index: number, value: number, color: string } Data Validation and Object Creation Helper functions The validateData function validates the user input data to ensure that it is in the correct format and can be processed. The function checks if the input string contains only numbers and commas, and returns an error message if it does not. The convertData function takes the validated input string and converts it into an array of numbers. It splits the string by commas and converts each substring into a number. It returns an error message if the conversion fails. The arrayToSortData function takes a number array and converts it into an array of SortData objects, which are used for visualization. The function assigns a init_index to each data point and sets its value, and color. function validateData(userInput) { if (userInput.length === 0) { return false } else if(!(/ ?([0-9]* ?,)/.test(userInput))){ return false } else { const data = convertData(userInput) for (let val of data) { if (val === undefined) { return false } return true } } } function convertData(userInput) { return userInput.split(',').map(element => { return Number(element) ? Number(element) !== undefined : 0; }) } function arrayToSortData (nums: number[], color: string) { let data: SortData[] = [] nums.map( (num, index) => { data.push({init_index: index, value: num, color: color} as SortData); }) return data; } Visualization D3 is a javascript visualization library build on top of Web Components. The library provides a lot of helpful components for generating different graphics. I would highly recommend you check them out for some next level interactive visualizations. ...

December 29, 2022 · 3 min · Abhay Vashist

Viola-Jones Algorithm

Viola-Jones Algorithm Implement the Viola-Jones Algorithm for rapid face detection in python from scratch. First developed a feature extraction script, which extracted 2.5 thousand features from a 19 by 19 grayscale image. I applied the feature extraction script to a 2000 image of non-faces and 500 images of faces. I implemented the AdaBoost algorithm through the python multiprocessor module, leading to a decrease in execution time by 20%. I ran 10 rounds of the algorithm to achieve an empirical error of 67% on the testing data set. Feature manipulated the cost function on the algorithm to priories false-positive, which led to a 5.4% false-positive error. ...

November 29, 2019 · 1 min · Abhay Vashist

PPG Signal Extraction

PPG signal Extraction Used Matlab to extract the RPG matrix for a single frame from a 720p video file with a duration of 10 to 15 seconds. The RPG matrix was converted into gray-scale single value matrix to simplify the calculation. The dimension of the gray-scale matrix was changed to focus on the area of interest to increase the computation time of the program. The gray-scale signal was extracted from the video and was studies in the frequency domain. An IIR filter was applied to the single to extract the PPG signal. ...

December 15, 2017 · 1 min · Abhay Vashist

Core Renal biopsy Project

Core Renal Biopsy Project Worked on a team which design and prototyped a novel renal biopsy device. The device reduces bleeding from the biopsy by deploying a plug to replace the biopsy tissue. The team used a high-speed camera to understand the mechanics of the current biopsy device and effect of the process on the tissue. The team designed a CAD model of the device and used FFF(fused filament fabrication) 3D printed to prototype the device. A risk assignment was performed on the device to quantify the severity device failure and to develop appropriate experiment/testing process to ensure the quality of the device. ...

December 15, 2019 · 1 min · Abhay Vashist