I was an undergraduate at the University of Wisconsin-Madison, majoring in CS and Mathematics. Now, I am a master student at UC Davis majoring in Computer Science. I am fortunate to be adivsed by Professor Michael Swift, who leads me into the world of systems.

Contact Information



I am interested in Systems research. For now, I am extremely interested in various topics in Operating Systems. Currently, I am working on providing Operating System support for some near-memory accelerators.

Linux is not the best-fit OS for every system with emerging new technologies. See this video for more details. It is the time to create a new OS, although, it is undoubtedly hard. With the aim to redesign a new OS, I have to know more about hardware - that is how I developed my interest in computer architecture.


I used to be willful (in a derogatory sense). In other words, I would devote myself to what I loved, but put limited effort on things I disliked. Below is the timeline about what I was, and what I am now:

09/2018 ~ 07/2020: Wandering

  Avoid Programming:
  Obtaining Mathematics degree
  Taking math-related CS courses with limited programming projects
  Math - not that interesting as I thought

07/2020 ~ 09/2020: Preparing

 Start Programming:
  Learning CS354 - Intro to Systems to get familiar with C programming language
  Forcing myself to write code using emacs
  Preparing for OS course in Fall 2020
  Pointers in C - quite interesting

09/2020 ~ 12/2020: Struggling

 Entering OS World:
  30 ~ 40 hours per project in OS course
  First time in my life - "I am learning what I do love"
 Submitting grad school applications:
  I was weak, so did not apply for PhD

12/22/2020: Critical Point

 Get the Research Opportunity!

01/2021 ~ 05/2021: Big Change & Research Preparation

 Not the willful (in a derogatory sense) person anymore:
  Taking system courses - I love them
  Academic Writing course - I disliked this course, but managed to get 100/100, best student in class.
  The first semester I got GPA 4.0
  Learning Linux device drivers & computer architecture

06/2021 ~ Present: Research

  Two summer courses

Interesting Things

What will happen when executing "$ ls"?

The $ is a prompt put out by a login shell (in this case bash). This means that it is waiting for you, the user, to type some command. Typing ls causes the keyboard driver to recognize that characters have been typed. The keyboard driver passes them to the shell which processes that command by looking for an executable image of the same name. It finds that image, in /bin/ls. Kernel services are called to pull the ls executable image into virtual memory and start executing it. The ls image makes calls to the file subsystem of the kernel to find out what files are available. The filesystem might make use of cached filesystem information or use the disk device driver to read this information from the disk. It might even cause a network driver to exchange information with a remote machine to find out details of remote files that this system has access to (filesystems can be remotely mounted via the Networked File System or NFS). Whichever way the information is located, ls writes that information out and the video driver displays it on the screen. (source)

What is multi-programming?

Assume we have only one CPU (single core), the operating system resorts to trickery by running each process in turn for a short period. This period of time is known as a time-slice. This trick is known as multi-processing or scheduling and it fools each process into thinking that it is the only process.