Alex Van't Hof

Researcher, Developer.

Who am I?

I am a PhD candidate in the Computer Science Department at Columbia University. I work with Professor Jason Nieh in the Software Systems Lab. My research interests include operating systems, mobile computing, virtualization, and networking.

I am a strong advocate for open source software, and will share my work when appropriate. A very small subset of my activity can be found on GitHub.

Curriculum Vitae

Research

Flux

Flux: Live Migration of Android Applications

Abstract

With the continued proliferation of mobile devices, apps will increasingly become multi-surface, running seamlessly across multiple user devices (e.g., phone, tablet, etc.). Yet general systems support for multi-surface app is limited to (1) screencasting, which relies on a single master device’s computing power and battery life or (2) cloud backing, which is unsuitable in the face of disconnected operation or untrusted cloud providers. We present an alternative approach: Flux, an Android-based system that enables any app to become multi-surface through app migration. Flux overcomes device heterogeneity and residual dependencies through two key mechanisms. Selective Record/Adaptive Replay records just those device agnostic app calls that lead to the generation of app-specific device-dependent state in system services and replays them on the target. Checkpoint/Restore in Android (CRIA) transitions an app into a state in which device-specific information can be safely discarded before checkpointing and restoring the app. Our implementation of Flux can migrate many popular, unmodified Android apps—including those with extensive device interactions like 3D accelerated graphics—across heterogeneous devices and is fast enough for interactive use.

Cycada (formerly Cider)

Cycada: Native Execution of iOS Apps on Android

Abstract

Cycada is an operating system compatibility architecture that can run applications built for different mobile ecosystems, iOS or Android, together on the same smartphone or tablet. Cycada enhances the domestic operating system, Android, of a device with kernel-managed, per-thread personas to mimic the application binary interface of a foreign operating system, iOS, enabling it to run unmodified foreign binaries. This is accomplished using a novel combination of binary compatibility techniques including two new mechanisms: compile-time code adaptation, and diplomatic functions. Compile-time code adaptation enables existing unmodified foreign source code to be reused in the domestic kernel, reducing implementation effort required to support multiple binary interfaces for executing domestic and foreign applications. Diplomatic functions leverage per-thread personas, and allow foreign applications to use domestic libraries to access proprietary software and hardware interfaces.

Cells

Cells: Lightweight Virtual Smartphones

Abstract

Cells is the first open-source virtualization architecture that enables multiple virtual smartphones and tablets to run simultaneously on the same physical device. Leveraging lightweight virtualization work done on Linux containers, Cells introduces a new device namespace framework that allows kernel and user space drivers to efficiently multiplex access to hardware. Unlike traditional virtual machine approaches that are too heavyweight for smartphones and tablets, the Cells device namespace framework is lightweight and provides native hardware performance when running multiple virtual phones or tablets. This includes fully accelerated 3D graphics, providing the same visual user experience for graphics-intensive applications that users have come to expect from their mobile devices. Cells transparently runs Android applications at native speed without any modifications, so you can use all your favorite applications from the Google Play store.