I’m Kishore Ganesh. I love everything about Computer Science, from nifty discrete math proofs to more concrete systems-domains like Operating System to visual domains like Computer Graphics. I love building projects, especially in domains I’m unfamiliar with.

One of my favorite things to do is to dive into a new topic and spend multiple weeks building up expertise on it.

My most notable projects are:

  1. Jack Toolchain: Wishing to know how computers work on a low level, I followed the NAND2Tetris book and built a computer from scratch in a hardware simulator, along with a two-phase compiler and assembler for the same computer.

  2. NES Emulator - An emulator for the Nintendo Entertainment System from scratch using C++ and SDL. It can play many games like Mario and Donkey Kong.

  3. Path Tracer (ongoing): This project had many firsts: My first foray into Computer Graphics and my first time with Rust. I’m building a multithreaded pathtracer in Rust that uses Monte Carlo methods to approximate the rendering equation. I have implemented various geometric primitives (spheres, planes, meshes, etc) and realistic materials from Disney paper.

  4. CNN from Scratch: Implemented Convolutional Neural Networks from scratch in MATLAB. This was a team project where we spent multiple weeks poring over backpropagation equations and in the end the project cemented within us a sound understanding of the math behind Convolutional Neural Networks. Achieved 97.58% on MNIST.

You can check out the rest on my Github or my resume.

In a past life, I was a tech blogger.

Talks done

  1. A look into emulators: In this talk, I go over some interesting topics in the field of emulation, from the differences between HLE and LLE, general challenges in emulator development to the concrete challenges I faced in making an emulator for the Nintendo Entertainment System. Check it out here
  2. Inside Docker, peeling away the abstractions: In this talk I go over the Linux primitives that are used to achieve containerization, some useful system calls used to achieve this and the latter half of the talk goes over some interesting things I found in the runc codebase - the tool that actually runs your containers. Check it out here

comments powered by Disqus