Runtime development
Program data and logic can be queried and changed directly in memory instead of requiring an edit/compile/restart cycle for every change.
Software Engineer & Engineering Leader
I build products and lead engineering teams across graphics, user interfaces, distributed systems, and AI. Drawing on a Ph.D. in Computer Graphics and extensive industry experience, I've worked from research and architecture to production software and developer tools.
I enjoy translating new technologies and research into practical software, including the integration of AI into commercial products. As a manager and hands-on engineer, I've built and mentored teams while working across head-worn displays, desktops, public displays, web and mobile platforms, distributed systems, and hardware integrations.
Research
My Ph.D. work introduced and coined the term View Management—an approach to user-interface design centered on managing what you see, using layout to control spatial relationships between objects while respecting visibility constraints.
The techniques control what users see across interfaces ranging from 2D desktops to immersive 3D environments, from view-only presentations to interactive systems, and from single-user to collaborative applications. The ideas remain especially relevant to virtual and augmented reality, where information has to remain visible, stable, and understandable inside a changing 3D scene.
A summary of the techniques and how they can be applied to interactive 3D applications.
These algorithms have also been enhanced for lower CPU usage, larger environments, more stable annotation placement, and runtime control over layout strategies.
Software platform
Data Programming is a software platform for building distributed applications that run across platforms and work together interactively. The central idea is simple: a program is an in-memory database.
DP embeds a program's logic directly into tabular structures. It is not simply another programming language; it is a different way of structuring and changing software at runtime. I built DP engines for iOS, Android, JavaScript, desktop Java, and C++, along with an IDE for building distributed applications across devices on the fly.
Examples of applications built around distributed tabular program structures.
Program data and logic can be queried and changed directly in memory instead of requiring an edit/compile/restart cycle for every change.
Standalone, client-server, and peer-to-peer applications can share the same programming model across multiple devices.
Devices can discover, connect, join, and leave at any time without relying on a central server or requiring application-specific communication protocols.
The same concepts can be implemented on mobile, web, and desktop systems rather than maintaining a separate architectural model for each.
I implemented an IDE for creating applications on multiple devices at runtime. Connected devices can participate over Wi-Fi or Ethernet, distributed tables can be defined and visualized dynamically, and applications can be developed without writing new socket APIs for each device relationship.


Hot code swapping typically focuses on changing existing compiled functions at runtime and can have limitations when a structural change affects existing objects. In DP, changes are made to the program's tabular structures directly in memory. A structural operation such as adding a member variable is analogous to adding a column to a table and is implemented by the DP engine.
Traditional reflection exposes special APIs for examining program structure. DP treats program structure itself as queryable data: tables, columns, rows, relationships, and system information can be inspected and modified through the same model used by application data.
Examples & demos
My work spans research, commercial software, engineering management, developer tooling, and interactive 3D systems. These projects explore approaches to difficult problems in spatial interfaces, visualization, and distributed applications through working implementations and prototypes.
Interactive labeling and navigation for online 3D shopping experiences.
Applying interactive 3D labels and navigation to apartment and real-estate experiences.
A head-mounted-display system integrating battlefield information, video feeds, and connected devices.
A distributed workflow prototype showing devices joining and leaving a running application.
A distributed-display concept for helping people navigate unfamiliar physical spaces.

A tile-based map using Space Management algorithms to place multiple popups without overlap. Open demo ↗
Research record
Background
I have more than 15 years of experience building commercial software and leading engineering teams, with a background spanning computer graphics, visualization, user interfaces, distributed systems, and developer tools. I enjoy working at the intersection of technical leadership and hands-on engineering—building teams, mentoring engineers, defining architecture, and working directly on difficult technical problems.
My Ph.D. in Computer Science from Columbia University focused on Computer Graphics and introduced View Management, an approach for addressing difficult layout and interaction problems in visualization, virtual reality, and augmented reality. My research has resulted in four patents as well as numerous publications and presentations.
At Workday, I led engineering teams working on Discovery Boards, Aurora, and Earth, with responsibility for both people and technical direction. More recently, I led frontend engineering at a startup building highly interactive software for understanding and managing distributed systems.
Earlier in my career, I built commercial 3D drug-discovery software at Schrödinger and served as technical lead for PyMOL. As co-founder of Ravn, I helped build a distributed, multi-user battlefield visualization system using head-mounted displays and integrating information from numerous devices and data sources.
Throughout my career, I’ve remained a hands-on engineer while taking on increasing responsibility for teams and products. I particularly enjoy building strong teams and tackling ambitious technical problems together.
Blaine Bell
blaine@blainebell.org