academic homepage at ETS,
research papers and videos,
google scholar profile,
youtube channel,
twitter account,
substack blog.

Selected research projects:

muqcs, a quantum circuit simulator written in JavaScript, capable of simulating ≈10+ qubits in a web browser and computing partial traces, purity, concurrence, and von Neumann entropy of each pair of qubits; or simulating up to ≈20+ qubits if the user just wants to compute a circuit's output and has no need to compute density matrices. A graphical front-end for Muqcs is currently under development.

A comparison of virtual networks in VR and physical 3D printed networks augmented with a HoloLens

My tutorial talk about information visualization given at ALife 2020

Categories and Completeness of Visual Programming and Direct Manipulation presented at AVI 2020: a taxonomy and discussion of Turing-completeness and GUI-completeness

Enlarging a Smartphone with AR to Create a Handheld VESAD (Virtually Extended Screen-Aligned Display) presented at ISMAR 2018

Multitouch Radial Menu presented at AVI 2016 survey of visualizations of financial data, published 2014. (Follow-up work by Ko et al.)

Generalized Plot Matrix (GPLOM) is a way of visualizing multidimensional multivariate data, published 2013. (Some really nice follow-up work by others: Domino by Gratzl et al., 2014.)

Analysis of the Space-Efficiency of Visualizations of Trees, published 2010. (Related work on tree visualization by others that I really admire: and Schulz et al. 2013 (website, demo, video))

A hotbox (popup widget) for interacting with a graph visualization; won an Honorable Mention at IEEE InfoVis 2009

NodeTrix, a hybrid graph visualization that combines node-link diagrams with adjacency matrices, published 2007. (Very relevant follow-up work on hybrid visualizations by others: Javed and Elmqvist, 2012)

Elastic Hierarchies, a hybrid tree visualization that combines node-link diagrams with treemaps, published 2005

Visualizing genealogies, published 2005. (Really nice follow-up work by others: GeneaQuilts)

Visualizing volumetric data, published 2003. (If you're interested in more recent related work, especially with nicer rendering, check out work by Carlos Correa and the book Real-Time Volume Graphics by Engel et al.)

For profs and instructors:

Course slides on HCI topics that I've translated to English
Slides about recent trends in user interfaces (updated 2016)
Slides showing examples of user-centered design (2015)
Slides about the use of sketching to generate design ideas (updated 2016) (adapted from slides by the authors of this book by Saul Greenberg, Sheelagh Carpendale, Nicolai Marquardt, and Bill Buxton)
Slides about prototyping user interfaces (updated 2016)
Slides about JavaScript programming (updated 2016)
Examples of JavaScript that draw on a canvas, retrieve mouse events, retrieve multitouch input events, compute a convex hull in 2D and perform principle component analysis on a set of 2D points, simulate a fluid in 2D, perform force-directed layout of a network in 2D, and draw a 3D mesh with no special libraries
Examples of JavaScript using D3 to generate a barchart and scatterplot, demonstrating 3 ways to read in a CSV data file
Slides on information visualization (updated 2016)
A few figures illustrating concepts in visualization (updated 2012)
Slides about Fitts' law (updated 2016)
Slides about gesture recognition algorithms (2016)
Videos demonstrating and explaining a few popup widgets: radial menus, control menus, marking menus, marking menus versus linear menus.
A youtube playlist of over a dozen techniques for drawing, sketching, and animation: playlist
A youtube playlist of over 80 videos showing gestural interaction techniques, menus, and widgets for multitouch input and stylus input: playlist

For programmers:

A tutorial on algorithms for visualizing graphs / networks. Check out the follow-up notes written after the article was published.

JWinPointer.jar is a Java library for multitouch and stylus pen input events on Microsoft Windows 10

Notes for programmers on reading raw input events over USB from a Wacom Cintiq 24HD touch on Linux using C++ or Java, or on MS Windows 7 using Java (updated 2014).

For anyone interested in science:

Turning a sphere inside out

The most interesting videos I've seen on youtube

An incomplete list of the most interesting things I've learned in my life