Dan Baronet: Difference between revisions

From APL Wiki
Jump to navigation Jump to search
(Created page with "thumb|right|At IPSA50 reunion '''Daniel Baronet''' (6 May 1956–1 Nov 2016), also known as '''APLtrainer''', was an APL (and later J) programmer since...")
 
m (Text replacement - "<source" to "<syntaxhighlight")
Tags: Mobile edit Mobile web edit
(6 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[File:IPSA50.jpg|thumb|right|At IPSA50 reunion]]
[[File:IPSA50.jpg|thumb|right|Daniel Baronet (far left) at IPSA50 reunion]]
'''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.
'''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.


While Baronet was responsible for Dyalog's ''Simple APL Library Toolkit'' (SALT) and its framework for [[user command]]s (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.<ref>Rick Procter. [http://www.aplborealis.com/danb2016.html Obituary for Daniel Baronet]. APL Borealis.</ref> He was a prolific writer and presented at many events.
Baronet was responsible for Dyalog's ''Simple APL Library Toolkit'' (SALT) and its framework for [[user command]]s (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.<ref>Rick Procter. [http://www.aplborealis.com/danb2016.html Obituary for Daniel Baronet]. APL Borealis.</ref> He was a prolific writer and presented at many events.


== The "Dan Baronet special" ==
== The "Dan Baronet special" ==


Baronet was famous for innovative uses of APL primitives. He's credited with discovering that <source lang=APL inline>b⊥b</source> or, as he preferred writing it, <source lang=APL inline>⊥⍨b</source>, counts the number of trailing ones in the Boolean vector <source lang=APL inline>b</source>:<ref>Roger Hui. [http://danielbaronet.rip/ Tribute to Daniel Baronet]. DanielBaronet.RIP</ref>
Baronet was famous for innovative uses of APL primitives. He's credited with discovering that <syntaxhighlight lang=APL inline>b⊥b</syntaxhighlight> or, as he preferred writing it, <syntaxhighlight lang=APL inline>⊥⍨b</syntaxhighlight>, counts the number of trailing ones in the Boolean vector <syntaxhighlight lang=APL inline>b</syntaxhighlight>:<ref>Roger Hui. [http://danielbaronet.rip/ Tribute to Daniel Baronet]. DanielBaronet.RIP</ref>


<source lang=apl inline>⊥</source> ([[Decode]]) performs base conversion. If the left argument is a vector, it performs *mixed* base conversion.
<syntaxhighlight lang=apl inline>⊥</syntaxhighlight> ([[Decode]]) performs base conversion. If the left argument is a vector, it performs ''mixed'' base conversion.


For a base vector <math>b = b_n,\cdots,b_0</math> and a digit vector <math>a = a_n,\cdots, a_0</math>, <source lang=apl inline>b ⊥ a</source> converts <math>a</math> to the mixed base <math>b</math>, i.e., it computes <math>b_0\cdots b_{n-1}a_n + \cdots + b_0b_1a_2 + b_0a_1 + a_0</math>.
For a base vector <math>b = b_n,\cdots,b_0</math> and a digit vector <math>a = a_n,\cdots, a_0</math>, <syntaxhighlight lang=apl inline>b ⊥ a</syntaxhighlight> converts <math>a</math> to the mixed base <math>b</math>, i.e., it computes <math>b_0\cdots b_{n-1}a_n + \cdots + b_0b_1a_2 + b_0a_1 + a_0</math>.


Now, in a monadic context, <source lang=apl inline>⍨</source> ([[Commute]]) causes the function to the left to be called with equal left and right arguments.
Now, in a monadic context, <syntaxhighlight lang=apl inline>⍨</syntaxhighlight> ([[Commute]]) causes the function to the left to be called with equal left and right arguments.


So <source lang=apl inline>⊥⍨b</source> is defined as <source lang=apl inline>b⊥b</source>, which computes <math>a_0\cdots a_n + \cdots + a_0a_1a_2 + a_0a_1 + a_0</math>, the sum of all cumulative products from the right to the left.
So <syntaxhighlight lang=apl inline>⊥⍨b</syntaxhighlight> is defined as <syntaxhighlight lang=apl inline>b⊥b</syntaxhighlight>, which computes <math>a_0\cdots a_n + \cdots + a_0a_1a_2 + a_0a_1 + a_0</math>, the sum of all cumulative products from the right to the left.


For <source lang=apl inline>k</source> trailing ones, the <source lang=apl inline>k</source> rightmost products are <source lang=apl inline>1</source> and all others are <source lang=apl inline>0</source>, so their sum is equal to <source lang=apl inline>k</source>.<ref>Stack User "Dennis". [https://codegolf.stackexchange.com/a/98764 Answer] in [[Dyalog APL]] to [[Adám Brudzewsky]]'s [[code golf]] challenge. Code Golf and Coding Challenges Stack Exchange.</ref>
For <syntaxhighlight lang=apl inline>k</syntaxhighlight> trailing ones, the <syntaxhighlight lang=apl inline>k</syntaxhighlight> rightmost products are <syntaxhighlight lang=apl inline>1</syntaxhighlight> and all others are <syntaxhighlight lang=apl inline>0</syntaxhighlight>, so their sum is equal to <syntaxhighlight lang=apl inline>k</syntaxhighlight>.<ref>Stack User "Dennis". [https://codegolf.stackexchange.com/a/98764 Answer] in [[Dyalog APL]] to [[Adám Brudzewsky]]'s [[code golf]] challenge. Code Golf and Coding Challenges Stack Exchange.</ref>


== External links ==
== Publications ==
* [http://archive.vector.org.uk/?qry=baronet&submit=search Articles] in the [[Vector journal]]
* [http://archive.vector.org.uk/?qry=baronet&submit=search Articles] in the [[Vector journal]]
* [https://www.youtube.com/user/APLtrainer APLTrainer] ― YouTube videos
* [https://www.youtube.com/user/APLtrainer APLtrainer] ― YouTube videos
 
=== APL conferences ===
* [[APL03]]: [https://doi.org/10.1145/882067.882070 NAVPLANR (NP): flight navigation planning software].
 
=== Dyalog user meetings ===
<div style="column-width:30em">
* [[Dyalog '06]] W05: Introduction to Object Oriented Programming using Dyalog version 11.0 ([https://www.dyalog.com/uploads/conference/dyalog06/presentations/W05_Baronet_IntroToOO materials])
* [[Dyalog '07]] 05: SALT, Subversion and the Dyalog Code Library ([https://www.dyalog.com/uploads/conference/dyalog07/presentations/05_Baronet_SALT_Subversion.zip materials])
* [[Dyalog '07]] W01: Introduction to Object Oriented Programming using Dyalog version 11.0
* [[Dyalog '08]] W04: Source Code Management using SALT and Subversion ([https://www.dyalog.com/uploads/conference/dyalog08/presentations/W04_Baronet_SALTandSVN materials])
* [[Dyalog '08]] W08: Introduction to Object-Oriented Programming ([https://www.dyalog.com/uploads/conference/dyalog08/presentations/W08_Baronet_IntroToOO materials])
* [[Dyalog '09]] C02: Introduction to Object-Oriented Programming ([https://www.dyalog.com/uploads/conference/dyalog09/presentations/C02_Baronet_IntroToOO materials])
* [[Dyalog '09]] C06: Source Code Management using SALT and SubVersion (part I) ([https://www.dyalog.com/uploads/conference/dyalog09/presentations/C06_Baronet_SALTandSVN 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 ([https://www.dyalog.com/uploads/conference/dyalog11/presentations/C01_oo_programming materials])
* [[Dyalog '11]] C06: Windows Presentation Foundation ([https://www.dyalog.com/uploads/conference/dyalog11/presentations/C06_wpf materials]) (with Michael Hughes)
* [[Dyalog '11]] C07: Productivity Tools for Dyalog Users ([https://www.dyalog.com/uploads/conference/dyalog11/presentations/C07_productivity_tools materials])
* [[Dyalog '12]] D07: New SALT features and User Commands
* [[Dyalog '12]] C02: User Commands ([https://www.dyalog.com/uploads/conference/dyalog12/presentations/C02_UserCommands materials])
* [[Dyalog '12]] C07: Starting a New Application in Dyalog APL ([https://www.dyalog.com/uploads/conference/dyalog12/presentations/C07_StartingAPLApp materials]) (with [[Morten Kromberg]])
* [[Dyalog '12]] C09: Managing External Data III ([https://www.dyalog.com/uploads/conference/dyalog12/presentations/C09_ExternalDataIII materials]) (with [[Gitte Christensen]])
* [[Dyalog '13]] D15: [https://dyalog.tv/Dyalog13?v=Bm5dEUC6ZWg User Command Update] ([https://www.dyalog.com/uploads/conference/dyalog13/presentations/D15_User_Command_Update.pptx slides])
* [[Dyalog '13]] SA03: OO and CC
* [[Dyalog '13]] SP03: User Commands
* [[Dyalog '14]] SA03: Parallel Programming with Futures and Isolates ([https://www.dyalog.com/uploads/conference/dyalog14/workshops/SA3_Parallel_Programming.zip materials]) (with [[Morten Kromberg]])
* [[Dyalog '14]] SP02: The Ins and Outs of Data (SQAPL, XML, JSON, Excel, Syncfusion Data Objects, ZIP files, …) ([https://www.dyalog.com/uploads/conference/dyalog14/workshops/SP2_The_Ins_and_Outs_of_Data.zip materials]) (with [[Brian Becker]])
* [[Dyalog '14]] TP04: Version 14.0 Language Features in Practice ([https://www.dyalog.com/uploads/conference/dyalog14/workshops/TP4_Version_14_Language_Features_In_Practice.pptx slides])
* [[Dyalog '15]] D05: [https://dyalog.tv/Dyalog15/?v=ktsFyXnEspo User Commands Update] (with [[Adám Brudzewsky]])
* [[Dyalog '15]] D10: [https://dyalog.tv/Dyalog15/?v=rB2ztjvqrNs MiServer UI Controls] ([https://www.dyalog.com/uploads/conference/dyalog15/presentations/D10_MiServer_UI_Controls.pdf 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
</div>


== References ==
== References ==
<references/>
<references/>
{{APL community}}
{{APL community}}{{DEFAULTSORT:Baronet}}[[Category:People]][[Category:Dyalog Ltd. employees]]

Revision as of 22:07, 10 September 2022

Daniel Baronet (far left) at IPSA50 reunion

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.[1] 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 b⊥b or, as he preferred writing it, ⊥⍨b, counts the number of trailing ones in the Boolean vector b:[2]

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

For a base vector and a digit vector , b ⊥ a converts to the mixed base , i.e., it computes .

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

So ⊥⍨b is defined as b⊥b, which computes , the sum of all cumulative products from the right to the left.

For k trailing ones, the k rightmost products are 1 and all others are 0, so their sum is equal to k.[3]

Publications

APL conferences

Dyalog user meetings

References

  1. Rick Procter. Obituary for Daniel Baronet. APL Borealis.
  2. Roger Hui. Tribute to Daniel Baronet. DanielBaronet.RIP
  3. Stack User "Dennis". Answer in Dyalog APL to Adám Brudzewsky's code golf challenge. Code Golf and Coding Challenges Stack Exchange.
APL community [edit]
Conferences and activities Advent of CodeAPL CampfireAPL CultivationAPL Meetup (Portuguese) ∙ APL ShowAPL Problem Solving CompetitionAPL ChallengeAPL QuestAPL SeedsArray CastBAA sessionsCode golfDyalog user meetingsDyalog webinarsIverson Award
Chat rooms and forums APL FarmAPL Orchard
User groups APL et J (France) ∙ APL Germany (terminology) ∙ APL ∊ BCN (Spain) ∙ BAA (UK) ∙ FinnAPL (Finland) ∙ SIGAPL (USA) ∙ Tokyo APL/J/K Meetup (Japan)
People Phil AbramsBrian BeckerBob BerneckyLarry BreedCharles BrennerJim BrownAdám BrudzewskyGitte ChristensenPeter DonnellyJohn EarnestAdin FalkoffGarth FosterLib GibsonAaron HsuRoger HuiKen IversonMorten KrombergDick LathwellMarshall LochbaumEugene McDonnellRoger MooreTrenchard MoreAlan PerlisHenry RichAl RoseJohn ScholesIan SharpBob SmithGeoff StreeterJoey TuttleArthur Whitney
Other APL Quote QuadAPL WikiBlogsBooksCase studiesFamous APL usersHumourJobsMerchandisePapersPodcastsTryAPLTry It OnlineVideo channels