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.
M2: Heterogeneous Multi-Mobile Computing
As smartphones and tablets proliferate, there is a growing demand for multi-mobile computing, the ability to combine multiple mobile systems into more capable ones. We present M2, a system for multi-mobile computing that enables existing unmodified mobile apps to share and combine multiple devices, including cameras, displays, speakers, microphones, sensors, GPS, and input. M2 introduces a new data-centric approach that leverages higher-level device abstractions and hardware acceleration to efficiently share device data, not API calls. To support heterogeneous devices, M2 introduces device transformation, a new technique to mix and match different types of devices. Example transformations include combining multiple displays into a single larger display for better viewing, or substituting accelerometer for touchscreen input to provide a Nintendo Wii-like experience with existing mobile gaming apps. We have implemented M2 and show that it (1) operates across heterogeneous systems, including multiple versions of Android and iOS, (2) can enable unmodified Android apps to use multiple mobile devices in new and powerful ways, including supporting users with disabilities and better audio conferencing, and (3) can run apps across mobile systems with modest overhead and qualitative performance indistinguishable from using local device hardware.
Flux: Live Migration of Android Applications
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
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: Lightweight Virtual Smartphones
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.
Alexander Van't Hof, Jason Nieh. BlackBox: A Container Security Monitor for Protecting Containers on Untrusted Operating Systems. Proceedings of the 16th USENIX Symposium on Operating Systems Design and Implementation (OSDI 2022), Carlsbad, CA, July 2022.
Naser AlDuaij, Alexander Van't Hof, Jason Nieh. Heterogeneous Multi-Mobile Computing. Proceedings of the 17th ACM International Conference on Mobile Systems, Applications, and Services (MobiSys 2019), Seoul, South Korea, June 2019. (Video Demo)
Alexander Van't Hof, Jason Nieh. AnDrone: Virtual Drone Computing in the Cloud. Proceedings of the 14th ACM European Conference on Computer Systems (EuroSys 2019), Dresden, Germany, March 2019.
Alexander Van't Hof, Hani Jamjoom, Jason Nieh, Dan Williams. Flux: Multi-Surface Computing In Android. Proceedings of the 10th ACM European Conference on Computer Systems (EuroSys 2015), Bordeaux, France, April 2015. (Video Demo)
Jeremy Andrus, Alexander Van’t Hof, Naser AlDuaij, Christoffer Dall, Nicolas Viennot, Jason Nieh. Cider: Native Execution of iOS Apps on Android. Proceedings of the 19th International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS 2014), Salt Lake City, UT, March 2014. (Video Demo)
Christoffer Dall, Jeremy Andrus, Alexander Van't Hof, Oren Laadan, Jason Nieh. The Design, Implementation, and Evaluation of Cells: A Virtual Smartphone Architecture. ACM Transactions on Computer Systems (TOCS), 30(3):9:1--9:31, August 2012. (Invited Paper)
Jeremy Andrus, Christoffer Dall, Alexander Van't Hof, Oren Laadan, Jason Nieh. Cells: A Virtual Mobile Smartphone Architecture. Proceedings of the 23rd ACM Symposium on Operating Systems Principles (SOSP 2011), Cascais, Portugal, October 2011. (Best Paper Award) (Source Code, Video Demo)
Cycada Project (formerly "Cider"):
Cells Project:The Cells technology has been licensed exclusively by Cellrox, a startup built around it.
Alexander Van't Hof
Dept of Computer Science
509 CS Building
500 West 120 Street
New York, NY 10027
My Public Key