Skip to content

Activities

Leadership, teaching, open source, and volunteering outside of work and research.

LeadershipAug 2026 - Present

Vice President

UMN CPP

I run a workshop series on the low-level design problems that come up in technical interviews: one familiar question per session, pushed until the textbook answer stops being the right one.

  • Designed and teach an interview-focused low-level design series that turns standard questions into lessons on memory layout, concurrency, and how changing requirements reshape a design.
  • Taught the first session, Design an LRU Cache, to 20 students, carrying the textbook O(1) answer through cache-line-aware layout, TTL expiry, lock contention, 2Q / Segmented LRU, and distributed sharding.
  • Publish every deck and recording openly so members can revisit a session before their own interviews.

Workshops

#1Low-Level DesignSep 22, 2026

Design an LRU Cache

Starts from a classic interview problem and keeps changing the requirements until the textbook answer stops being the right one.

20 attendees

  1. Designing from operations first: what must be fast decides the data structure, not the other way round.
  2. Why O(1) is not the end: rebuilding the hash-map-plus-linked-list solution as a contiguous array with index links and a free list, because Big-O counts operations, not cache misses.
  3. Capacity in bytes instead of entries, and TTL expiry, where one cache has to keep two orderings at once.
  4. Concurrency: get() is logically a read but writes to the recency list, so 64 threads contend on every hit.
  5. Cache pollution from crawlers, and fixing it with 2Q / Segmented LRU so new keys must earn a place.
  6. Scaling out: key ownership across servers, adding and removing nodes, and surviving a crashed shard.

Coming up

#2Low-Level DesignUpcomingDate TBA

Build Your Own malloc

What actually happens between a program asking for memory and the kernel handing it over, built up from a bump allocator to free lists.

  1. Bump allocation, free lists, and why fragmentation is the real enemy.
  2. Where the heap comes from: brk, sbrk, and mmap.
  3. Alignment, headers, and the metadata hiding next to every allocation.
#3SystemsUpcomingDate TBA

What Really Happens When You Type cd

Following one two-letter command from the keyboard down through the shell and into the kernel.

  1. Why cd has to be a shell builtin and cannot be a separate program.
  2. The chdir system call and a process's current working directory.
  3. How paths are resolved, and what the kernel checks on the way.