I'm a third-year PhD candidate at UMass Amherst working in the PLASMA Lab with Emery Berger. My research interests span systems and programming languages, with a focus on making existing software more efficient, more secure, and usable in new contexts. This past summer I was a research intern at Microsoft Research in the Mobility and Networking Group working on finding bugs in distributed systems. Previously I was a software architect at SocialCode where I worked on developing scalable, maintainable systems.
Browsix answers these challenges, with:
Processes: Unmodified C, C++, Go, and Node.js programs run as processes on Web Workers, executing in-parallel with the main browser thread – no need to worry about long-running computations blocking event-handling or page rendering.
Kernel + System Calls: By working at the lowest levels of abstraction, Browsix provides shared resources to multiple language runtimes, just as traditional operating systems enable running programs written in a host of languages.
Scalability: By enabling a large class of programs (including legacy codebases) to run in-browser, Browsix can free you from the chore of sandboxing and load-balancing programs server-side.
June 21, 2016
Notes on systemd Internals
June 9, 2016
systemd is the init system used by the current versions of most major Linux distributions, including Debian, Red Hat, Ubuntu and Arch. One of its key features is reliable dependency management, building a dependency graph of services, and sequencing of services where unrelated services can be started in parallel, but dependencies are sequenced correctly.
Let’s walk through how systemd implements this. Of note - if you’re interested in what a modern C codebase that doesn’t care about backwards compatibility can look like, systemd is especially interesting.
Tomato Garlic Dipping Sauce
February 16, 2016
Notes on 'Practical FS Design'
June 28, 2015
I recently finished Practical File System Design by Dominic Giampaolo - a great read on filesystem implementation. Some aspects of the book are dated (initially published in 1999), but it does (lightly) discuss multithreading issues, which are absent from much of the classic UNIX literature. The three topic covered I felt were especially notable are journaling, indexing, and the comparison with other filesystems.
Optimizing Real World Go
January 5, 2013
This is about some fun I had while putting together a small Unix-y utility to measure RAM and swap usage - psm. I was able to decrease runtime by more than 65% during a 3-hour train ride with the help of some standard go tools.
psmUtility for fast, accurate RAM and swap reporting
slackfsFUSE filesystem for Slack, and tmux-based UI
seshcookieHTTP sessions stored in encrypted cookies for Go
cnoteMusic indexing service proving a REST API, in C
libsdParser and simulation engine in C
boosdDeclarative language for object-oriented SD models, implemented in Go
One Laptop Per ChildI was an intern and community member of OLPC. I diagnosed and fixed some bugs (like this one), worked on a System Dynamics activity named Model to enable students to do system dynamics modeling on the XOs, and rewrote the boot animation in C (from Python), cutting 12 seconds off the boot time for hundreds of thousands of laptops.
System DynamicsSystem Dynamics is a simulation-modeling approach to policy analysis and design. I have an MPhil in system dynamics from UiB in Norway. My thesis was on applying object-oriented programming to modeling, as a method of reducing complexity.I'm currently working on a web-based editor for SD models, with a focus on usability and design: