As a programmer, I am a generalist who can work on most anything from low-level IoT and compilers to distributed systems in Kubernetes and Nomad. I have a few years of experience in building web apps and in open source, with different tech stacks. I like learning and I am always learning something. As a result of that, I know a bit too much of Python. I have been interested in functional programming and programming languages for a while and I’ve gotten good at writing Haskell/OCaml/Scheme. Recently, I have been exploring interactive theorem provers such as Coq, and dependent types. Adjacently, I have also started taking some interest in math after school.

I also self-host a lot. You can find what I self host in this post.

Traditionally, my way to solidify what I’ve learnt is to build something with it. As a result, in the past, I have built a DNS server from scratch, an SMTP server, a Python interpreter, and implemented coroutines in Python. Recently though, I have also been trying out writing about what I’ve learnt as a way to do that. Most often, I’ll start with implementing something and then write about it. I’ve found that that is the most thorough approach to learning new things.

Besides tech, I also read random fiction/philosophy, play chess, and enjoy art. I’m lazy when it comes to reading, so I stick to only those books that are most gripping to me (or those I listen to as audiobooks). My favorite reads have been Dune, Kafka on the Shore, and some of Camus' works.

Interesting Projects:

Here are some of my personal hobby projects that I find to be cool:

Mathbox [2023]

Math tools to make my study easier and more interesting. Includes a subset-of-Scheme interpreter.

JavaScript, Svelte

OS in Rust [2023]

An operating system in Rust. (Following tutorial). And a snake game written in the Kernel (my own addition).

Rust, Operating Sytems

autosaved [2022]

Never lose your code accidentally

Go, Git, Command line [2023]

curl -o .gitignore

Linux, Bash, Caddy

minesweeper [2023]

minimalist, old-school minesweeper. purely client-side

JavaScript, HTML, CSS

kutty (at work) [2022-2023]

Building web UIs in pure python

Python, AST, composability. Elm-esque?

capstone (at work) [2022-2023]

Framework for authoring and serving guided projects

Python, Flask, Nomad, Redis, Task Queues, PostgreSQL, HTML/JS/CSS

fossclub [2022]

Flexible reward badges for FOSS contributors

Python, Django, APIs, UI design

khansama [2022]

Clean UI for recipes

Python, Flask, JavaScript, VueJS,, UI

dns from scratch [2022]

My own implementation of a DNS server with 0 external dependencies in Go

Go, DNS, Reading RFC

metapy [2022]

A (~kindof) Python interpreter in Python – without using ASTs or bytecode

SICP, Python.

wizard chess [2019-2020]

Blindfold chess in Google Assistant

My first showcaseable hobby project.

Python, DialogFlow, Flask, Static Typing, Clever Logic

devtime [2020]

Plugin for devs to track their coding time

Python, Flask, VSCode integration, UX, Ingenious Auth Systems

kaspy [2023]

chess engine named after one of my favorite chess players


Other contributions

Besides these, I have also contributed to some FOSS projects in various capacities, and volunteered to build and maintain software for some non-profit communities I like. I have also volunteered to do non-technical things in organising events.

Talks and workshops:

Sometimes I talk.

Volunteer(ing/ed) at:

FOSS Contributions:

  • small contributions to different projects.

Miscellaneous Flex

  • I won Google Code-in contest in 2019 and won a trip to Google HQ in SF. Sadly, COVID hit in at the same time and I couldn’t go. [Late 2019-Early 2020]
  • I won 1st prize at the DotSlash 5.0 hackathon conducted by NIT Surat, with a team of one :). I built autosaved [Jan 2022] during this hackathon.
  • My team won the Best FOSS Hack prize at the OSDHack ‘22. We built fossclub. [Jan 2022] hackathon.
  • I won 2nd prize at the Mumbai Hackathon, again as a solo participant. I built Khansama. [Apr 2023]
  • I have written a DNS server in Go from scratch with zero dependencies. This wasn’t a full-blown server but it could do the basic serving of all kinds of SOA, A, and CNAME records. I had to implement the header encoding by hand which was challenging.
  • I have also written an SMTP server from scratch. To learn about it.