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 the 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!
I am often asked about my favorite languages. The ones I really enojoy programming in include:
- Python – for its simplicity, prototyping, and AI/ML
- Rust – for its performance and memory safety guarantees
- Shell script – for its POSIX compliance (portability) and program composition
- Haskell – for its succinctness, type system, and fun
This following is a list of software I have designed and implemented in a variety of languages. The software ranges from toy prototypes to more complex libraries with lots of moving parts. I also maintain tiny from-scratch impls for important algorithms and data structures.
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
- quickspell – A simple and minimal spellchecker
- string_view – An alternative std::string_view implementation
- 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
Go
- set - A generic set implementation for the Go programming language
Java
- os-scheduling - Process, memory, and disk scheduling simulations
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
- SpaceworldVR - Galactic VR experience (requires both Unity and Oculus)
- smart-jokes - "Smart Joke" generator
- walls - My wallpaper collection