Manan Karnik

Exploring how software really works, from operating systems to compilers and programming languages.

MS CS at Northeastern University, graduating May 2027.

1 2 3
manan@arch: ~

$ whoami

manan

$ cat focus.txt

operating systems · compilers · programming languages

$ ls projects/

egos-2k+/ checkpoint-restart/ boot-sector/ bevy_generative/

type help to see what else this terminal can do.

./about

I’m Manan, a Master’s student in Computer Science at Northeastern University in Boston, originally from Mumbai.

I like unwrapping abstractions and learning how the machine actually works. Figuring out what’s really going on under the hood is the fun part for me, which is why I keep ending up in operating systems, compilers, and programming languages.

I run Arch Linux (btw) with Hyprland, and I set up my desktop from scratch. I write and maintain my own dotfiles, and I’ve experimented with other setups too, like NixOS and its declarative configuration. My workflow is built around the terminal and the keyboard, and Neovim is my editor of choice.

My interest in game development started with playing computer games, and I make games in the Godot Engine and pixel art in Aseprite. I’m also interested in low-level graphics. When I have the time, I watch anime.

Manan Karnik

./education

  1. Sep 2025 – May 2027

    Master of Science in Computer Science

    Northeastern University

    GPA 4.00/4.00

    Programming Design Paradigm, Computer Systems, Operating Systems Implementation, Principles of Programming Language, Algorithms

  2. Jun 2024 – Mar 2025

    Postgraduate Diploma in Computer Science

    University of Mumbai

    GPA 9.59/10

    Data Mining, Machine Learning, DevOps, Blockchain Fundamentals, Natural Language Processing, Social Network Analysis

  3. Jun 2021 – Mar 2024

    Bachelor of Science in Computer Science

    University of Mumbai

    GPA 9.51/10

    Operating Systems, Computer Networks, Data Structures, Algorithms, Database Management, Discrete Mathematics

./experience

  1. Spring & Fall 2026

    Teaching Assistant, CS3650 Computer Systems

    Northeastern University

    Teaching C, x86-64 assembly, and operating system concepts to roughly 500 students across 5 sections over two semesters, through office hours, code walks, and grading.

    • C
    • x86-64
    • Linux
    [+] details
    • Supported Prof. Alden Jackson across 3 sections in Spring 2026 and 2 in Fall 2026, each with roughly 100 students, in a course covering C, x86-64 assembly, processes, virtual memory, concurrency, and file systems.
    • Taught groups of students at the board during office hours, drawing out the process and file structs to explain file descriptors and walking through memory and pointers.
    • Resolved conceptual questions and questions on assignments and projects in office hours and on Piazza, and helped students debug their C and assembly code.
    • Graded assignments and projects, handled regrade requests, and conducted code walks in which students explained their design and implementation.
    • Helped Prof. Jackson review assignments and exam questions.
  2. Jun 2026 – Aug 2026

    Mobile App Developer Intern

    SharkNinja

    Built an internal IoT device emulator so developers and QA could test the mobile apps without hardware, and won the Relentless Innovator intern award.

    • React
    • TypeScript
    • FastAPI
    • MQTT
    • WebSockets
    • Docker
    [+] details
    • Built an internal IoT device emulator end to end (React, TypeScript, FastAPI, WebSockets), writing most of its feature and bug tickets from my own findings. It connects emulated devices to SharkNinja's platform over MQTT, letting developers and QA test the Android and iOS apps without physical hardware, even before device firmware existed or in hard-to-reach edge-case states.
    • Generated the emulator's forms from YAML device schemas so the UI stays in sync with the canonical device contract without hand-written form code.
    • Made the tool hostable by decoupling it from an internal developer-only CLI and adding Auth0 device-flow login, httpOnly cookies with refresh-token rotation, authenticated WebSockets, unit-tested local/S3 storage, and Docker.
    • Resolved bug tickets in the production SharkClean app (Kotlin, Swift) and implemented minor features in the SharkNinja app (React Native).
    • Received the Relentless Innovator intern award from SharkNinja's Early Talent team on a teammate's nomination.
  3. Jan 2026 – Apr 2026

    Research Apprentice

    Northeastern University, Prof. Gene Cooperman

    Worked with a team on transparently checkpointing multi-GPU programs that communicate through NVIDIA's NCCL library, and implemented the draining of in-flight messages before each checkpoint.

    • C
    • MPI
    • NCCL
    • DMTCP
    [+] details
    • Part of a team extending MANA, the lab's transparent MPI checkpointing system, to NVIDIA's NCCL through a DMTCP plugin that intercepts NCCL calls and drains in-flight messages before a checkpoint, with no changes to the application or NCCL.
    • Implemented the drain for NCCL point-to-point messages, tracking each pending message's size per sender-receiver pair, receiving unmatched sends into a plugin buffer, and satisfying unmatched receives with a placeholder send before re-posting them into the application's buffer on resume.
    • Verified the drain with two-rank MPI and NCCL tests that checkpoint mid-transfer, then integrated CRAC to checkpoint CUDA state and traced the remaining restart failure to cuCheckpointProcessRestore.
    • Presented the work as the poster "Checkpoint-Restart of LLMs and Scientific Computation with NCCL for GPUs" at Northeastern's Research Apprenticeship Program, which I joined on Prof. Cooperman's nomination.
  4. Dec 2022 – Oct 2024

    Software Developer (Part-time)

    Kewisolutionary LLP

    Shipped 2 Android apps and 20+ features for a real-estate platform, working directly with clients.

    • Flutter
    • Vue.js
    • C#
    [+] details
    • Built and shipped 2 Android apps in Flutter (MyMBMC, PayMyTV) and 20+ features in Vue.js and Vuetify for the real-estate platform Manage Property, including dashboards, a service request system, and email template management over a C# backend.
    • Contributed to 5 client-facing websites, working directly with 3 clients to gather requirements and define scope.

./projects

SMP & Kernel Threads for egos-2k+

Independent Final Project, OS Course

16 harts · 120,000 threads in one run

Took a RISC-V teaching OS from a single hart to 16, then added kernel threads and a pthreads-style library on top.

  • C
  • RISC-V
  • QEMU
[+] details
  • Extended egos-2k+, a RISC-V teaching OS, from a single hart to 16. Each hart gets its own boot and trap setup, the trap entry path takes a big kernel lock acquired with amoswap, and idle harts park in wfi.
  • Implemented kernel-level threads as process-table entries that share the parent's page table, with per-thread stacks and syscall pages located through the tp register.
  • Built a pthreads-style library with create, join, and exit, plus mutexes, semaphores, and condition variables, and measured a contended mutex at 57× the per-increment cost of per-thread counters.
  • Debugged multicore races such as a torn 64-bit mtimecmp write that left harts asleep forever, and stress-tested 120,000 threads in one run with an exact final count under QEMU multi-threaded TCG.

Transparent Checkpoint-Restart

Process Checkpointing for Linux x86-64 (Course Assignment)

Restores a process at its original addresses

Saves a running Linux process to disk and brings it back later, without any changes to the program.

  • C
  • Linux
  • x86-64
[+] details
  • Checkpoints unmodified programs through a library loaded with LD_PRELOAD, whose signal handler saves the process's memory regions from /proc/self/maps and its register context to an image file.
  • Wrote a static restart program that runs at fixed low addresses on its own stack, so none of its memory collides with the target's mappings, then remaps each saved region with MAP_FIXED and resumes with setcontext.
  • Restored the fs base with arch_prctl so restarted programs keep their stack canary, since setcontext does not restore the thread-local storage that holds it.

x86 Boot Sector

Bare-Metal x86 in 512 Bytes

Real mode to protected mode in one sector

A boot sector that takes an x86 machine from 16-bit real mode into 32-bit protected mode.

  • x86 Assembly
  • NASM
  • QEMU
[+] details
  • Prints to the screen through BIOS interrupts while still in real mode, and includes an error-checked int 0x13 disk-read routine.
  • Switches to protected mode by loading a flat GDT, setting CR0.PE, and far-jumping into 32-bit code.
  • Once in protected mode, reloads the segment registers, sets up a stack, and writes directly to VGA text memory.

Bevy Generative & Procedra

Procedural Generation, Native and in the Browser

135+ stars · 5,900+ downloads

Procedural generation plugin for the Bevy engine, compiled to WebAssembly to generate assets in the browser.

  • Rust
  • Bevy
  • WebAssembly
  • SvelteKit
  • TypeScript
  • Prisma
  • CockroachDB
[+] details
  • Published an open-source Rust plugin for the Bevy game engine (135+ GitHub stars, 5,900+ crates.io downloads) that bridges the noise crate and Bevy's ECS, exposing 7 noise algorithms and 6 multifractal functions through 20+ parameters to generate textures, terrain meshes, and planets.
  • Built Procedra on top of the library, compiling the Rust generators to WebAssembly and embedding them in a SvelteKit app so users generate and preview assets in real time in the browser.
  • Added Procedra asset management with authentication, public/private storage in PostgreSQL-compatible CockroachDB through Prisma, likes, clones, and multi-format export.

./skills

Languages
  • C
  • Rust
  • x86-64/RISC-V Assembly
  • Python
  • Go
  • TypeScript
  • JavaScript
  • Java
  • C#
  • Dart
  • Kotlin
  • Swift
  • SQL
Systems & Tools
  • Linux
  • GDB
  • Valgrind
  • QEMU
  • MPI
  • NCCL
  • DMTCP
  • Docker
  • Git
  • PostgreSQL
  • Neovim
  • Emacs
Frameworks
  • FastAPI
  • React
  • React Native
  • Vue.js
  • Svelte & SvelteKit
  • Flutter
  • Bevy
  • Godot

./archive

Daub

Color Scheme Manager for Linux Desktops

Rethemes 6 apps with one command

Applies and switches color schemes in real time across a Linux desktop, from themes defined in TOML.

  • Rust
  • clap
  • TOML
  • Hyprland
[+] details
  • Generates color configs for Hyprland, Waybar, kitty, Rofi, Neovim, and the shell from a single theme variant, using templates compiled into the binary.
  • Reloads running Hyprland, kitty, Neovim, and Waybar instances after a switch, so a new theme applies without restarting anything.
  • Loads custom themes from $XDG_CONFIG_HOME/daub/daub.toml, where each theme can define any number of variants plus a background-to-foreground gradient of levels.
  • Built as a clap-based CLI with set, list, and clean subcommands.

Cellabrate

Conway's Game of Life in the Terminal

Vim-inspired controls

An interactive editor and simulator for Conway's Game of Life that runs entirely in the terminal.

  • Go
  • tcell
  • TUI
[+] details
  • Simulates the cellular automaton in real time while letting you create and edit patterns with a cursor.
  • Uses Vim-inspired keyboard navigation, with paint and erase modes for drawing patterns quickly.
  • Resizes the grid to match the terminal's dimensions, rendering with tcell.
  • Installs as a single binary with go install.

Dodge Bash

Arcade Survival Game in Godot

Taught to 30+ students in a workshop

The player square dodging red triangles in Dodge Bash

A fast-paced survival game where you dodge triangles, then grab a shield and smash into them for extra points.

  • Godot
  • GDScript
[+] details
  • Built in the Godot Engine with GDScript and published on itch.io.
  • Taught a hands-on Godot workshop where 30+ computer science students built the game from scratch, covering game loops, collision detection, and player mechanics.

Static Site Generator

Markdown Blog Engine in Rust

Posts embedded at compile time

A demo blog built with the static site generator, showing post cards

Turns a folder of Markdown posts into a blog that runs in the browser as a WebAssembly app.

  • Rust
  • Yew
  • WebAssembly
[+] details
  • Parses Markdown posts with pulldown-cmark and maps each one to a dynamically generated route with yew-router.
  • Extracts front-matter metadata such as title, summary, date, and image with gray_matter, and shows it on the post listing cards.
  • Embeds the posts into the build with include_dir and runs entirely client-side, built for wasm32 with trunk.

Kanbanxt

Drag-and-Drop Task Board

Live search across every column

A Kanbanxt board with five columns of task cards

A Kanban board for organizing tasks into cards and containers.

  • Next.js
  • React
  • TypeScript
[+] details
  • Lets users create and manage tasks through cards and containers for efficient task tracking.
  • Uses React Beautiful DnD for drag-and-drop, so cards can be reordered and moved between containers.
  • Filters the cards in every container as you type in the search bar.

./contact

Building something interesting?

Or just want to say hi? Either way, email me at karnik.ma@northeastern.edu or leave a message here, and I’ll get back to you.