Skip to content
Open to SDE roles · full-time and internships +91 90504 57303
Open to full-time roles and internshipsSoftware engineer · IIT Delhi

I built a spreadsheet engine from scratch.

Systems from scratch in C, C++ and Rust. I make slow programs fast and measure every claim, and three of my programs run right here in your browser.

prince@iitd: ~/engineslive

      
Prince Evans
New DelhiIIT Delhi '26
Running on this page3 of my programs
JEE AdvancedTop 0.7%
Psst. Press and hold the ☻ button.Psst. Hold F for the other me.
17,606lines of code across my repos
355GitHub contributions, all time
18projects built
3of my programs run live on this page
8languages, C to Swift

I build systems from scratch, make slow programs fast, and measure every result.

CC++RustPythonSwiftJavaAssemblyBashWebAssembly
01 · Engine room

Everything below is running live.

My real C, Rust and assembly programs run on your phone as you scroll. Every timing is measured right now, on your device.

Scroll into the code

01 · Spreadsheet engine in C

Change one cell. 998 follow.

My C spreadsheet builds a chain of 998 dependent cells, then changes the first one, and the dependency graph recalculates every cell downstream. Your turn: tap any cell and type a number or a formula like =D1*2.

—to recalculate 998 cells, just now on your device
1.8 crorecells in one sheet
Open the case study
02 · Scale

Zoom out to 1.8 crore cells.

999 rows by 18,278 columns. Every one of them can hold a formula that knows who depends on it.

999 × 18,278rows × columns
DAGrecalculates only what changed
Open the case study
03 · Rebuilt in Rust

Empty cells cost nothing.

The rewrite stores only filled cells, so a sheet can be any size. Watch the dense grid run out of memory while the sparse one barely notices.

—to write cell ZZZZ999999, just now
2–3 min → sfull recalculation after the rewrite
Open the case study
04 · A CPU in one C file

Assembly in, answers out.

My SimpleRISC interpreter parses, decodes and executes real assembly. Right now it is calculating factorial(6) in your browser, and on its project page you can write any program you like.

—to run factorial(6), just now
16 + 2registers and flags
Open the case study
05 · Thesis physics

Tiny swimmers, 61× faster.

My B.Tech thesis simulator packs active swimmers into a shrinking ring. Spatial hashing turned all-pairs collision checks into neighbour checks.

—pair checks this frame with hashing
~61×measured speedup in the real C++ engine
Open the case study
06 · Native iOS

And it fits in your pocket.

CodeBreaker is a native SwiftUI Mastermind game with 20+ themes and no dependencies. That is the real app, and your scroll is the play button.

20+themes
0dependencies
Open the case study
Loading the C engine…
1 cell
Dense · C
allocating…
Sparse · Rust
only filled cells
spatial hashing
Scroll to play the real app · scroll back to rewind

All of that just ran on your device.

Your turn

Talk to my terminal.

It runs my real engines in your browser. Type a command, or tap one below.

recruiter@princeevans.dev: ~live
02 · Selected work

Things I built that actually run.

Five systems in depth, built mostly with the standard library. The numbers come from each project's own measurements, the recordings come from the real programs, and four of them run live on their own pages.

01 · C Real recording on hoverReal recording · scroll to play
Jan – Mar 2025 · Systems programming · Team project

Command-line spreadsheet

A spreadsheet engine in C with formulas, ranges and a dependency graph, built from scratch.

1.8 crorecells in one sheet
<1 msto recalculate 998 dependents, live
3,364lines of C
  • Every formula registers its inputs in a dependency graph, so an edit recalculates only what is downstream, in topological order.
  • A modular parser handles formulas, ranges like SUM(A1:A10) and w/a/s/d scrolling, and turns bad input into clear statuses instead of crashes.
  • Cycle detection rejects an edit that would loop, and Valgrind plus GDB/LLDB were used to hunt down leaks and hard bugs.
CDAG recalculationValgrindGDB/LLDBWebAssembly
02 · Rust Real recording on hoverReal recording · scroll to play
Mar – May 2025 · Systems programming · Team project

Sparse spreadsheet in Rust

The spreadsheet rebuilt in Rust with sparse storage. Recalculation went from minutes to seconds, and it runs in your browser.

2–3 min → sfull recalculation
47,525 croreaddressable cells (usize)
2deploys: GitHub Pages and AWS S3
  • Sparse block storage means a sheet with ten values uses memory for ten values, so the grid is no longer capped at 1.8 crore cells.
  • An operation stack records the old and new state of every edit, so undo and redo are exact, with floating-point values throughout.
  • The engine is a Cargo workspace library with no I/O: the CLI, this WebAssembly build and the S3 static site all call the same code.
RustSparse storageusize indexingUndo/redoWebAssembly
03 · C++ Real recording on hoverReal recording · scroll to play
Jan – May 2026 · B.Tech thesis, computational physics

Taylor-Line microswimmers

A molecular-dynamics simulator for microswimmers in a shrinking space, about 61× faster with spatial hashing.

~61×faster collision checks
70+configurations in one sweep
O(N²) → O(N)pair checks per step
  • A hand-written Velocity-Verlet integrator and Andersen thermostat model active swimmers in a shrinking confinement.
  • A spatial-hashing grid replaced the naive all-pairs check: each particle only tests its own and neighbouring cells.
  • A resumable parameter sweep ran 70+ configurations on IIT Delhi's Baadal cloud and picked up wherever a job stopped.
C++PythonVelocity-VerletSpatial hashingBaadal cloud
04 · C Real recording on hoverReal recording · scroll to play
Jul – Aug 2024 · Self project, computer architecture

SimpleRISC interpreter

Reads and runs SimpleRISC assembly. One C file, with an HTTP API on AWS. Run real programs below.

1 fileof C, builds anywhere
16 + 2registers and flags
EC2 + S3behind an HTTP API
  • Strips comments, resolves labels, decodes every line into SimpleRISC's 3-address formats and executes it against registers, flags and memory.
  • Errors stop with the exact failing line number, and custom .print and .encode macros show registers and binary encodings.
  • Deployed behind a small HTTP API on AWS EC2 that reads and writes program files in S3 through an IAM role, with no keys in code.
CSimpleRISC v21AWS EC2S3IAM
05 · Swift Real recording on hoverReal recording · scroll to play
2026 · SwiftUI, coursework base plus my own features

CodeBreaker

A native iPhone Mastermind game in SwiftUI with 20+ themes and no dependencies.

20+colour and emoji themes
0third-party dependencies
704lines of Swift
  • Game rules live in plain Swift model types with no UI inside them; SwiftUI views only render state.
  • Pegs can be colours or emoji across 20+ themes, and the whole board restyles instantly.
  • Started from a course assignment and extended with my own features; a word-based sibling, CodeWordBreaker, checks guesses against a dictionary.
SwiftSwiftUIiOS20+ themesNo dependencies
03 · GitHub

Live from GitHub

Pulled from GitHub every few hours by a scheduled job. Not screenshots, and it updates on its own.

Contributions · last 12 months—
LessMore
Code by language
Latest commitsGitHub
    Currently building
    04 · About

    I like problems where you can measure the answer.

    Engineering physics at IIT Delhi taught me to model things and measure them. Systems programming is where I use that: spreadsheet engines, interpreters and simulators where speed and correctness are the whole point. I graduated in 2026 and I'm looking for a software engineering role in backend, cloud or systems.

    Top 0.7%JEE Advanced, among 10 lakh+ candidates
    IIT DelhiB.Tech, Engineering Physics, 2026
    AWSEC2, S3 and IAM in real deploys
    WebAssemblyC, C++ and Rust shipped to the browser
    05 · Contact

    Let's work together.

    Recruiter? Pick one. The message is already written for you.
    CV Contact