Problems in UI Engineering

Adam Solove commits continual attention to three persistent problems in user-interface engineering: structured concurrency, understandable behavior, and data synchronization. post

Structured Concurrency. Especially on the web, but also in native mobile development, it is still very easy to get concurrent behavior wrong. It is rare to see the code of a user interface that doesn’t have data races or use-after-dead problems related to components that fire off asynchronous chains that eventually trigger mutations.

Understandable Behavior. When building interactive systems, it is enormously difficult to understand their behavior because of the enormous state-space. You have to consider all the system’s data and operations multiplied by all the possible sequences of the user’s interactions.

Data Synchronization. The network eventually absorbs every application that used to live only on a single computer. From making small web apps work while offline to correctly merging multiple users’ edits on large documents, we are going to need a wide array of options for synchronizing data.


Adam has left an indelible mark on federated wiki as an early contributor. We've since sought to sidestep or postpone the remaining difficult problems he astutely characterizes for all distributed interacting systems.