Hi, I'm Teerth.

A twenty year old tech lover who likes turning maths and ideas into solid code. Some of those ideas now live inside the codebases of companies like these.

WASD or arrows to slide · Shift to dash · click the snow to go there.Drag anywhere to steer. Tap a building to go there.

Hold W to slide · A D to turn · S back · Shift dash · E open

Teerth Sharma: Seal’s Topology Land

A twenty year old tech lover who likes turning maths and ideas into solid code. Some of those ideas now live inside the codebases of companies like these.

teerths57@gmail.com

The Igloo

A twenty year old tech lover who likes turning maths and ideas into solid code. Some of those ideas now live inside the codebases of companies like these.

  • 11 landed contributions
  • 11 projects in the lab

Eleven landed contributions. Every number below was measured on a named machine against a control, and every one of them sits in a merged diff or on the default branch it targets.

1,281.6x less scratch

84,033,568 bytes to 65,568 at ntree 4,096. 1,281.6x less.

  • 1,281.6x less scratch
  • C and C++ memory O(n^2) to O(n)

Island discovery was allocating scratch that grew with the square of the tree count. I rebuilt it to compute the same partition from a disjoint-set forest, so the allocation grows linearly instead.

1.513x faster

156.738 us to 101.097 us. Scratch 7,929,856 bytes to 180,224.

  • 1.513x faster
  • Python memory O(n^2) to O(n)

I found that the GPU island-discovery kernel carried the same quadratic memory shape onto the device. I replaced it with a linear-memory disjoint-set union.

15,361x fewer probes

16 lines added. 15,361x fewer probes at V=40,962. Cold load 134.400 ms to 71.163 ms.

  • 15,361x fewer probes
  • C++ probes O(V^2) to O(V)

Convex hull graph construction was scanning every pair of points to find a match. I built an inverted point-id table that finds it directly instead.

65.5x fewer comparisons

894,081,141 comparisons to 13,643,737 at one million keys. 65.5x.

  • 65.5x fewer comparisons
  • C++ pairwise scan pruned by structure, exact rejection

I noticed the collision and scan tests were comparing key pairs the slice structure had already ruled out. I pruned by structure so those pairs never reach the compare.

6.42% lower peak

MobileNet V1 peak 23.862980 to 22.331730 MiB. Workspace 144 MiB to 112 MiB.

  • 6.42% lower peak
  • C++ and C allocation policy, no asymptotic change claimed

I found the memory planner never considered the free gap sitting before the first live block. I made it reuse that leading gap, which lowers peak workspace.

4 edges to 3

Four control edges emitted where the unique transitive reduction is three.

  • 4 edges to 3
  • C++ correctness

I traced a correctness bug: transitive reduction was documented as full reachability but never back-propagated, so a redundant control edge with a longer alternate path survived the prune. I fixed the back-propagation so the prune removes it.

23 files

One unchanging scaffold now keys to one profile instead of one per task. 23 files.

  • 23 files
  • Rust cache keying

I found the learning key included the first user message, so one unchanging system prompt and tool schema fragmented into a new profile per task and observations never accumulated. I keyed it on the stable scaffold instead, with a fingerprint gate that fails closed.

804 lines added

A topology derived sparse attention kernel. 804 lines added, 17 tests passing.

  • 804 lines added
  • Python, Triton new kernel

I built a forward-only Triton kernel that schedules causal attention blocks by a topology-derived salience score, instead of scanning every block in the lower triangle.

5 lines, deterministic

Five lines. Same program, two outputs before, one stable output after. XLA compiles for JAX and TensorFlow.

  • 5 lines, deterministic
  • C++ determinism

GroupDisjointReductions iterated a hash set to choose which value survived each union-find merge, so the order of grouped_roots depended on hash iteration order and the same XLA program could emit different GPU code between runs. I made the order deterministic in five lines.

145 lines gated

145 lines changed across 4 files. pods, nodes and daemonsets access no longer granted cluster wide.

  • 145 lines gated
  • YAML, Helm least privilege

The API server ClusterRole rendered the same Kubernetes RBAC rules regardless of engine and provider, so an install that never reached the Kubernetes API, for example provider test with engine slurm, was still granted pods list, nodes get and list, and daemonsets get, cluster wide. I gated each rule on engine.name and provider.name.

208 SCCs pinned

208 two-module SCCs chained in one Rust test. The failure is pinned at the end with should_panic.

  • 208 SCCs pinned
  • Rust regression pinned

An export change can consume the 100 epoch incremental budget, produce another export change during forced invalidation, and reach commit with that change still pending. I generated a chain of 208 two-module strongly connected components inside one Rust test and recorded the resulting Transaction has uncommitted changes failure with should_panic, so the bug is pinned rather than argued about.

resolvent

Attention and Markov paths share one operator.

  • 175 declarations
  • Lean 4
  • zero sorry
  • S-matrix read

I proved softmax attention and Markov path composition are settings of one operator, then found that reading it through a resolvent gives the same closed form Wheeler's S-matrix had in 1937.

Epsilon-Hollow

Memory, files and scheduler, on one sphere.

  • bare metal x86_64
  • no POSIX
  • no libc

I wrote an operating system from bare metal where memory, files and the scheduler live as points on a sphere, and the kernel's day job is machine learning.

Aether-Lang

Loops stop when their shape stops changing.

  • persistent homology as a language primitive
  • runtime compiles no_std to bare metal

I built a language where a loop stops because its shape stopped changing, not because a counter ran out.

caustic

Hallucination, measurable with no ground truth.

  • 0.995 AUROC
  • five proved bounds

I found that when a model cannot reach a fact it collapses distinct entities onto one answer, and that collapse is measurable with no ground truth at all.

monodromy

Can it be undone? Topology answers.

  • 5 dependencies
  • torch not required

I wanted to know whether a transformation could be undone without ever computing a derivative, so I built the tools that answer it from topology instead.

topological-ml-toolkit

The shape of data, as an ordinary feature.

  • Rust core, Python API
  • persistent homology and Betti-curve features

I wanted the shape of data to be an ordinary feature, usable by anyone already building with sklearn or PyTorch.

faraday

The field coupling, found rather than assumed.

  • computational Faraday tensor
  • topology-fixed-point projection

I compute the Faraday tensor directly, so the coupling between the electric and magnetic fields is found rather than assumed.

nerve

The control that could kill my result.

  • 224 tests passing
  • 3 of its own 4 hypotheses withdrawn

I built the control that could kill my own result, then published what it said.

separatrix

Decided by the data, not by rounding.

  • top-k, argmin and threshold
  • certified or refused

I certify that a top-k or an argmin was decided by the data, and not by where the kernel happened to round.

planimeter

Exact, or refused.

  • 495 exact
  • 33 refused
  • 0 wrong
  • shapely.polygonize_full: 336 wrong, 0 refused

shapely.polygonize_full returns 336 wrong answers on the files where planimeter returns none.

tangle

It refuses rather than guesses.

  • 2,000 diagrams
  • 80 scenes
  • 247 photographs
  • 0 wrong certificates

I built tangle to never return a wrong answer. It refuses rather than guesses.