Adám Brudzewsky: Difference between revisions

From APL Wiki
Jump to navigation Jump to search
No edit summary
m (Text replacement - "langauge" to "language")
 
(40 intermediate revisions by one other user not shown)
Line 2: Line 2:
'''Adám Gall Brudzewsky''' is a lifelong APL programmer, founder of the [[APL Orchard]], and the creator of [[Extended Dyalog APL]] and [[APLcart]]. An employee of [[Dyalog Ltd.]], Brudzewsky has made several contributions to the [[Dyalog APL]] language in addition to his work on components of the interpreter written in APL such as [[user command]]s.
'''Adám Gall Brudzewsky''' is a lifelong APL programmer, founder of the [[APL Orchard]], and the creator of [[Extended Dyalog APL]] and [[APLcart]]. An employee of [[Dyalog Ltd.]], Brudzewsky has made several contributions to the [[Dyalog APL]] language in addition to his work on components of the interpreter written in APL such as [[user command]]s.


Brudzewsky was taught APL by his father, Henri Brudzewsky, and preferred it to mathematical notation as a student. He was hired by [[Dyalog Ltd.]] in May 2015<ref>[[Dyalog Ltd.]] [http://www.dyalog.com/dyalogue-newsletters.htm?nl=26&a=150 "May we introduce Adám Brudzewsky – the newest member of the Dyalog Tools Group"]</ref>, and worked closely with [[Dan Baronet]]<ref>Brudzewsky, Adam. Tribute in [http://danielbaronet.rip/ Daniel Baronet 1956 – 2016].</ref>. Brudzewsky quickly had an impact on the langauge, suggesting the [[Nest]] (<source lang=apl inline>⊆</source>), or Enclose if Simple, primitive<ref>[[John Scholes|Scholes, John]]. [https://dfns.dyalog.com/n_eis.htm n_eis] from the [[dfns workspace]].</ref> and later working to design Dyalog's [[array notation]].
== History ==
Brudzewsky was taught APL by his father, Henri Brudzewsky, who, in the words of then Dyalog CEO [[Gitte Christensen]], "was a really good APLer".<ref>Christensen, Gitte. [https://www.youtube.com/watch?v=pL8OQIR5cB4&t=186s Welcome to Dyalog'15], [[Dyalog '15]]. 2015-09-07.</ref> As a student, Brudzewsky preferred APL to mathematical notation. He was hired by [[Dyalog Ltd.]] in May 2015<ref>[[Dyalog Ltd.]] DYALOGue  Newsletter. [http://www.dyalog.com/dyalogue-newsletters.htm?nl=26&a=150 "May we introduce Adám Brudzewsky – the newest member of the Dyalog Tools Group"]. Summer 2016.</ref>, and worked closely with [[Dan Baronet]]<ref>Brudzewsky, Adám. Tribute in [http://danielbaronet.rip/ Daniel Baronet 1956 – 2016].</ref>. Brudzewsky quickly had an impact on the language, suggesting the [[Nest]] (<syntaxhighlight lang=apl inline>⊆</syntaxhighlight>), or Enclose if Simple, primitive<ref>[[John Scholes|Scholes, John]]. [https://dfns.dyalog.com/n_eis.htm n_eis] from the [[dfns workspace]].</ref> and later working to design Dyalog's [[array notation]].
[[File:Adam speaking.jpg|thumb|left|Speaking at an internal Dyalog meeting.]]
In 2018, Brudzewsky created [[Extended Dyalog APL]], a cover over [[Dyalog APL]] which uses APL models to extend existing primitives and implement new ones. The extensions include both functionality taken from other APLs and new functionality, and are sometimes adopted by Dyalog or [[dzaima/APL]]. The [[Constant operator]] appeared first in Extended Dyalog, as did the versions of [[Atop]] (<syntaxhighlight lang=apl inline>⍤</syntaxhighlight>) and [[Over]] (<syntaxhighlight lang=apl inline>⍥</syntaxhighlight>) later implemented by Dyalog (Brudzewsky's changes relative to [[Sharp APL]] were to exchange the glyphs, and remove the concept of [[close composition]]). dzaima/APL has adopted Extended Dyalog's [[Pair]] (<syntaxhighlight lang=apl inline>⍮</syntaxhighlight>), [[Select]] (<syntaxhighlight lang=apl inline>⊇</syntaxhighlight>), and [[Reverse Compose]] (<syntaxhighlight lang=apl inline>⍛</syntaxhighlight>).


Since creating it in 2018, Brudzewsky maintains [[Extended Dyalog APL]], a cover over [[Dyalog APL]] which uses APL models to extend existing primitives and implement new ones. The extensions include both functionality taken from other APLs and new functionality, and are sometimes adopted by Dyalog or [[dzaima/APL]]. The [[Constant operator]] appeared first in Extended Dyalog, as did the versions of [[Atop]] (<source lang=apl inline></source>) and [[Over]] (<source lang=apl inline>⍥</source>) later implemented by Dyalog (Brudzewsky's changes relative to [[Sharp APL]] were to exchange the glyphs, and remove the concept of [[close composition]]). dzaima/APL has adopted Extended Dyalog's [[Pair]] (<source lang=apl inline>⍮</source>), [[Select]] (<source lang=apl inline>⊇</source>), and [[Reverse Compose]] (<source lang=apl inline>⍛</source>).
[[Dyalog APL 18.0]] made it impossible for Extended Dyalog to maintain [[backwards compatibility]] due to extending monadic <syntaxhighlight lang=apl inline></syntaxhighlight> to be [[Unique Mask]] rather than its proposed comparison with the [[type]] for all [[comparison function]]s. Therefore, Brudewsky retired Extended Dyalog in favour of his new [[Dyalog APL Vision]], changing some proposals. Notable are the [[system function]]s for creating, updating, and unpacking [[namespace]]s, because this part is being actively considered for inclusion in Dyalog APL.


Brudzewsky is active in the [[APL Orchard]] and on Stack Exchange's [[Code golf]] site as ''Adám''. Because of his participation in these sites he was involved in Dyalog's hiring of interns Marinus Oosters<ref>[[Dyalog Ltd.]] [https://www.dyalog.com/blog/2016/10/winning-the-apl-programming-contest-bioinformatics-category/ "Winning the APL Programming Contest – Bioinformatics Category"]</ref>, Will Robertson, and Rodrigo Girão Serrão, as well as employees Nathan Rogers<ref>[[Dyalog Ltd.]] [https://www.dyalog.com/blog/2019/08/welcome-nathan-rogers/ "Welcome Nathan Rogers"]</ref> and Rodrigo Girão Serrão.
== Activities ==
Brudzewsky is active Stack Exchange's [[Code golf]] site (as ''Adám''), where he started the [[APL Orchard]] chat room in 2017, and where he often invites and welcomes newcomers, as well assisting existing users with technical and programming help. Through this, he was involved in Dyalog's hiring of interns Marinus Oosters<ref>[[Dyalog Ltd.]] [[Blog]]. [https://www.dyalog.com/blog/2016/10/winning-the-apl-programming-contest-bioinformatics-category/ "Winning the APL Programming Contest – Bioinformatics Category"]. October 11, 2016.</ref>, Will Robertson, and Kamila Szewczyk, as well as employees Nathan Rogers<ref>Dyalog Ltd. Blog. [https://www.dyalog.com/blog/2019/08/welcome-nathan-rogers/ "Welcome Nathan Rogers"]. August 13, 2019.</ref>, Rodrigo Girão Serrão (who started as an intern)<ref>Dyalog Ltd. Blog. [https://www.dyalog.com/blog/2021/03/welcome-rodrigo-girao-serrao/ "Welcome Rodrigo Girão Serrão"]. March 9, 2021.</ref>, and Karta Kooner<ref>Dyalog Ltd. Blog. [https://www.dyalog.com/blog/2021/08/welcome-karta-kooner/ "Welcome Karta Kooner"]. August 23, 2021.</ref>.
 
Brudzewsky frequents [[BAA sessions]] and often presents at [[Dyalog webinar]]s, [[Dyalog user meeting|user meetings]], and [[:Category:user groups|user group]] meetings, where he usually leads at least one workshop, in addition to leading corporate workshops and presenting APL at schools and other venues. He occasionally broadcasts live programming sessions on [[wikipedia:Twitch|Twitch]], later to publish them on [[wikipedia:YouTube|YouTube]] together with his other APL videos. He ran the [[APL Cultivation]]s from 2017 to 2020, began as a recurring panellist on the [[Array Cast]] podcast and started the [[APL Campfire]] meetup in 2021. In 2022, he launched the [[APL Quest]] chat and video series in 2022 and the APL Notation As A Tool Of Thought podcast, later renamed to the [[APL Show]].<ref>[https://abrudz.github.io/aplnaatot/ APLNAATOT podcast]</ref>


== Publications ==
== Publications ==
Line 13: Line 19:
* [[APLcart]], a searchable list of answers on "how-to" questions.
* [[APLcart]], a searchable list of answers on "how-to" questions.
* [https://abrudz.github.io/style/ APL style] guide to improve [[readability]] and maintainability.
* [https://abrudz.github.io/style/ APL style] guide to improve [[readability]] and maintainability.
* [https://abrudz.github.io/tips/ APL tips] for using [[Dyalog APL]].
* [https://dyalog.com/getting-started/tips.htm Tips] for using [[Dyalog APL]].
* [[Dyalog Ltd.|Dyalog]] [[Blog]]: [https://www.dyalog.com/blog/2018/09/enhanced-debugging-with-function-keys/ Enhanced Debugging with Function Keys]
* Dyalog Blog: [https://www.dyalog.com/blog/2020/12/enhanced-debugging-with-function-keys-evaluate-selection/ Enhanced Debugging with Function Keys – Evaluate selection]
* [[APL Germany]] Journal: [https://apl-germany.de/wp-content/uploads/2021/11/APL_Journal_2020_1u2.pdf#page=34 A Notation for APL Arrays]
* [[Vector Journal]]: [https://vector.org.uk/a-vendor-agnostic-logo-for-apl/ A Vendor-Agnostic Logo for APL]
</div>
</div>
=== Dyalog user meetings ===
=== Dyalog user meetings ===
{{Main|Dyalog user meeting}}
<div style="column-width:30em">
<div style="column-width:30em">
* [[Dyalog '15]] D05: [https://dyalog.tv/Dyalog15/?v=ktsFyXnEspo User Commands Update] (with [[Dan Baronet]])
* [[Dyalog '15]] D05: [https://dyalog.tv/Dyalog15/?v=ktsFyXnEspo User Commands Update] (with [[Dan Baronet]])
Line 28: Line 39:
*  Dyalog '19  U14: [https://dyalog.tv/Dyalog19/?v=r3owA7tfKE8 APLcart: A Novel Approach to Finding Your Way in APL] ([https://www.dyalog.com/uploads/conference/dyalog19/presentations/U14_APLcart.zip slides (zip file)])
*  Dyalog '19  U14: [https://dyalog.tv/Dyalog19/?v=r3owA7tfKE8 APLcart: A Novel Approach to Finding Your Way in APL] ([https://www.dyalog.com/uploads/conference/dyalog19/presentations/U14_APLcart.zip slides (zip file)])
* [[Dyalog '20]] D09: [https://dyalog.tv/Dyalog20/?v=5drncJiWOM4 Array Notation RC1] ([https://www.dyalog.com/uploads/conference/dyalog20/presentations/D09_Array_Notation_RC1.pdf slides])
* [[Dyalog '20]] D09: [https://dyalog.tv/Dyalog20/?v=5drncJiWOM4 Array Notation RC1] ([https://www.dyalog.com/uploads/conference/dyalog20/presentations/D09_Array_Notation_RC1.pdf slides])
* [[Dyalog '21]] D06: [https://dyalog.tv/Dyalog21/?v=etEhV2ZDuyA Highlights of Dyalog v18.2] ([https://www.dyalog.com/uploads/conference/dyalog21/presentations/D06_Highlights_of_Dyalog_v18.2.pdf slides])
* [[Dyalog '22]] D15: [https://dyalog.tv/Dyalog22/?v=itGiA56NSl8 Filling the Core Language Gaps] ([https://www.dyalog.com/uploads/conference/dyalog22/presentations/D15_Filling_the_Core_Language_Gaps.pdf slides])
* [[Dyalog '23]] D04: [https://dyalog.tv/Dyalog23/?v=eya2FlHinHE Setting and Getting Variable Values] ([https://www.dyalog.com/uploads/conference/dyalog23/materials/D04_SettingAndGettingVariableValues.pdf slides])
* [[Dyalog '23]] D13: [https://dyalog.tv/Dyalog23/?v=BXUpQUS9pQE Giving Key a Vocabulary] ([https://www.dyalog.com/uploads/conference/dyalog23/materials/D13_GivingKeyAVocabulary.pdf slides])
</div>
</div>


=== Webinars ===
=== Dyalog webinars ===
{{Main|Dyalog webinar}}
<div style="column-width:30em">
<div style="column-width:30em">
* [https://dyalog.tv/Webinar/?v=3FjYly2G_QI APL CodeGolf Autumn Tournament]
* [https://dyalog.tv/Webinar/?v=3FjYly2G_QI APL CodeGolf Autumn Tournament]
* [https://dyalog.tv/Webinar/?v=8zcUYjdEPG0 Namespace-Directory Synchronisation] (with [[Morten Kromberg]] )
* [https://dyalog.tv/Webinar/?v=8zcUYjdEPG0 Namespace-Directory Synchronisation] (with [[Morten Kromberg]])
* [https://dyalog.tv/Webinar/?v=8cbPLRAcC7M Total Array Ordering] (with [[Jay Foad]])
* [https://dyalog.tv/Webinar/?v=8cbPLRAcC7M Total Array Ordering] (with [[Jay Foad]])
* [https://dyalog.tv/Webinar/?v=LWJzRGrOC3k Creating and managing your own User Commands]
* [https://dyalog.tv/Webinar/?v=LWJzRGrOC3k Creating and managing your own User Commands]
* [https://dyalog.tv/Webinar/?v=P7rGW5ZMq9w Jupyter Notebook support for Dyalog APL]
* [https://dyalog.tv/Webinar/?v=P7rGW5ZMq9w Jupyter Notebook support for Dyalog APL]
* [https://dyalog.tv/Webinar/?v=6SAsgEvUmkU Progressive set functions]
* [https://dyalog.tv/Webinar/?v=6SAsgEvUmkU Progressive set functions]
* [https://www.youtube.com/watch?v=6qygPslrXnM Meet the new APL Wiki] ([[BAA Webinar]])
* [https://www.youtube.com/playlist?list=PLA9gQgjzcpKGD4HTiKjA3fe9NStmPMf1Q Language Features of Dyalog version 18.0 in Depth] (5 parts)
* [https://dyalog.tv/Webinar/?v=Hln3zryunsw Language Features of Dyalog version 18.0 in Depth - Part 1]
* [https://www.youtube.com/playlist?list=PLA9gQgjzcpKHi3OtHPTq7Z2LTzG6ZwMY7 Error Handling] (5 parts)
* [https://dyalog.tv/Webinar/?v=9sSFdQcu2dU Language Features of Dyalog version 18.0 in Depth - Part 2]
* [https://dyalog.tv/Webinar/?v=kufxBzDfB4Y Computing Check Digits – Fast]
* [[aplcart]].info turns 1 ([[BAA Webinar]])
* [https://dyalog.tv/Webinar/?v=jBxQZemmA1w User-Defined Operators]
* [https://dyalog.tv/Webinar/?v=OA-a04-mJ04 Language Features of Dyalog version 18.0 in Depth - Part 3]
</div>
* [https://dyalog.tv/Webinar/?v=Me5hhP07ySw Language Features of Dyalog version 18.0 in Depth - Part 4]
 
* [https://dyalog.tv/Webinar/?v=HU8jebyXKqc Language Features of Dyalog version 18.0 in Depth - Part 5]
=== Array Cast episodes ===
{{Main|Array Cast}}
<div style="column-width:30em">
* [https://www.arraycast.com/episodes/episode-00-why-i-like-array-languages Why We Like Array Languages]
* [https://www.arraycast.com/episodes/episode-02-challenges-facing-the-array-languages What Challenges Face the Array Languages?]
* [https://www.arraycast.com/episodes/episode-03-what-is-an-array What is an Array?]
* [https://www.arraycast.com/episodes/episode-06-henry-richs-deep-dive-into-j Henry Rich’s Deep Dive into J]
* [https://www.arraycast.com/episodes/episode-07-marshall-lochbaum-and-the-bqn-array-language Marshall Lochbaum and the BQN array language]
* [https://www.arraycast.com/episodes/episode-08-attila-vrabecz-and-the-k-group-of-programming-languages Attila Vrabecz and the k group of programming languages]
* [https://www.arraycast.com/episodes/episode-09-tacit-programming Tacit #3 (and other topics)]
* [https://www.arraycast.com/episodes/episode10-eric-iverson Eric Iverson Eric Iverson]
* [https://www.arraycast.com/episodes/episode13-roger-hui Roger Hui (1953-2021)]
* [https://www.arraycast.com/episodes/episode17-tacit4-the-dyadic-hook Tacit #4 - the dyadic hook]
* [https://www.arraycast.com/episodes/episode18-henry-rich-presents-j903 Henry Rich presents J903]
* [https://www.arraycast.com/episodes/episode22-josh-david APL in industry]
* [https://www.arraycast.com/episodes/episode23-andrew-sengul Andrew Sengul - The April APL Compiler]
* [https://www.arraycast.com/episodes/episode24-apl-seeds-2022 APL Seeds 2022]
* [https://www.arraycast.com/episodes/episode25-vanessa-mchale Vanessa McHale]
* [https://www.arraycast.com/episodes/episode26-stevan-apter Stevan Apter]
* [https://www.arraycast.com/episodes/episode28-rank-and-leading-axis Rank and Leading Axis Theory]
* [https://www.arraycast.com/episodes/episode29-transpose Transpose]
* [https://www.arraycast.com/episodes/episode30-our-first-year Looking Back at Our First Year]
* [https://www.arraycast.com/episodes/episode31-jeremy-howard Jeremy Howard - Data Scientist]
* [https://www.arraycast.com/episodes/episode32-control-structures Control Structures in the Array Languages]
* [https://www.arraycast.com/episodes/episode35-lib-gibson Lib Gibson - IP Sharp’s ‘Zookeeper’]
* [https://www.arraycast.com/episodes/episode36-what-makes-an-array-language What Makes a Language an Array Programming Language?]
* [https://www.arraycast.com/episodes/episode39-iverson-or-array-language Iversonian language or Array language?]
* [https://www.arraycast.com/episodes/episode40-michal-wallace Michal Wallace, k programmer and J video producer]
* [https://www.arraycast.com/episodes/episode41-john-earnest John Earnest and Versions of k]
</div>
</div>
=== Other talks ===
* Live-programming: [https://www.youtube.com/watch?v=CGdvYvcP2Eo Load-on-Demand], [https://www.youtube.com/watch?v=f3-FaVZpeY4 Delayed status message], [https://www.youtube.com/watch?v=EoF4sE4U9oQ A new user command]
* [[BAA Webinar]]: [https://www.youtube.com/watch?v=6qygPslrXnM Meet the new APL Wiki], ''aplcart.info turns 1''
* [[APL Germany]]: [http://apl-germany.de/wp-content/uploads/2020/11/Brudzewski20201124ArrayNotationRC1.pdf Array Notation RC1]
* Informational videos: [https://www.youtube.com/watch?v=AHoiROI15BA Parsing content from text files using Dyalog APL's <syntaxhighlight lang=apl inline>⎕CSV</syntaxhighlight>] ([https://github.com/abrudz/parsing companion code repository])
* [[FinnAPL]]: [https://www.dyalog.com/uploads/files/presentations/FinnAPL_APLAN_and_Vision.pdf Array Notation and Language Vision]
== External links ==
* Video channels: [https://www.youtube.com/user/abrudz YouTube], [https://www.twitch.tv/adambrudz/ Twitch]
* Social media profiles: [https://www.linkedin.com/in/adám-brudzewsky-0322b373 LinkedIn], [https://twitter.com/a_brudz Twitter], [https://vmst.io/@abrudz Mastodon], [https://stackexchange.com/users/3114363/ad%C3%A1m Stack Exchange], [https://discord.com/users/651823008347979793 Discord]
* GitHub: [https://github.com/abrudz/ Profile], [https://abrudz.github.io Pages]


== References ==
== References ==

Latest revision as of 22:10, 26 August 2024

During APL86 at age 1

Adám Gall Brudzewsky is a lifelong APL programmer, founder of the APL Orchard, and the creator of Extended Dyalog APL and APLcart. An employee of Dyalog Ltd., Brudzewsky has made several contributions to the Dyalog APL language in addition to his work on components of the interpreter written in APL such as user commands.

History

Brudzewsky was taught APL by his father, Henri Brudzewsky, who, in the words of then Dyalog CEO Gitte Christensen, "was a really good APLer".[1] As a student, Brudzewsky preferred APL to mathematical notation. He was hired by Dyalog Ltd. in May 2015[2], and worked closely with Dan Baronet[3]. Brudzewsky quickly had an impact on the language, suggesting the Nest (), or Enclose if Simple, primitive[4] and later working to design Dyalog's array notation.

Speaking at an internal Dyalog meeting.

In 2018, Brudzewsky created Extended Dyalog APL, a cover over Dyalog APL which uses APL models to extend existing primitives and implement new ones. The extensions include both functionality taken from other APLs and new functionality, and are sometimes adopted by Dyalog or dzaima/APL. The Constant operator appeared first in Extended Dyalog, as did the versions of Atop () and Over () later implemented by Dyalog (Brudzewsky's changes relative to Sharp APL were to exchange the glyphs, and remove the concept of close composition). dzaima/APL has adopted Extended Dyalog's Pair (), Select (), and Reverse Compose ().

Dyalog APL 18.0 made it impossible for Extended Dyalog to maintain backwards compatibility due to extending monadic to be Unique Mask rather than its proposed comparison with the type for all comparison functions. Therefore, Brudewsky retired Extended Dyalog in favour of his new Dyalog APL Vision, changing some proposals. Notable are the system functions for creating, updating, and unpacking namespaces, because this part is being actively considered for inclusion in Dyalog APL.

Activities

Brudzewsky is active Stack Exchange's Code golf site (as Adám), where he started the APL Orchard chat room in 2017, and where he often invites and welcomes newcomers, as well assisting existing users with technical and programming help. Through this, he was involved in Dyalog's hiring of interns Marinus Oosters[5], Will Robertson, and Kamila Szewczyk, as well as employees Nathan Rogers[6], Rodrigo Girão Serrão (who started as an intern)[7], and Karta Kooner[8].

Brudzewsky frequents BAA sessions and often presents at Dyalog webinars, user meetings, and user group meetings, where he usually leads at least one workshop, in addition to leading corporate workshops and presenting APL at schools and other venues. He occasionally broadcasts live programming sessions on Twitch, later to publish them on YouTube together with his other APL videos. He ran the APL Cultivations from 2017 to 2020, began as a recurring panellist on the Array Cast podcast and started the APL Campfire meetup in 2021. In 2022, he launched the APL Quest chat and video series in 2022 and the APL Notation As A Tool Of Thought podcast, later renamed to the APL Show.[9]

Publications

Dyalog user meetings

Main article: Dyalog user meeting

Dyalog webinars

Main article: Dyalog webinar

Array Cast episodes

Main article: Array Cast

Other talks

External links

References

  1. Christensen, Gitte. Welcome to Dyalog'15, Dyalog '15. 2015-09-07.
  2. Dyalog Ltd. DYALOGue Newsletter. "May we introduce Adám Brudzewsky – the newest member of the Dyalog Tools Group". Summer 2016.
  3. Brudzewsky, Adám. Tribute in Daniel Baronet 1956 – 2016.
  4. Scholes, John. n_eis from the dfns workspace.
  5. Dyalog Ltd. Blog. "Winning the APL Programming Contest – Bioinformatics Category". October 11, 2016.
  6. Dyalog Ltd. Blog. "Welcome Nathan Rogers". August 13, 2019.
  7. Dyalog Ltd. Blog. "Welcome Rodrigo Girão Serrão". March 9, 2021.
  8. Dyalog Ltd. Blog. "Welcome Karta Kooner". August 23, 2021.
  9. APLNAATOT podcast
APL community [edit]
Activities ConferencesUser groups and meetupsIverson AwardExercises
Chat rooms and forums APL FarmAPL OrchardAPL Wiki
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 PerlisRaghu RanganathanHenry RichAl RoseJohn ScholesIan SharpBob SmithGeoff StreeterJoey TuttleArthur Whitney
Other APL TrustAPL Quote QuadBlogsBooksCase studiesFamous APL usersHumourJobsMerchandisePapersPodcastsTryAPLTry It OnlineVideo channels