Gneiss by Kerry Shih-Ping Chang | kerrychang [at]


Gneiss is a spreadsheet tool for using and analyzing online data. It contributes many extensions to the conventional spreadsheet model to support using and analyzing web service and other hirarchical data, and creating interactive, data-driven web applications. Gneiss introduces the following innovations:

  1. It provides a unified model for exchanging data with arbitary REST web services without writing conventional code. Gneiss has a "source pane" where users can load or stream JSON data from web services and local files. It lets users construct two-way data flows between multiple web services and a spreadsheet using spreadsheet languages and interaction techniques. Data in the spreadsheet is dynamic, as changes in spreadsheet cells could trigger new API requests to send spreadsheet data to a web service, and in turn update the spreadsheet with the latest returned values (see our paper at VL/HCC'14).

  2. It introduces new visualization methods, spreadsheet language syntax and interaction techniques to support using hirarchical data and streaming data. Gneiss shows hirarchies in data using nested tables and lets users reshape and regroup JSON objects by any field using interaction techniques. It extends spreadsheet langauges to support selecting hirarchical data and calculating summaries of data. Streaming data is shown as a dynamic spreadsheet column whose length grows over time as new data come in. Spreadsheet cells can be manipulated using temperal information of when its value arrives to support using time-series data (see our paper at CHI'16 on using hirarchical data and CHI'15 on using streaming data).

  3. It extends the spreadsheet model to support programming web applications that can access and modify spreadsheet data using the familiar spreadsheet language. Gneiss extends spreadsheet language syntax to let GUI element properties be referenced and used in spreadsheet formulas as spreadsheet cells, allowing the user to program two-way data bindings between the web application and the spreadsheet. It also contributes a way to program interactivities in web applications using the spreadsheet’s equation-based (“pull-based”) evaluation model instead of the conventional event-based ("push-based") model (see our paper at UIST'14).


Kerry S. Chang. "A Spreadsheet Model for Using Web Services and Creating Data-Driven Applications", PhD Thesis. May 2016. [local]

Kerry S. Chang and Brad A. Myers. "Using and Exploring Hirarchical Data in Spreadsheets", Proceedings ACM CHI'16. San Jose, CA, May 7-12, 2016. pp. 2497-2507. [acm] [local]

Kerry S. Chang and Brad A. Myers. "A Spreadsheet Model for Handling Streaming Data", Proceedings ACM CHI'15. Seoul, South Korea, April 18-23, 2015. pp. 3399-3402. [acm] [local]

Kerry S. Chang and Brad A. Myers. "Creating Interactive Web Data Applications with Spreadsheets", Proceedings ACM UIST'2014. Honolulu, Hawaii, October 5-8, 2014. pp. 87-96. [acm] [local]

Kerry S. Chang and Brad A. Myers. "A Spreadsheet Model for Using Web Service Data", Proceedings IEEE VL/HCC'2014. Melbourne, Australia, July 28 - August 1, 2014. pp. 169-176. [ieee] [local]

Kerry S. Chang and Brad A. Myers. "A Spreadsheet Tool for Creating Web Applications Using Online Data", CHI'2015 Workshop on End User Development in the Internet of Things Era, April 19, 2015, Seoul, Korea. [local]

Watch Demo Videos

1. Creating interactive web data applications that use web services (details in our publications at UIST'14 and VL'14):

Download the video (58 MB. Right click and choose "Save link as")

2. Exploring and analyzing hirarchical data (details in our publication at CHI'16):

Download the video (63 MB. Right click and choose "Save link as")


Gneiss contains a source panel (left) for loading web data sources, a spreadsheet editor (center) for storing and manipulating data, and a web interface builder (right) for creating web applications.


Click here to download Gneiss's source code.