Building Augmented Reality (AR) systems is a software engineering art. It requires making choices among a set of trade-offs. On one hand, you have complex computer vision and machine learning algorithms that burn many CPU cycles; and on the other hand, you have the conflicting goal of getting the system to be as lean as possible since AR runs on resource-limited hardware such as wearables or mobile devices. This talk will explore how designing AR software is very much like the problem of designing distributed systems.
Like distributed systems, in AR: - We also need highly concurrent systems to take advantage of the many cores in cellphones. Concepts like message queues and "producers-consumers" become valuable tools to reason about computation abstractions on images and sensor data. - We also need highly available systems with an instant response due to the requirement of real-time interactions from the users with AR experiences. - We also need caching mechanisms to enable data locality for AR data retrieval.