I created Tiled Grace, the first dual-mode block-based/textual hybrid programming system, and continue to explore further interfaces for programming beyond the conventional lines-of-text editor. I have a particular focus on multiple-representation programming systems, and approaches to support non-programmers and novices. My work with Deacon McIntyre on a graph-based system for creating cellular automata won an award at VL/HCC.
Some of the publications in this area include:
I work particularly on enabling features within languages, ones that open up significant new areas of functionality without major changes in the language. Some of my work on the Grace language grew pattern-matching and typing functionality out of standard object-oriented features with minimal intrusion on the rest of the language, which was influential on other languages. Similarly, my work with Timothy Jones on models of object-based inheritance explored several styles of code reuse from multiple angles, investigating trade-offs and which existing functionality supported which paradigms.
Some of the publications in this area include:
I am a long-time developer of GoboLinux, a Linux distribution with a unique filesystem-driven package management approach, and was the principal designer of its “Aliens” system for integrating third-party package managers like RubyGems and CPAN into the operating system. I am interested in operating system design at the user level, particularly how the system can facilitate users constructing novel connections and integrations between unrelated software to suit their needs, which began with my work building on the Lively Kernel in 2010. I continue to explore models for supporting ad-hoc user-centred system-level interoperability.
Concatenative programming languages facilitate composition of computations over other operations, and I have worked on finding where this and other unconventional paradigms are constructive, including where they can be integrated with other systems.
I have done significant work on the Grace language, an object-oriented language aimed at introductory teaching, where I focused on a number of features to assist novice learners, including restricted sublanguages, error reporting, and user interfaces. I have also explored instructional delivery for atypical students and measures for identifying learners who can benefit from targetted interventions. My work on Grace won a retrospective award in 2024 for the most notable paper of Onward! 2012.