Roger Hui

Job Role

Flag of Canada

Role Summary

Roger Kwok Wah Hui (December 29, 1953 – October 16, 2021 was a computer scientist and co-developer of the programming language J, and later Dyalog APL. He ran and maintained the Jsoftware website.

Biography

Hui was born in Hong Kong in 1953, and immigrated with his family to Edmonton in 1966. He enrolled at the University of Alberta in 1973, where he learned APL primarily from the APL\360 User’s Manual when it was required for a probability and statistics course in his second year. Hui retained his interest in APL, and was hired by Lib Gibson to work as a summer student at the Calgary branch of I.P. Sharp Associates (IPSA) for two summers, 1975 and 1976. After graduating with a B.Sc. in computer science, he was hired by IPSA’s Edmonton branch in May 1977. He left in 1979 to pursue a computer science M.Sc. at the University of Toronto, and graduated in 1981 with a thesis titled The complexity of some decompositions in matrix algebra detailing a recursive approach to operations including the Gram–Schmidt process for QR decomposition giving them the same computational complexity as matrix multiplication; this work would later be used for J’s matrix divide primitive. Before graduation he also met Ken Iverson for the first time, in 1981.

Background The stencil operator ⌺ was introduced in Dyalog version 16.0 in 2017. Recently we received some feedback (OK, complaints) that (a) stencil does... Read
The following are my attempts at the Phase I problems of the 2019 APL Problem Solving Competition. There are not necessarily “right answers” as personal... Read
Lexicographic Ordering Lexicographic ordering is what the APL primitives ⍋ and ⍒ provide: ⎕io←0 ⍝ ⎕io delenda est ⎕rl←7*5 ⍝ to get... Read
Rational Arithmetic

Rational Arithmetic

Computing with rational numbers opens new vistas. For example: +∘÷ 10 ⍴ 1 1 2 1.5 1.66667 1.6 1.625 1.61538 1.61905 1.61765 1.61818 ⍕Q (+Q)∘(÷Q) 10 ⍴ qi 1 1 2 3r2 5r3 8r5 13r8 21r13 34r21 55r34 89r55 Roger presents a facility for ext...View

/

Inverted Tables

Inverted Tables

A table is 2-dimensional data in which the items of a column have the same datatype; an inverted table is a table in which the columns are nested. An inverted table is more efficient in time and space than other representations. Roger presents some u...View

/

Tests, Derivations, Proofs

Tests, Derivations, Proofs

John Hughes and Mary Sheeran in Why Functional Programming Matters [0] list “algebra as a litmus test” as one of the four salient features of functional programming, and Ken Iverson in Notation as a Tool of Thought [1] lists “amenability to for...View

/

Index-Of on Multiple Floats

Index-Of on Multiple Floats

On and off for the past two decades, Roger has been searching for a way to efficiently look sub-arrays of one floating-point array up in another. The introduction of the interval index (⍸) function at Dyalog version 16.0 inspired a critical insight...View

/

Tolerant Unique

Tolerant Unique

The implementation of the unique primitive (monadic ∪) can return incorrect results when applied tolerantly (⎕CT≠0) to floating-point numbers. This problem is obviously very rare, since the same bug has affected all APL interpreters that implem...View

/

Performance: The Neverending Story

Performance: The Neverending Story

The graphs of the results of Dyalog's daily PQA tests show the performance change between two versions of Dyalog. Roger explains how he uses these graphs to identify specific areas to target his efforts, and has achieved a 25% performance increase fo...View

/

Meet the Dyalog Team

We’re a small team spread across half a dozen countries, united by a shared belief that powerful software doesn’t have to be complicated. A lot of us have been here for years, some for decades, because there’s still no shortage of interesting problems to solve.

Mike Mingard
Mike
Designer
Flag of the United Kingdom
Josh David
Josh
APL Consultant
Flag of U.S.A.
Martina Crippa
Martina
APL Consultant
Flag of Denmark
Peter Mikkelsen
Peter
Core Developer
Flag of Denmark
…or perhaps even join the team!