◆ggrep/Go · CLI · Benchmarks◆Custom HTTP Handler/Go · TCP · Systems◆Distributed TODO Service/Go · Postgres · Docker◆md → html/Go · Parsers · Fuzzing◆Pipeline Kit/Go · Concurrency◆Bounded Worker Pool/Go · Concurrency · Package◆OSTEP Implementations/C · Operating Systems◆ggrep/Go · CLI · Benchmarks◆Custom HTTP Handler/Go · TCP · Systems◆Distributed TODO Service/Go · Postgres · Docker◆md → html/Go · Parsers · Fuzzing◆Pipeline Kit/Go · Concurrency◆Bounded Worker Pool/Go · Concurrency · Package◆OSTEP Implementations/C · Operating Systems

Aniket Rathour

hello there!
Systems Engineer in training·Dwarka, Delhi

I build systems software in Go and C, mostly from scratch, mostly to find out how the thing I use every day actually works. I wrote a grep clone that lands within 2x of GNU grep, an HTTP router sitting directly on raw TCP sockets with tree-based path matching, a markdown parser I rewrote from string-hacking into a real tokenizer, and I work through OSTEP in C because reading about processes and threads was never going to be enough. Concurrency, operating systems, and benchmarks that tell me I was wrong.

Selected works13 repos

ggrep↗

GoCLIBenchmarks

A grep clone written in Go from scratch. Recursive directory traversal, case-insensitive matching, line numbering, and the flag combinations that make grep actually usable. Benchmarked against the real thing on an Apple M4 — faster than macOS BSD grep, within ~2x of GNU grep.

DEFAULT
511 ns/op
-n FLAG
464 ns/op
RECURSIVE
2.78 µs/op

An HTTP router built directly on raw TCP sockets — net.Listen, hand-parsed requests, hand-written responses, no net/http anywhere. Routes are matched through a tree structure supporting named parameters (:id) and wildcards (*id), with graceful shutdown via signal.NotifyContext and a WaitGroup that drains in-flight connections.

A TODO backend in Go with a full endpoint surface and a clean split between the db and routes layers, backed by a Postgres schema. Containerised with a multi-stage Dockerfile that compiles a CGO-free static binary into an Alpine image.

md → html↗

GoParsersFuzzing

A markdown to HTML converter in Go. Started as string manipulation, which broke on every edge case, so I threw it out and rewrote it as a tokenizer and parser. Supports single and double CLI flags, and is fuzz-tested to find the inputs I would never have thought of.

Pipeline Kit↗

GoConcurrency

A data processing pipeline demonstrating the Go concurrency patterns that matter: a generator feeding a channel, fan-out across concurrent workers, fan-in back to a single consumer, and context cancellation propagated through every stage so nothing leaks when you cancel.

Bounded Worker Pool↗

GoConcurrencyPackage

A reusable bounded worker pool package. Submits jobs across a fixed number of workers, returns what completed versus what was still pending, and respects context cancellation. Clean under go vet, golangci-lint and the race detector.

OSTEP Implementations↗

COperating Systems

Implementations and homework solutions from Operating Systems: Three Easy Pieces. The virtualization chapters in C — process creation, signal handling, and threads — written out rather than read through.

Build logjourney

Distributed systems & custom HTTP internals · Self-directed

Sep 2026 — Present
  • Built a TODO service in Go with a full REST surface, Postgres schema and a multi-stage Alpine Docker build that ships a static CGO-free binary.
  • Wrote an HTTP router on top of raw net.Listen TCP sockets — no net/http — using a tree structure for route matching with named params (:id) and wildcards (*id).
  • Added graceful shutdown through signal.NotifyContext so in-flight connections drain instead of dying on SIGTERM.

Go concurrency patterns, properly tested · Self-directed

Aug 2026
  • Pipeline Kit: generator → fan-out → fan-in pipeline with context cancellation propagated through every stage, so no goroutine leaks on cancel.
  • Bounded worker pool package with context support, passing go test -race and golangci-lint with zero issues.
  • Rewrote my markdown → HTML converter away from string manipulation into a real tokenizer and parser, then fuzz-tested it.
  • Set up Makefile + GitHub Actions CI (fmt, vet, golangci-lint, race detector) across all of them.

ggrep — a grep clone in Go · Self-directed

Jul 2026
  • Spent a week building recursive directory scanning and flag handling instead of just reading about it.
  • Benchmarked on an Apple M4: ~511 ns/op default, ~464 ns/op with -n, ~633 ns/op with -i, ~2.78 µs/op recursive.
  • Landed faster than macOS BSD grep and within roughly 2x of GNU grep.

OSTEP implementations in C · Self-directed

Jun 2026
  • Working through Operating Systems: Three Easy Pieces, implementing the virtualization chapters rather than only reading them.
  • Processes, signal handling and threads written and tested in C.
Writing1 post
Tech stackwhat I reach for
Languages
Go/C/TypeScript/JavaScript/Python/C++
Systems
Concurrency/Goroutines & channels/context.Context/TCP sockets/Processes & signals/Threads
Tooling
Docker/Make/golangci-lint/GitHub Actions/go test -race/Fuzzing/Benchmarking
Data
PostgreSQL/SQL schema design
Web
React/Next.js/Vite/Tailwind CSS/Node.js
ML
NumPy/Gradient descent/Softmax cross-entropy
Availabilitysay hi

Open to systems / backend roles and internships.