Dan Baronet

Daniel Baronet (6 May 1956–1 Nov 2016), also known as APLtrainer, was an APL (and later J) programmer since 1976, working for I.P. Sharp Associates in Melbourne, Toronto, Montreal, and Copenhagen, from 1983 to 1988, and for Dyalog Ltd from 2006 until his death.

Baronet was responsible for Dyalog's Simple APL Library Toolkit (SALT) and its framework for user commands (affectionately known as spice), but also worked on many other APL tools through his company Milinta Inc, specialising in the development of free open-source tools to transfer of APL code between dialects. He was a prolific writer and presented at many events.

The "Dan Baronet special"
Baronet was famous for innovative uses of APL primitives. He's credited with discovering that  or, as he preferred writing it, , counts the number of trailing ones in the Boolean vector  :

(Decode) performs base conversion. If the left argument is a vector, it performs mixed base conversion.

For a base vector $$b = b_n,\cdots,b_0$$ and a digit vector $$a = a_n,\cdots, a_0$$,  converts $$a$$ to the mixed base $$b$$, i.e., it computes $$b_0\cdots b_{n-1}a_n + \cdots + b_0b_1a_2 + b_0a_1 + a_0$$.

Now, in a monadic context,  (Commute) causes the function to the left to be called with equal left and right arguments.

So  is defined as , which computes $$a_0\cdots a_n + \cdots + a_0a_1a_2 + a_0a_1 + a_0$$, the sum of all cumulative products from the right to the left.

For  trailing ones, the   rightmost products are   and all others are , so their sum is equal to.

Publications

 * Articles in the Vector journal
 * APLtrainer ― YouTube videos

APL conferences

 * APL03: NAVPLANR (NP): flight navigation planning software.

Dyalog user meetings

 * Dyalog '06 W05: Introduction to Object Oriented Programming using Dyalog version 11.0 (materials)
 * Dyalog '07 05: SALT, Subversion and the Dyalog Code Library (materials)
 * Dyalog '07 W01: Introduction to Object Oriented Programming using Dyalog version 11.0
 * Dyalog '08 W04: Source Code Management using SALT and Subversion (materials)
 * Dyalog '08 W08: Introduction to Object-Oriented Programming (materials)
 * Dyalog '09 C02: Introduction to Object-Oriented Programming (materials)
 * Dyalog '09 C06: Source Code Management using SALT and SubVersion (part I) (materials)
 * Dyalog '09 C09: Source Code Management using SALT and SubVersion (part II)
 * Dyalog '10 TU3: User Commands in Dyalog APL
 * Dyalog '11 C01: Introduction to Object-Oriented Programming (materials)
 * Dyalog '11 C06: Windows Presentation Foundation (materials) (with Michael Hughes)
 * Dyalog '11 C07: Productivity Tools for Dyalog Users (materials)
 * Dyalog '12 D07: New SALT features and User Commands
 * Dyalog '12 C02: User Commands (materials)
 * Dyalog '12 C07: Starting a New Application in Dyalog APL (materials) (with Morten Kromberg)
 * Dyalog '12 C09: Managing External Data III (materials) (with Gitte Christensen)
 * Dyalog '13 D15: User Command Update (slides)
 * Dyalog '13 SA03: OO and CC
 * Dyalog '13 SP03: User Commands
 * Dyalog '14 SA03: Parallel Programming with Futures and Isolates (materials) (with Morten Kromberg)
 * Dyalog '14 SP02: The Ins and Outs of Data (SQAPL, XML, JSON, Excel, Syncfusion Data Objects, ZIP files, …) (materials) (with Brian Becker)
 * Dyalog '14 TP04: Version 14.0 Language Features in Practice (slides)
 * Dyalog '15 D05: User Commands Update (with Adám Brudzewsky)
 * Dyalog '15 D10: MiServer UI Controls (slides) (with Adám Brudzewsky)
 * Dyalog '16 D04: Tools Group Update (with Brian Becker and Adám Brudzewsky)
 * Dyalog '16 TP01: Version 15.0 in Depth