I love software engineering and programming languages. My college advisor, Dr. Alan K. Zaring, who himself was a college advisee of Daniel P. Friedman (the granddaddy of lazy functional programming), got me really interested in design and implementation of programming languages. This has led me to learn many programming languages from object-oriented to functional to logic to esoteric. But programming languages are no fun if one does not use them for implementing libraries and writing software!
This page is dedicated to some of the software I have designed and implemented in a variety of languages. Software ranges from toy prototypes to more complex libraries with lots of moving parts. If you are looking for my from-scratch impls, those are here.
I am often asked about my favorite languages. And while I do not have truly "favorite" languages, the ones that I enjoy programming in are Python (for AI/ML and prototyping), Rust (for top perf and reliability), Shell script (for POSIX and program composition), and Haskell (for fun).
Python
- ai - From-scratch impls of AI models, approaches, tricks, and more!
- bresenham - Derivation and implementation of Bresenham's Circle Drawing Algorithm
- covid-19-chatbot - GPT-2-based COVID-19 chatbot
- covid-19-network - Co-occurrence network for COVID-19
- galton - Multithreaded Galton board simulations
- icl-minima - In-Context Learning functions with varying number of minima
- llms-vote - Ensemble prompting for LLMs
- mnist - The Reproducible MNIST
- pixelation - Retro style game using Pyxel game engine
- profile-generation - A simple, on-the-fly user profile generation (with API)
- sat-sudoku - Python implementation of the paper "Sudoku as a SAT Problem"
- sim-to-real - VGG19 and Other Networks for Scene Classification
- snn-for-fsl - Text classification approaches using Siamese Neural Networks (SNNs)
- tic-tac-toe - A simple Tic-tac-toe game with the GUI and 3 levels of difficulty
Rust
- blockchain - A toy, Proof-of-Work-based Blockchain implementation
- huffman - Huffman's algorithm for lossless data compression
- chudnovsky - The Chudnovsky algorithm for calculating the digits of Pi
- pt - A prefix tree for English alphabet
- spell - Peter Norvig's Spelling Corrector in Rust
- wavepcm - Fast WAVE PCM file format encoder and decoder
C++
- bf - A zero-dependency, header-only, and minimal C++ bloom filter
- fun - A compile-time stdlib-less activation function library
- tensor - A fast, zero-dependency tensor library in under 1000 lines of C++
Haskell
- miniframe - Minimal data frames with relational algebra
- purity - A collection of various algorithms and data structures
Other
- arduino-stuff - Tinkering with Arduino
- blogplate - Simple, fully responsive web template for a blog
- dot - Configuration files and the setup wizard for *nix (UNIX-like) meta distribution
- LutherNavigator - The project that seeks to provide students a way to share their experiences abroad
- oniani.github.io - Personal website
- os-scheduling - Process, memory, and disk scheduling simulations
- quickspell - A simple and minimal spellchecker
- set - A generic set implementation for the Go programming language
- smart-jokes - "Smart Joke" generator
- SpaceworldVR - Galactic VR experience (requires both Unity and Oculus)
- walls - My wallpaper collection