This project created a server with a web interface that takes an image URL and converts it to ASCII art. The server spawns worker threads and distributes incoming connections across them to allow concurrent processing. It also experiments with the new proc_fd interface and the ability to pass file descriptors to a different process.
This is a simple shell script that drops the user into a temporary folder. It allows users to run small experiments without worrying about disrupting their folder structure. The script supports keeping the temporary folder afterward and naming the session.
Raspberry PI Remote Display Server
December 2021 | Python, Flask, LCD display
Designed interaction between a web server and a hardware LCD screen
Allowed easy management of remote display with real-time monitoring
Implemented a simple database for swapping previously displayed images
December 2021 | Micro-controller, Keyboard, Soldering
I built my own keyboard using the Ferris Sweep 34-key design. I used a nice-nano microcontroller along with the ZMK firmware to support Bluetooth connectivity. The link above points to the ZMK config I used during the build.
Implemented the FM-index algorithm with ideal time complexity
Applied optimization such as loop unrolling and compression to minimize cache miss-rate
Achieved 41x runtime efficiency compared to the naive implementation
Adversarial Example Generator
July 2019 | Machine Learning, Python
Adversarial examples are inputs that are incorrectly identified by machine learning models. This project aimed to create a model that could automatically generate adversarial examples.
This project was built at AIS3 2019 and won the Best Project Award.