Michael Homer

dblp:120/5118 · DBLP profile ↗
← Back
25ranked-venue papers
7as first author
7since 2021 · last 2025
0000-0003-0280-6748ORCID · corroborated

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 18 · 7 first-author · 7 since 2021Human-computer interaction and ubiquitous computing · 7 · 2 first-authorComputer networks · 2Databases, data management, data science and information retrieval · 1 · 1 since 2021
YearPublicationVenuePosition
2025 Syntest-ACR: Automated Crash Reproduction for Javascript
abstract
Automated Crash Reproduction (ACR) is an area of software testing research that aims to reproduce software crashes to improve developers' ability to debug programs. There has been little progress in applying ACR techniques to JavaScript, as the highly dynamic nature of JavaScript poses challenges for program analysis and synthesis. We present SynTest-ACR, the first tool for ACR in JavaScript, applying artificial intelligence techniques to evolve suitable reproduction cases. We have evaluated SynTest-ACR against the CrashJS dataset consisting of 453 crashes. As a baseline, we ported the state-of-the-art searchguiding fitness function from EvoCrash for Java, finding that it performs much worse when applied to JavaScript programs, and through comprehensively designing and evaluating alternative fitness functions more suitable for JS ACR we obtain an 18.9% increase in reproduction rate over this baseline for Syntest-ACR.
Philip Oliver, Jens Dietrich 0001, Craig Anslow, Michael Homer
ICSME4
2025 JDala - A Simple Capability System for Java
abstract
Dala is a novel capability-based programming model that ensures data-race freedom while also supporting efficient inter-thread communication. While Dala has been designed to inform the design of future programming languages, the question arises whether existing languages can be retrofitted with Dala capabilities. We report such a design called JDala. In JDala, Dala capabilities are added to Java using annotations and interpreted using bytecode instrumentation. With some examples we demonstrate that by adding three simple annotations to the language, we can avoid concurrency bugs like deadlocks and unexpected program behaviour resulting from shallow immutability of Java standard library APIs. JDala demo: https://youtu.be/QddK1q35h-U
Quinten Smit, Jens Dietrich 0001, Michael Homer, Andrew Fawcet, James Noble 0001
ICSME3
2024 Dafny vs. Dala: Experience with Mechanising Language Design
abstract
Dala is a design for a concurrent dynamic object-oriented language. A key goal of Dala's design is to avoid data races, by ensuring threads do not share mutable state. In this paper we discuss our experience using the program verification tool Dafny to validate Dala's design. We explain how we modelled salient features of Dala in Dafny, and how Dafny did (or did not) assist our confidence in Dala's design.
James Noble 0001, Julian Mackay, Tobias Wrigstad, Andrew Fawcet, Michael Homer
FTfJP@ECOOP5
2024 CrashJS: A NodeJS Benchmark for Automated Crash Reproduction
abstract
Software bugs often lead to software crashes, which cost US companies upwards of $2.08 trillion annually. Automated Crash Reproduction (ACR) aims to generate unit tests that successfully reproduce a crash. The goal of ACR is to aid developers with debugging, providing them with another tool to locate where a bug is in a program. The main approach ACR currently takes is to replicate a stack trace from an error thrown within a program. Currently, ACR has been developed for C, Java, and Python, but there are no tools targeting JavaScript programs. To aid the development of JavaScript ACR tools, we propose CrashJS: a benchmark dataset of 453 Node.js crashes from several sources. CrashJS includes a mix of real-world and synthesised tests, multiple projects, and different levels of complexity for both crashes and target programs.
Philip Oliver, Jens Dietrich 0001, Craig Anslow, Michael Homer
MSR4
2024 Reclaiming the Unexplored in Hybrid Visual Programming
abstract
Programming languages have been trapped in a world of linear textual representations fundamentally unchanged for half a century. Even systems pushing beyond these forms — visual languages, projectional language workbenches, and end-user programming tools — largely ape the strictures of stream-of-bytes compilers and confine themselves to the popular paradigms of conventional textual systems. Instead of recreating what succeeded in textual paradigms, new programming systems should also be exploring what did not — the confounding, confusing, convoluted approaches that fell by the wayside — with the sorts of direct manipulation, spatial connection, and change over time that textual languages could never match; and they should use their control of presentation to let the user choose the right representation for a piece of code in the moment — and change it. We argue that these two points unlock new frontiers for programming systems, and present preliminary explorations to highlight how multiple-representation environments can lower the pressure on more speculative visual paradigms, to encourage more investigation of this underexamined space.
Michael Homer
Onward!1
2022 Using Functional Reactive Programming to Define Safe Actor Systems
abstract
Functional Reactive Programming (FRP) is a powerful abstraction for building deterministic concurrent systems. However, some programmers prefer a more imperative approach for certain tasks, and that approach is required to implement some imperative algorithms. The Actor Model provides an abstraction for building concurrent systems in a more imperative way without as much of the chaos typical of traditional shared-memory imperative concurrent programming. While the Actor Model offers more structure than other imperative approaches, it still suffers from nondeterminism due to message-ordering and processing times. That makes actor systems hard to reason about, limiting their effectiveness for critical tasks. We formally define an elegant multi-paradigm unification of event-driven FRP constructs and the Actor Model. Our unification enables an intuitive form of declarative programming that can integrate imperative and declarative code within each other. We use reference and object capabilities to tame imperative features: reference capabilities track aliasing and mutability, and object capabilities track I/O. Notably, in our system expressions with deeply immutable input behave deterministically. Additionally, capabilities provide a boundary to allow nondeterministic code to intermingle safely with deterministic code.
Nick Webster, Marco Servetto, Michael Homer
FTfJP@ECOOP3
2021 A Partial Reproduction of A Guided Genetic Algorithm for Automated Crash Reproduction
abstract
This paper is a partial reproduction of work by Soltani et al. which presented EvoCrash, a tool for replicating software failures in Java by reproducing stack traces. EvoCrash uses a guided genetic algorithm to generate JUnit test cases capable of reproducing failures more reliably than existing coverage-based solutions. In this paper, we present the findings of our reproduction of the initial study exploring the effectiveness of EvoCrash and comparison to three existing solutions: STAR, JCHARMING, and MuCrash. We further explored the capabilities of EvoCrash on different programs to check for selection bias. We found that we can reproduce the crashes covered by EvoCrash in the original study while reproducing two additional crashes not reported as reproduced. We also find that EvoCrash was unsuccessful in reproducing several crashes from the JCHARMING paper, which were excluded from the original study. Both EvoCrash and JCHARMING could reproduce 73% of the crashes from the JCHARMING paper. We found that there was potentially some selection bias in the dataset for EvoCrash. We also found that some crashes had been reported as non-reproducible even when EvoCrash could reproduce them. We suggest this may be due to EvoCrash becoming stuck in a local optimum.
Philip Oliver, Michael Homer, Jens Dietrich 0001, Craig Anslow
ICSME2
2020 Poster: A Visual Programming Language for Cellular Automata
abstract
Cellular automata are simulations of cells interacting with each other based on simple rules. Despite the simplicity, they can exhibit complex behaviour, and have a number of applications in fields such as medicine, biology, mathematics, and more. As a result, people from a variety of different backgrounds and skill-sets may find cellular automata useful to their work or research. There exist tools to explore well-known automata, but many require some form of textual programming ability, or do not offer easy and approachable ways to customise automata. Our software aims to be more accessible for those without backgrounds in programming or cellular automata, to allow users to more easily explore and modify automata. To achieve this, we have developed a visual programming language, where users can connect components to create their own automata from scratch, without any textual programming.
Deacon McIntyre, Michael Homer
VL/HCC2
2019 First-class dynamic types
abstract
Since LISP, dynamic languages have supported dynamically-checked type annotations. Even in dynamic languages, these annotations are typically static: tests are restricted to checking low-level features of objects and values, such as primitive types or membership of an explicit programmer-defined class.
Michael Homer, Timothy Jones 0002, James Noble 0001
DLS1
2019 Transient Typechecks Are (Almost) Free
Richard Roberts 0004, Stefan Marr, Michael Homer, James Noble 0001
ECOOP3
2019 Taxonomy of Package Management in Programming Languages and Operating Systems
abstract
Package management is instrumental for programming languages and operating systems, and yet it is neglected by both areas as an implementation detail. For this reason, it lacks the same kind of conceptual organization: we lack terminology to classify them or to reason about their design trade-offs. In this paper, we share our experience in both OS and language-specific package manager development, categorizing families of package managers and discussing their design implications beyond particular implementations. We also identify possibilities in the still largely unexplored area of package manager interoperability.
Hisham Muhammad, Lucas Correia Villa Real, Michael Homer
PLOS@SOSP3
2019 Co-located Collaborative Block-Based Programming
abstract
With the increasing need to teach programming to novices using collaborative methods like pair programming, it is important to understand how different input devices can help support collaborative learning. In this paper we present Multi-Device Grace, the first application to explore block-based programming in a cross-device environment consisting of digital tabletops, mobile tablets, and laptops. We conducted a user study (n = 18) to explore how cross-device environments can support co-located collaborative block-based programming. The study used Tiled Grace, an existing block-based programming language, and our extensions: Tabletop Grace (designed for tabletops) and Mobile Grace (designed for tablets). Our results show that the majority of participants felt they were able to collaborate quickly and easily, and the cross device interaction would be particularly beneficial in an education setting.
Ben Selwyn-Smith, Craig Anslow, Michael Homer, James R. Wallace
VL/HCC3
2018 The Practice of a Compositional Functional Programming Language
Timothy Jones 0002, Michael Homer
APLAS2
2018 An Agile Conversion Masters Degree Programme in Software Development
abstract
The Information and Communications Technology (ICT) industry in New Zealand is growing rapidly. The traditional university courses are preparing an insufficient number of graduates to sustain the growth. Many of the traditional graduate students lack key soft skills that are important in team based software development. This paper reports on the development of a conversion Master of Software Development degree. The students are all graduates with little or no computer science degrees, are taught key programming skills, with a focus on agile development. The programme begins by focusing on individual programming skills through solving problems. Later industrial partners are engaged by providing industrial problems to agile teams of students. The industrial partners are active partners in the agile teams as product owners. By solving the problems, the students develop both technical and non-technical skills while utilizing the skills obtained from previous studies. The results from the first year of the programme are encouraging. A key result is that a high number of students found work in paid IT positions before graduating. The main issue of the first year was introducing too many topics at the same time, over-assessment, not enough communication and contact time, little opportunity for the students to make their own experiences, and learning by making mistakes. The programme has been changed for the next year/s cohort to introduce less topics at once, provide time and space for learning, and a redesign of scheduling assessments.
Karsten Lundqvist, Craig Anslow, Michael Homer, Kris Bubendorfer, Dale Anthony Carnegie
SIGCSE3
2017 Optimising channel assignment to prevent flow starvation and improve fairness for planning single radio WMNs in built environments
Ying Qu 0005, Bryan C. K. Ng, Michael Homer
Comput. Networks3
2017 A goodput distribution model for planning IEEE 802.11 WBNs in built environments
Ying Qu 0005, Bryan C. K. Ng, Michael Homer
J. Netw. Comput. Appl.3
2016 Object Inheritance Without Classes
abstract
Which comes first: the object or the class? Language designers enjoy the conceptual simplicity of object-based languages (such as Emerald or Self) while many programmers prefer the pragmatic utility of classical inheritance (as in Simula and Java). Programmers in object-based languages have a tendency to build libraries to support traditional inheritance, and language implementations are often contorted to the same end. In this paper, we revisit the relationship between classes and objects. We model various kinds of inheritance in the context of an object-oriented language whose objects are not defined by classes, and explain why class inheritance and initialisation cannot be easily modelled purely by delegation.
Timothy Jones 0002, Michael Homer, James Noble 0001, Kim B. Bruce
ECOOP2
2015 From APIs to languages: generalising method names
abstract
Method names with multiple separate parts are a feature of many dynamic languages derived from Smalltalk. Generalising the syntax of method names to allow parts to be repeated, optional, or alternatives, means a single definition can respond to a whole family of method requests. We show how generalising method names can support flexible APIs for domain-specific languages, complex initialisation tasks, and control structures defined in libraries. We describe how we have extended Grace to support generalised method names, and prove that such an extension can be integrated into a gradually-typed language while preserving type soundness.
Michael Homer, Timothy Jones 0002, James Noble 0001
DLS1
2015 Brand Objects for Nominal Typing
abstract
Combinations of structural and nominal object typing in systems such as Scala, Whiteoak, and Unity have focused on extending existing nominal, class-based systems with structural subtyping. The typical rules of nominal typing do not lend themselves to such an extension, resulting in major modifications. Adding object branding to an existing structural system integrates nominal and structural typing without excessively complicating the type system. We have implemented brand objects to explicitly type objects, using existing features of the structurally typed language Grace, along with a static type checker which treats the brands as nominal types. We demonstrate that the brands are useful in an existing implementation of Grace, and provide a formal model of the extension to the language.
Timothy Jones 0002, Michael Homer, James Noble 0001
ECOOP2
2014 Graceful Dialects
Michael Homer, Timothy Jones 0002, James Noble 0001, Kim B. Bruce, Andrew P. Black
ECOOP1
2014 Combining Tiled and Textual Views of Code
abstract
Jigsaw puzzle programming environments manipulate programs primarily by drag-and-drop. Generally these environments are based on their own special-purpose languages, meaning students must move on to another language as their programs grow. Tiled Grace is a tile-based editor for Grace, an educational programming language with a conventional textual syntax. Using Tiled Grace, programmers can move seamlessly between visualising their programs as tiles or source code, editing their programs via tiles or text, and continue on to traditional textual environments, all within the same programming language. We conducted a user experiment with Tiled Grace, and present the results of that experiment showing that users find dual views helpful.
Michael Homer, James Noble 0001
VISSOFT1
2013 Designing Grace: Can an introductory programming language support the teaching of software engineering?
abstract
Many programming language constructs that support software engineering in the large - explicit variable declarations, explicit external dependencies, static types, information hiding, invariants-provide little benefit to the small programs written by novice programmers, where every extra syntactic token has to be explained and understood before novices can succeed in running even the simplest program. We are designing Grace, a new educational object-oriented language that we hope will prove useful for teaching both programming and software engineering. This paper describes some of the tradeoffs between teaching programming and teaching software engineering that we faced while designing Grace, and our attempts to address those tradeoffs.
James Noble 0001, Michael Homer, Kim B. Bruce, Andrew P. Black
CSEE&T2
2013 Seeking grace: a new object-oriented language for novices
abstract
Grace is a new object-oriented language that supports a variety of approaches to teaching programming. It integrates accepted new ideas in programming languages into a simple language that allows students and teachers to focus on the essential complexities of programming rather than the accidental complexities of the language. We motivate Grace, review its design, and evaluate it against Kolling's criteria.
Andrew P. Black, Kim B. Bruce, Michael Homer, James Noble 0001, Amy Ruskin, Richard Yannow
SIGCSE3
2013 A tile-based editor for a textual programming language
abstract
“Jigsaw puzzle” programming environments manipulate programs primarily by drag-and-drop. Generally these environments are based on their own special-purpose languages, meaning students must move on to another language as their programs grow. Tiled Grace is a tile-based editor for Grace, an educational programming language with a conventional textual syntax. Using Tiled Grace, programmers can move seamlessly between visualising their programs as tiles or source code, editing their programs via tiles or text, and continuing on to traditional textual environments, all within the same programming language.
Michael Homer, James Noble 0001
VISSOFT1
2012 Patterns as objects in grace
abstract
Object orientation and pattern matching are often seen as conflicting approaches to program design. Object-oriented programs place type-dependent behavior inside objects and invoke it via dynamic dispatch, while pattern-matching programs place type-dependent behavior outside data structures and invoke it via multiway conditionals (case statements).
Michael Homer, James Noble 0001, Kim B. Bruce, Andrew P. Black, David J. Pearce 0001
DLS1