APL Orchard: Difference between revisions

Jump to navigation Jump to search
3,771 bytes added ,  08:21, 2 March 2021
No edit summary
(21 intermediate revisions by 4 users not shown)
Line 1: Line 1:
[[File:APL Orchard activity.png|thumb|right|Typical activity over a 24-hour period (UTC)]]
[[File:APL Orchard activity.png|thumb|right|Typical activity over a 24-hour period (UTC)]]
'''The APL Orchard''' is a [[wikipedia:Stack Exchange|Stack Exchange]] chat room dedicated to learn and teach APL, and to ask and answer questions about both golfing and general coding in APL. It was opened by [[Adám Brudzewsky]] on January 24, 2017, and has since developed its own community, remaining the most active APL chat room today, with over a thousand messages per week. It passed a total of a hundred thousand messages, and two hundred users, in July 2020. The [[#Chat_bot|chat bot]] synchronises the Stack Exchange room with the [[wikipedia:Freenode|Freenode]] #apl IRC room. Many participants arrive as complete beginners when it comes to APL, some not even knowing what APL is, instead being attracted by the room being among the most active on Stack Exchange, others are APL veterans.
'''The APL Orchard''' ([https://apl.chat apl.chat]) is a [[wikipedia:Stack Exchange|Stack Exchange]] chat room dedicated to learn and teach APL, and to ask and answer questions about both golfing and general coding in APL. It was opened by [[Adám Brudzewsky]] on January 24, 2017, and has since developed its own community, remaining the most active APL chat room today, with over 1.000 messages per week. It passed a total of a 100.000 messages by 200 users in July 2020, and 150.000 messages by 250 users in February 2021. A [[#Chat_bot|chat bot]] synchronises the Stack Exchange room with the [[wikipedia:Freenode|Freenode]] #apl IRC room.


Many participants arrive as complete beginners when it comes to APL, some not even knowing what APL is. Instead, they are attracted by the room being among the most active on Stack Exchange. Other participants are APL veterans. [[Morten Kromberg]] has written a [[blogs|blog]] post about the chat room, focusing on Dyalog Ltd.'s relationship with newcomers and established users.<ref>[[Morten Kromberg]]. [https://www.dyalog.com/blog/2021/02/the-apl-orchard/ The APL Orchard]. [[Dyalog Ltd.|Dyalog]] Blog. 21 February 2021.</ref>
[[File:APL Orchard list.png|thumb|right|Community ad for the APL Orchard on [[Code golf|Code Golf]] Stack Exchange.]]
== Access ==
== Access ==
[[File:Generic avatar.png|thumb|right|The giant avatar]]
[[File:Generic avatar.png|thumb|right|The giant avatar]]
Line 10: Line 12:
# Click "user profile"
# Click "user profile"
# Copy the URL of the page that opens (e.g. "<nowiki>https://chat.stackexchange.com/users/123456/johndoe</nowiki>")
# Copy the URL of the page that opens (e.g. "<nowiki>https://chat.stackexchange.com/users/123456/johndoe</nowiki>")
# Email that URL to support@dyalog.com
# Email that URL to access@apl.chat
 
== Features ==
== Features ==
=== Messages ===
=== Messages ===
In the chat you can use a simplified subset of [[wikipedia:markdown|markdown]] for simple formatting like ''italics'', '''bold''' and <s>strikethrough</s>. You can include [[wikipedia:Easter_egg_(media)|links]] in your messages, or post an image. See [[{{PAGENAME}}#Basic Formatting|below]] for details.
In the chat you can use a simplified subset of [[wikipedia:markdown|markdown]] for simple formatting like ''italics'', '''bold''' and <s>strikethrough</s>. You can include [[wikipedia:Easter_egg_(media)|links]] in your messages, or post an image. See [[{{PAGENAME}}#Basic formatting|below]] for details. The [https://chat.stackexchange.com/rooms/1/sandbox Sandbox] room can be used to experiment with the chat system without bothering anyone.


To write a message, type into the input field and press <kbd>Enter</kbd> or click the <kbd>send</kbd> button to submit.
To write a message, type into the input field and press <kbd>Enter</kbd> or click the <kbd>send</kbd> button to submit.
Line 30: Line 33:


You can view what a message was a reply to by clicking the reply indicator icon <kbd>↰</kbd> to the left of a message, which will either focus the target message on the screen, or, if the target message is too far in the past, open up the transcript pointing to the target message. Alternatively, hovering over a message will highlight the message it is replying to, and all its replies.
You can view what a message was a reply to by clicking the reply indicator icon <kbd>↰</kbd> to the left of a message, which will either focus the target message on the screen, or, if the target message is too far in the past, open up the transcript pointing to the target message. Alternatively, hovering over a message will highlight the message it is replying to, and all its replies.
Some use a reply of <source lang=md inline>+←1</source> to indicate agreement or appreciation,<ref>Thus is a pun on the APL expression <source lang=apl inline>counter+←1</source> increasing the counter (of "likes") by one.</ref> similar to how "+1" or "👍" is used in other social media.


=== Basic formatting ===
=== Basic formatting ===
Line 37: Line 38:
* '''Bold''': <source lang=md inline>**bold**</source> or <source lang=md inline>__bold__</source>
* '''Bold''': <source lang=md inline>**bold**</source> or <source lang=md inline>__bold__</source>
* '''Strike through''': <source lang=md inline>---strike through---</source>
* '''Strike through''': <source lang=md inline>---strike through---</source>
* '''Inline code:''' <source lang=md inline>`inline code`</source> <ref>Use <code>``double`backticks\``</code> for code that includes a backtick or a trailing backslash. If using 1 layer of backticks, backticks can be escaped with a backslash (<code>`\`x\`y`</code> renders as <source lang=md inline>`x`y</source>. If using more than 1 layer of backticks, slashes have no special behavior. To include multiple consecutive backticks, use more than that many to enclose the code. Note that inline code cannot have leading or white-space.</ref>
* '''Inline code:''' <source lang=md inline>`inline code`</source> <ref>Backticks can be escaped with a backslash (<source lang=md inline>`\`x\`y`</source> renders as <code>`x`y</code>). Alternatively, <code>```multiple``backticks\```</code>, which also disable <code>\</code>-escaping, can be used, giving <code>multiple``backticks\</code> - use a delimiter with one more backtick than the longest run of backticks in the code. Note that inline code cannot have leading white-space.</ref>
* '''Link''': <source lang=md inline>https://example.com</source> or <source lang=md inline>[display me](https://example.com)</source> or <source lang=md inline>[display me](https://example.com "hover text")</source><ref>Long URLs will be truncated with an ellipsis. A URL that exceeds the maximum message length of 500 characters can still be posted as a raw URL (without markdown): Follow it by <kbd>Shift</kbd>+<kbd>Enter</kbd>.</ref>
* '''Link''': <source lang=md inline>https://example.com</source> or <source lang=md inline>[display me](https://example.com)</source> or <source lang=md inline>[display me](https://example.com "hover text")</source><ref>Long URLs will be truncated with an ellipsis. A URL that exceeds the maximum message length of 500 characters can still be posted as a raw URL (without markdown): Follow it by <kbd>Shift</kbd>+<kbd>Enter</kbd>.</ref>
* '''Tags''': <source lang=md inline>[tag:code-golf]</source> or <source lang=md inline>[meta-tag:discussion]</source> (tags from Stack Exchange's [[code golf]] community, [https://codegolf.stackexchange.com/ Code Golf & Coding Challenges])
* '''Tags''': <source lang=md inline>[tag:code-golf]</source> or <source lang=md inline>[meta-tag:discussion]</source> (tags from Stack Exchange's [[code golf]] community, [https://codegolf.stackexchange.com/ Code Golf & Coding Challenges])
Line 43: Line 44:


=== Multiline messages ===
=== Multiline messages ===
It's possible to insert write line breaks in messages with <kbd>Shift</kbd>+<kbd>Enter</kbd>, however, this disables normal markdown.
It's possible to insert line breaks in messages with <kbd>Shift</kbd>+<kbd>Enter</kbd>. Pasting test containing line breaks into the input field also results in a multiline message. Multi-line messages do not support normal markdown.


If each line of a message is preceded by 4 spaces (can automatically be inserted with with <kbd>Ctrl</kbd>+<kbd>k</kbd> or with the <kbd>fixed font</kbd> button once multiple lines have been entered), the whole message will appear in monospace font. Note that individual lines cannot be formatted this way, and that there is no support for "code fences" (triple backticks before and after code).
If each line of a message is preceded by 4 spaces (which can be inserted automatically with with <kbd>Ctrl</kbd>+<kbd>k</kbd> or with the <kbd>fixed font</kbd> button once multiple lines have been entered), the whole message will appear in monospace font. Note that individual lines cannot be formatted this way, and that there is no support for "code fences" (triple backticks before and after code).


To post a mixture of body text and code blocks, simply posting multiple messages in quick succession. The chat will render them as if merged into a single message.
To post a mixture of body text and code blocks, simply post multiple messages in quick succession. The chat will render them as if merged into a single message.


=== After posting ===
=== After posting ===
Line 61: Line 62:
=== Chat bot ===
=== Chat bot ===


The room features a chat bot, '''Dyalog APL''', which can evaluate a safe subset of APL.<ref>Using [[Adám Brudzewsky]]'s [https://github.com/abrudz/dyalog-safe-exec Safe Execute for Dyalog APL] tool.</ref> To use it, prefix a chat message, inline code, or a code block with <source lang=apl inline>⋄</source>. Using markdown (for example <source lang=md inline>`⋄ 2+3`</source>) or fixed-width (4 or more initial spaces on each line, which can be inserted by pressing <kbd>Ctrl</kbd>+<kbd>k</kbd>) is highly recommended for readability and to avoids interpretation of APL symbols as markdown.
The room features a chat bot, '''Dyalog APL''', which can evaluate a safe subset of APL.<ref>Using [[Adám Brudzewsky]]'s [https://github.com/abrudz/dyalog-safe-exec Safe Execute for Dyalog APL] tool.</ref> To use it, prefix a chat message, inline code, or a code block with <source lang=apl inline>⋄</source>. Using markdown (for example <source lang=md inline>`⋄ 2+3`</source>) or fixed-width (4 or more initial spaces on each line, which can be inserted by pressing <kbd>Ctrl</kbd>+<kbd>k</kbd>) is highly recommended for readability and to avoid interpretation of APL symbols as markdown.
 
=== APL execution userscript ===
 
Similar in functionality to the chat bot, the userscript adds an [[Execute]] button (<kbd>⍎</kbd>) to the right of the chat box. Clicking it or hitting access-key<ref>The keyboard combination varies by browser and operating system. For details, see  W3Schools' [https://www.w3schools.com/tags/att_global_accesskey.asp#table2 HTML accesskey Attribute] article.</ref> <kbd>x</kbd>, uses the [[Running APL|TryAPL]] API to execute the first line currently in the chat box, and appends the result to the chat box, while also formatting the chat box content to be rendered in monospace font. One can then hit the <kbd>send</kbd> button or <kbd>Enter</kbd> to submit the message. With a userscript extension (for example [https://www.tampermonkey.net/ Tampermonkey]) installed, navigating to [https://github.com/razetime/userscripts/raw/main/chatexec.user.js the raw file], should cause the extension to suggest automated installation. Alternatively, the script can be downloaded from the [https://github.com/razetime/userscripts userscripts GitHub repository] of [[User:Razetime|Razetime]], or from the [https://greasyfork.org/en Greasyfork userscript host] under the name [https://greasyfork.org/en/scripts/419379-chat-box-exec Chat box exec].
 
== Conventions ==
 
Since a lot of questions are repeated, it is courteous to search for an answer on [[APLcart]] before asking in the APL Orchard.
 
Announcements are made with the initial markdown <source lang=md inline>**Announcement:**</source> rendering the text in bold.
 
Some abbreviations are ubiquitous, like ''TMN'' for ''[[Comparison with traditional mathematics|Traditional Mathematical Notation]]'', and ''CMC'' for ''Chat Mini Challenge'' which usually implies an informal [[code golf]] competition. Additional terms an abbreviations are shared with [https://codegolf.meta.stackexchange.com/questions/12537/what-are-our-specific-abbreviations-and-terms/12538#12538 those of the Stack Exchange code golf community]. When posting such a chat mini challenge, the task specification is prefaced with the markdown <source lang=md inline>**CMC:**</source>, rendering the text in bold.
 
Some use a reply of <source lang=md inline>+←1</source> to indicate agreement or appreciation,<ref>This is a pun on the APL expression <source lang=apl inline>counter+←1</source> increasing the counter (of "likes") by one.</ref> similar to how "+1" or "👍" is used in other social media.
 
=== Emoticons ===
 
{|
| <source lang=md inline>○/</source> || greeting, farewell
|-
| <source lang=md inline>⍨</source> || frown, displeasure, "hmpf"
|-
| <source lang=md inline>\○/</source> || despair, wonderment, "wow"  (be careful as this can be positive or negative)
|-
| <source lang=md inline>¯\_(⍨)_/¯</source> || "oh well"
|-
| <source lang=md inline>∘.○</source> || "I'm confused"
|}


== Live sessions ==
== Live sessions ==
Line 70: Line 99:


=== APL Seeds ===
=== APL Seeds ===
:{{Main|APL Seeds}}
In 2020, [[Marshall Lochbaum]] ran a mini-series 60-minute live chat lessons on implementing APL-like languages, especially focusing on [[BQN]]:
Beginning 10 June 2020, [[Marshall Lochbaum]] ran a mini-series of chat lessons on implementing APL, especially focusing on [[BQN]].
{|class=wikitable
! Lesson !! Title !! Date
|-
| S1 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-s1-parenthesis-nesting-level Parenthesis nesting level] || Jun 10, 2020
|-
| S2 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-s2-infix-to-rpn Infix to RPN] || Jun 24, 2020
|-
| S3 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-s3-parsing-expressions-with-parentheses Parsing expressions with parentheses] || July 8, 2020
|}


== External links ==
== External links ==


* [https://chat.stackexchange.com/rooms/52405/the-apl-orchard Chat room]
* [https://chat.stackexchange.com/rooms/52405/the-apl-orchard Chat room] (short URL: [https://apl.chat apl.chat])
* [https://chat.stackexchange.com/rooms/info/52405/the-apl-orchard Room info]
* [https://chat.stackexchange.com/rooms/info/52405/the-apl-orchard Room info]
* [https://chat.stackexchange.com/transcript/52405 Full transcript]
* [https://chat.stackexchange.com/transcript/52405 Full transcript]

Navigation menu