9009 Gates-Hillman Center
Computer Science Department
Carnegie Mellon University
5000 Forbes Avenue
Pittsburgh, PA 15213
«firstinitial lastname at cs.cmu.edu»
People pay me to study computer science. I like doing this most when it involves some combination (in approximate order of favouritism) of concurrency, programming languages, operating systems, and verification.
I also love teaching, but more the doing rather than the researching.
I am a second-year Ph.D. student and third-year graduate student in the Computer Science Department at Carnegie Mellon University. I work in the Parallel Data Laboratory and am advised by Garth Gibson.
I am working on the following research projects, in varying degrees of activity.
Landslide – systematic dynamic race condition detection in kernel space. For my MS thesis project, I built a test framework to find races in kernels by systematically exploring different thread interleavings.
thesis document; defence talk slides; simics interview
Atomic All-Nighters – static context checking in kernel codebases. After some time working in Linux, I realised there should be a way to enforce no invoking the scheduler in "atomic contexts", so I wrote a combination static analysis + type system + annotation system to do it.
Rust – an experimental systems language from Mozilla Research that provides parallelism, performance, and strong static typing. I contributed various designs, enhancements, and fixes to the concurrency libraries and runtime.
language homepage; blog post series
Parrot and dBug – a framework for semi-deterministic multithreading of concurrent userspace programs (Parrot), which achieves good performance by sacrificing some determinism, and compensates for the resulting nondeterminism with systematic testing (dBug). Viewed from another perspective, Parrot is a state space reduction technique for tools such as dBug.
You may be interested in my serious-business research blog, Winning Race Conditions
Landslide: Systematic Dynamic Race Detection in Kernel Space. MS thesis; CMU CS TR 12-118. (May 2012) bibtex
Parrot: A Practical Runtime for Deterministic, Stable, and Reliable Threads. Heming Cui, Jiri Simsa, Yi-Hong Lin, Hao Li, Ben Blum, Xinan Xu, Junfeng Yang, Garth Gibson, Randy Bryant. SOSP, November 2013. acm link
I am currently the head instructor for Great Practical Ideas for Computer Scientists
, a student-taught class pioneered by Adam Blank
aimed at "filling in the holes" of our undergrad CS intro curriculum (shell scripting, version control, debugging skills).
I have also been a TA for Intro to Computer Systems for two semesters (S09, F09) and a TA for Operating Systems for three semesters (F10, S11, F11).
I have written a chess engine, which plays on FICS as bistromath
where it is rated about 2100. It is 5000+ lines of C (which interface with xboard for talking to the internet), available here
I have contributed to Linux CGroups, including an interface for multithreaded process migration between groups (writeup) and a framework for module-loadable subsystems (writeup).
I have helped organise SIGBOVIK, an annual workshop at CMU for research on topics such as Address Space Content Randomisation and Proof by Handwaving.
I am an avid cook (and baker) and consider myself a decent pastry chef. I love learning new things about food, especially about its science and preparation. I occasionally produce experimental baked goods and bring them to a tea event
we have in CSD.
I enjoy thinking about psychology, philosophy, happiness, depression, and so on.
I use male pronouns for myself.
I consider myself both Jewish (by heritage) and Buddhist (by philosophy).
I am also big on going long distances under my own power. I began running in 2010, and have run the Pittsburgh Marathon three times (once on the same day as my undergraduate diploma ceremony), and the Philadelphia Marathon once. My best time was my first one: 3:55:59. I try to keep track of where I run by making maps like these:
I have also walked to west virginia
, biked to the airport
, and solved (by walking) the königs-pittsburgh bridge problem
success and failure. we think of them as opposites, but they're really not. they're companions—the hero and the sidekick. [laurence shames]
page last updated 2013-11-07