Posted on

Table of Contents

This is a (incomplete)collection of projects that I've worked on until now.

Networking

DNS Server - This was my attempt working through a DNS Server challenge on Code crafters. It implements a DNS Packet Parser and a rudimentary server. Source Code

Multicaster - My homelab spans many VLANs each created with a specific purpose in mind. There are tools like IGMP Proxies and Avahi Daemon but they have few knobs to adjust and it's like opening a firehose of MDNS traffic from 1 VLAN into another. I wanted some thing that could be finetuned a lot more and decided to build this project. This is a MDNS Repeater intended to be used to make service discovery work across across L2 boundaries. Currently, It only supports MDNS but I eventually want to add support for DLNA / SSDP as well! Source Code

RDNS IPv6 - In most networks, It is easy to get the hostname for an IPv4 client by looking at the DHCPv4 Lease but it's not so easy to do that with IPv6 because the network might be using SLAAC(since DHCPv6 is not well supported). In such cases, It's difficult to get names of IPv6 clients. This is why I built a tool to solve this problem. It is supposed to run on the router. It looks at IPv6 neighbour tables and constructs a hosts file containing a map of IPv6 clients and their hostnames. Source Code

Programming Languages

Monkey Language Interpreter - A Monkey language Interpreter written in Rust. Source Code

Databases

SQLite Reader - This was my attempt working through the SQLite challenge on Code Crafters. I implemented a SQLite parser that could search records with / without an index and learned a ton about SQLite format in detail. Source Code

Computer Graphics

I have always loved Computer Graphics but never could spend more time on it.

I have implemented the 3 ray tracers from Peter Shirley's Books.

Raytracing in a weekend - Source Code

Raytracing the next Week - Source Code

Raytracing the rest of your life - Source Code

Conway's Game of Life - This is an implementation of Conway's Game of Life in OpenGL + Golang. Source Code

Eventually, I hope to do more in this space.

Websites

Wikipedia Viewer - It is a Wikipedia wiki Viewer that I built when working on freecodecamp.com's Front end Coding Challenges. Demo and Source Code

Random Quote Machine[INACTIVE] - This application shows Random Quotes from different categories. I built this when working on freecodecamp.com's Front end Coding Challenges. Demo and Source Code

Bots

Burnbit[INACTIVE] - This is a Telegram bot that converts Direct Download Links to Torrents. It takes a valid HTTP url from user, Downloads the file and creates a .torrent file that can be used with a torrent client. It is not live anymore and you can see the code on Github. Source Code

Imgur Bot[INACTIVE] - This is a Telegram bot. You can login to your imgur account and then this bot will upload any image you send to it to any album of your choice. Demo and Source Code

Cyanide & Happiness[INACTIVE] - This is a Telegram bot. You can subscribe to receive the daily comics or you can send it a message with text "random" to receive a random comic. Demo and Source Code

Games

Breakout - It is a HTML5 Game. Your objective is to break all the bricks by hitting them with the striker. Demo and Source Code

Microservices and APIs

URL Shortner[INACTIVE] - A URL Shortner Microservice that creates a short base62 encoded id for every url. It is written in Golang and uses SQLite to store urls. Demo and Source Code

Miscellaneous

Perceptual hash - A library to find the percent similarity between two images. It create a Difference Hash of both images and finds the hamming distance between those hashes to calculate the similarity percentage. Source Code

Onedrive Downloader - My Sister's course was distributed over onedrive which has terrible performance on my ISP. I wrote this tool to download shared onedrive directories all at once, Has multi threaded downloads and offers a hassle free way to download all the files Source Code

SHA256 - One weekend, I decide to read more about the ubiquitious SHA256 hashing algorithm that is used every where and decided to implement it from scratch. Source Code

Work in progress Experiments

Neptune - An Operating system written in Rust. The long term goals are to have it boot into 32 bit mode, develop a simple game engine for it and port DOOM to it. Source Code

The INACTIVE tag is for projects that used to work but not anymore either because I took them down and left the codebase on Github or the services that they were built around have changed over time or I have not kept them up to date.