Research areas

Object-oriented programming language features

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:

Hybrid and visual programming interfaces

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 systems to support non-programmers and novices, or people who do not see themselves as programmers but want to instruct the computer on a task. 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:

Operating system design

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.

Compositional programming languages and other underexplored paradigms

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.

Programming education

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.

Michael Homer — 2021