« first day (1422 days earlier)      last day (1529 days later) » 
02:00 - 17:0017:00 - 00:00

ngn
ngn
17:00
it must be a secret plot to encourage use of {+/⍵}⌺3
Wow that's interesting
Is there a numpy version of ⌺?
17:29
@ngn If you give me a general replacement for dyadic +/ I'll log an issue.
Announcement: Iverson centenary event begins in 1.5 hours. Register here!
@cannadayr In S.map(([t,i,st,l]) => e => { ... }, e should be a reference to the heap. All that function does with e is to store it, so the body shouldn't need to be changed.
It looks like I was consistent about always naming environments (and only environments) e, which is somewhat helpful. But in my version an environment is a [vars,parent] array and ge returns the vars array, which I don't call e. In your version it should just return the environment's reference, so you'll have to change these uses.
I'm fairly sure get1, case 21 (which just inlines get1), and set are the only places that use those variable arrays.
It would probably make more sense to change get1 to take two arguments instead of a 2-element array i. Then get would call get1(i[0],i[1]) instead of get1(i) but case 21 could just be s.push(get1(ge(e,num()),num())).
ngn
ngn
18:25
@Adám i don't want it fixed, i just want to understand it :)
it seems 3+/ and {+/⍵}⌺3 do essentially the same except for the two ends
@ngn Probably something related to overflows. If your APL code uses `+\`, it's not precise if intermediate values overflow to floats. I think there's a check on the argument type and length that lets scan be used in some cases. It could always be used with wrapping addition, but that would require dedicated code. For a left argument of 3 specifically, I think just adding up three slices would be faster, but again it requires handling overflow.
ngn
ngn
@Marshall +\ - yes! and it's prone to overflows because floats and ints aren't separate towers
if we're thinking of the same algorithm, and there was int-float separation, overflows wouldn't be a problem
@ngn If you have a tower of ints, you still have to worry about what happens for, say, 3+/100 100 100 where the right argument is stored as 1-byte ints.
ngn
ngn
18:43
@Marshall yeah, you're right about that. i'm plotting a change in ngn/k. this gives the programmer less control over type widths, but it's a lot more convenient.
however, there is some widest type, and this algorithm should probably be using it, so 3+/a b c would overflow exactly when a+b+c overflows
but anyway, even implementing n+/ (for an odd n) simply in terms of stencil should make it faster, e.g. a magic fn like {k←⌊⍺÷2⋄k↓(-k)↓{+/⍵}⌺⍺⊢⍵}
a lot faster, like -57%
@ngn Roger probably implemented the wraparound sum algorithm for Stencil then (Stencil has a ton of special code, but it tends to be too narrow to rely on). Should be possible to use it for +/.
Quick question - is the Iverson centenary event being recorded? A friend can't make it
@phantomics Yes.
I wish my father could have been here for this. He would have loved it.
ngn
ngn
18:56
why is there a limit on the number of participants?
I sat on Iverson's lap when he visited us at home. Sadly, I don't remember it.
@ngn Who says there is?
ngn
ngn
@Adám roger
how come there is some icon on your profile picture?
@ngn They just had to pay Zoom more. That's all set now. I think the limit is now 500 instead of 100.
@rak1507 It is a cruse of oil.
18:59
Ahh
ngn
ngn
hehe, the message below the popup on the screenshot is readable :)
is Arthur Whitney still joining the panel?
just curious as he is not visible alongside the other panelists
doesn't look like it :(
19:18
@ab5tract He's been removed from the list of speakers :-(
I was so looking forward to hearing him speak.
Me too. Elusive as ever, it seems!
Yeah same here
Clearly he's too busy working on kOS
I was invited to Iverson College once. I was looking forward to seeing Whitney there, but sure enough, he cancelled last minute because he had some kind of break-through, with kOS I think.
 
2 hours later…
20:53
Event was amazing
ngn
ngn
@phantomics did they say anything important?
@ngn Nothing new if you know the people involved, I think.
ngn
ngn
@Marshall i see. thanks
Some discussion of ways to evangelize APL, make it relevant to new programmers and academics
@phantomics Which to me very much lacked the recognition that occasionally non-APLers produce something worthwhile. Great to see so much of the community get together but there was a definite "we are the best, and how come no one will admit it?" vibe.
21:07
@Marshall Yeah, I think the involved very much shone with the philosophy that causes newcomers to eventually conclude that "APL is bad at cooperating with the outside world".
We need a free open source implementation of a rationalised APL, built from the ground up upon a modern environment.
12
I've been considering ways to build a community around all the "exotic" languages, including the vector family, Lisp, Haskell, Smalltalk, Prolog etc.
When I presented April at LispNYC a few months ago, many attendees had experience with APL and K; openness to one "unusual" language seems to predict openness to others
Yes, and openness to unusual coding techniques too. Code golfers are prime candidates for becoming APLers, and not just APL golfers.
How do you measure "exotic"?
My criterion is mostly "not Algol-derived"
I guess that makes COBOL exotic
A more nuanced criterion comes from a concept I had of "two schools of software"
Languages like Fortran and C were designed by starting with a machine that could do certain things, and then creating a language to make those functions accessible to programmers
Languages like Lisp and APL started by creating a language according to an abstract concept of representing computation and then implementing that language concept with physical hardware
@phantomics Isn't COBOL exotic? The only reason I think it might not be worth studying COBOL (and I'm definitely not sure of that) is that it was heavily used for a good while and most of the useful parts have probably diffused into the programming world at large.
21:17
forth is not algol-derived
Forth would definitely count
apparently it's somewhat inspired by APL
You can get paid well for COBOL considering the scarcity of programmers and it's important to computer history, no reason not to consider it exotic
Along the same lines, SQL is something a languages enthusiast should want to be familiar with.
Now SQL I couldn't call exotic in any sense, given its ubiquity
21:19
sed is not algol-derived!
@phantomics Everyone knows COBOL, it's so scarce!
Roughly my thinking is that an "exotic" language should have design features that would seem unfamiliar and unusual to a typical programmer, and COBOL definitely fits that. Of course there are different levels and COBOL is only as exotic as something like Smalltalk and probably a little less than Lisp.
Makes sense. An exotic languages community would offer something new and different for programmers who don't know them and give veteran users a chance to shine, COBOL devs who worked at the big banks would have interesting war stories
@phantomics Whether a language is exotic and whether it's a good fit for a particular community are different decisions, of course.
I have a friend who works on zOS at IBM and has told me all kinds of interesting stuff
21:36
@phantomics It would be interesting to pick a language and set a fairly large task for the group, and then discuss how it went and the questions that went up. Something like asynchronous-pair programming sections of the project but bringing disagreements or discoveries to group discussion. That would require a very friendly/relaxed group to not have issues though.
In the ideal case you could even end up contributing a useful library or something to that language.
@phantomics I would join this community, and add more languages for your list
but what form of "community?
a SE chat?
I've been thinking about something centered around a podcast as well as a more informal chat/message board
ngn
ngn
@Marshall in practice when people disagree they simply create new languages, it's too easy to do that
@ngn The idea of a task is to "get inside" a particular language that's chosen at the beginning by the group, not judge how to make a good language or which language is better or anything like that.
I have professional recording equipment I've been using for livestreams and also the April presentation, which went really well, doing interviews with people could be interesting if I can get a steady stream of them, like once a month
The other element of the community could be discussion groups to do challenges like what Marshall described
21:42
@phantomics Personally I strongly prefer written content, so make sure whoever's watching actually wants a video!
I like written stuff too, videos seem to get all the attention, see YouTube vs. blog popularity
@Marshall Agreed, I thought overall it was more like a family reunion than something actually about APL, which is probably great if you've been in that scene for decades but not so much otherwise
Right, and tbf, it was supposed to be a commemoration of Iverson, not an APL sales pitch or think tank for APL evangelism.
It made sense as a celebration of Iverson's life, the future of APL was a secondary topic
The bits that actually mentioned Iverson were interesting to me
21:50
Yeah, same here. Roger actually focused exclusively on Ken, and that was a really nice part. (Though it annoyed me that he was so obviously reading a manuscript, I'll excuse him, because he's basically already written all these memoirs down.)
I still think people make bad arguments with regards to the use of symbols
Comparing APL symbols to addition seems like too much of a step to me
But, like, get over it? They make bad arguments because they don't want to learn APL. They don't avoid APL because of their bad arguments.
@Marshall Very good point.
That's a great point
This parallels lots of arguments about lots of subjects too, btw. They'll always find another bad argument. Sometimes, you can even make people admit that even if you could counter that argument, they'd still not accept/do/reject [subject].
21:56
The key is to make the distinction between people who don't want to learn and those who are open to it, and not to waste time with the former group
Yep. There are enough people out there, and not everyone has to be an APLer.
ngn
ngn
what are some of these "bad arguments"?
Do you mean against APL, or what I was saying (which would be off-topic)?
ngn
ngn
@Adám against apl
"The symbols are too confusing," "infix notation for everything is unreadable"
Some people simply shut down at the sight of the characters
21:59
Morten's slide said:
Weird Symbols
Infix Notation for ALL functions
Operators vs Functions
No Type Declarations
Dynamic Scope / Global by Default
I find whenever I post APL to do with advent of code for example a reaction I get is 'how on earth do you type that?!?!? do you have to copy paste everything?!?!' but they will happily install an additional keyboard for typing lots of other stuff, particularly to do with language, but the idea of doing it for programming is unthinkable
He mentioned "corporate culture, not hacker culture" as a valid criticism, I don't know where that comes from
Something Aaron Hsu wrote in an email to him.
APLers, Lispers and other language enthusiasts have much more of a spirit of adventure and experimentation than JS and Python devs IME
That's definitely true
22:00
> Criticisms of APL Eco-Systems
Poor libraries & poor library support in the language
Insufficient training materials and samples
Closed, ageing community
"Corporate" rather than "Hacker" vibe
@Adám this is entertaining because lisp has absolutely none of those besides no type declarations yes people sometimes still make bad arguments against it
Morten's response was:
... fair enough, we will work on these
ngn
ngn
@Adám i must be one of those people :) half-agree with: Weird Symbols, Operators vs Functions, and totally agree with: Dynamic Scope / Global by Default
I feel like there are sufficient training materials they're just not the easiest to access for a new person
i'd expect "insufficient training materials" usually means "google isn't that helpful"
22:02
The tutorial at tutorial.dyalog.com is one of the best language teaching tools I've ever seen
@ngn Yeah, Morten has advocating the way tradfns work. I'm surprised.
@phantomics You're joking, right?
It's super-primitive technologically though, I think in my meeting with Dyalog they said it runs on DOS
Wow I did not know that existed
@phantomics It doesn't. It runs on Dyalog APL, so the online version is probably on Linux.
@Adám problem is, those are definitely valid complaints, it's just that they mostly aren't that meaningful in the context of APL
22:04
@phantomics I really enjoyed it, too, but it seems to not be very modern. I still don't know much APL because it went over so little
@Adám That tutorial did the most to spark my interest in APL, it does a great job spurring interest in golfing and experimentation with the language
It actually seems pretty good from a content point of view
A part I've found difficult is how accretive APL is; like if you start from the APL/360 manuals there's easier "hooks" to grab onto than with modern APL
Interesting. We keep getting (apparently) very positive feedback for it, despite it being so outdated and an eyesore. I was tasked with porting the content, but it is less than trivial.
The dialog between "APL creators" is a good way to expose the thinking behind language, it strikes just the right balance between technical and whimsical
22:07
'I'd rather slide down a bannister of razor blades into a pool of iodine' haha
Most language tutorials are super dry, but then some overcorrect and become nauseating in their attempt to be quirky and relatable, "Why's Guide to Ruby" exemplifying the latter
ouch
I think ngn would disagree with their stance on readability
This is funny, bonus points to whoever wrote the dialogue
@Adám What kind of port are you planning on? Porting it to a more modern web interface?
Yes. I guess we need a volunteer.
The content also needs a bit of love.
22:10
I'd be interested to help with that, I've done web apps and training tools in the past
@phantomics Cool. We could probably take you on as an intern to work on that, similar to how RGS started work on updating Mastering Dyalog APL.
Is this tutor also present as a workspace in the Dyalog distribution? I thought the ⎕WC tutorial was a nice format
Obviously not a web app at that point..
@ab5tract Hm, I wonder if it is available anywhere. I should have the workspace somewhere, from when I looked into it.
I think it's only available in the web app
@ab5tract True, but doesn't have to be that way any more, now that we have the HTMLRenderer.
22:13
<moon-child> along the same vein, I hear very good things about the j labs (though haven't personally got around to trying any of them)
@RikedyP What are your plans for tutorial.dyalog.com?
@Adám Let's discuss that more later, is there a good way to reach you?
@phantomics Other than here? You can always email me: adam@
dyalog.com?
Yes.
22:16
Cool, I'll do that.
If you're interested in an internship (those are paid!) then email careers@ instead. (Feel free to copy me in.)
Sounds good. I'm taking off soon, but one more thing
I'm going to run the exotic languages community idea past some others and see what they think, does anyone have relative preferences for what kind of content venue they'd like? Videos/blog/chat/message board ?
definitely a chat or message board, but any or all of the others would be great
@phantomics I'd be interested in trying out a phpBB-style board—I think discourse is the software to use these days?
That seems to be a popular one now
22:26
@coltim I find APL/360 has a lot of great stuff that started to become diluted in the APL2 era.
And for those interested in talking about what makes a good APL(-family) tutorial, I'd still really appreciate feedback on the BQN tutorials that I've written so far.
22:45
@Marshall how complete is supposed to be in your impl?
@dzaima Not complete at all at the moment. That's next up, after I finish testing .
(also here you could use 2⊸•Pretty for single-line pretty-print formatting)
@dzaima Thanks. Just pushed that.
@Marshall there's definitely something to that Joel Moses quotation =P
@coltim Sorry, what's the quote?
22:51
Disappearing for an hour or two...
ngn
ngn
@coltim yes, wise words :) "notice javascript required to view this site"
@coltim do you think apl should allow (+)←{..}?
i.e. redefining squiggles or at least adding your own
I personally do, I think that would be cool
@Adám I'm fine with my real name on APL Wiki
ngn
ngn
@rak1507 that would be the "ball of mud" design. i also think it's better.
23:00
@rak1507 What behaviour would you expect if the language gains a new glyph, and you then try to run old code that defines a glyph, in the new language engine?
Hmm. I didn't mean to wade in on things, especially given the occasion. So far I've approached APL (and array languages in general) from a relatively pragmatic position, which, regardless of merit, probably makes me not the most qualified person to ask. But, carrying that forward, I think that redefining builtins likely has limited utility (e.g. the whole "in python, redefine True as False to mess with your coworkers")
Not quite sure what you mean but I'd expect exactly the same behaviour from foo←whatever as glyph←whatever
One of the things I like about APL is exactly that names are strictly separated. A user never has to worry about clashing with a built-in name.
ngn
ngn
@rak1507 "ball of mud" was about this quote
Yeah, I read it
Unless an addition is really terrible, I don't see how it can turn a language into an 'ugly kludge', especially if it is back compatible
23:04
Maybe it is a downside too, though. APLers tend to shy away from using "other people's code". "If is isn't a a quad-name, I won't use it."
ngn
ngn
corporate rather than hacker culture :)
The other part feels like "supporting unicode identifiers" which I guess is alright? Probably confusing though given the context
Builtins can only get you so far in a world where you can pip install something that even the best APLers couldn't write themselves
Sure, we do need a nice way to import and use libraries. No doubt about that.
ngn
ngn
@coltim actually python3 doesn't allow True=False
23:07
It doesn't matter if there's a nice way if people still shy away from not using other people's code like you say
@ngn interesting! I guess a replacement would be "being forced to use void(0) in javascript" (unless my knowledge there is also out of date!)
@rak1507 But that's a cultural problem. Won't be fixed by allowing other people's code to be delivered as symbols.
@coltim You can certainly mess with your coworkers in APL too. Try executing this:
Oh yeah I agree, I wasn't talking about allowing extra symbols
⎕SE.(⎕WS'Event'('SessionPrint'(⎕FX,⊂'O←{⎕←⌽⍕⍺}')))
lol
That is amazing
ngn
ngn
23:10
@rak1507 i think you should start using the "reply to this message" button. it's not clear what you're replying to when there are >1 simultaneous conversations
(Btw, you can restore sanity with ]box)
@Adám o_0 hmm do I even want to know what that does?
@coltim Just try it. Not destructive. Just fun.
@ngn Oh yeah, thanks, I will, I'm used to talking in things like discord where there are 5 simultaneous conversations going on
@rak1507 well, discord now has proper replies too
23:12
@dzaima True
Is there a quick way to reply to a message without having to click the small reply button
@dzaima Oh, really? Maybe I'll try it again then.
@rak1507 Install this userscript.
I'll just click the button
Here's another fun one to mess with your coworkers:
⎕TRAP←0'E' '''IDIOT!'''
Now wait for them to cause an error.
@Adám From my limited knowledge, I assume that reverses the entered text before eval'ing it? That ignores pretty much everything beyond the ⌽⍕⍺ though
It reverses things when displayed
23:15
that is much better =P
      ⎕SE.(⎕WS'Event'('SessionPrint'(⎕FX,⊂'O←{⎕←⌽⍕⍺}')))
      ⍳3
3 2 1
      2 3⍴⎕A
CBA
FED
I wonder if any of these things could ever be used in obscure code golf scenarios
@rak1507 I remember seeing some answers using perl command line options (+ some guidelines around how to count those)
@rak1507 Probably too verbose to set up.
unless someone posts a challenge to "output IDIOT! whenever an error occurs"
23:16
Yeah I was thinking that
There is the 'make 2+2=5' challenge or something right?
Wonder if that can be done
Hold my drink…
ngn
ngn
@rak1507 there's a video of me somewhere on yt in which i do exactly that in ride
@ngn Oh cool do you have a link?
ngn
ngn
@rak1507 it will take a while to find it
0
A: Write a program that makes 2 + 2 = 5

Adámngn/apl +←=++ +←=++ 2+2 5 Try it here.

23:19
Why not 5⍨
That'd be too obvious.
Haha fair enough
ngn
ngn
@rak1507 constant⍨ syntax was added very recently in dyalog, and ngn/apl has been dead for years
But {5} would have worked.
@rak1507 Here:
⎕SE.(⎕WS'Event'('SessionPrint'(⎕FX'O←{''2+2''≡'' ''~⍨2⊃⌽⎕SE.Log:⎕←5' '⎕←⍺}')))
In principle, you can even trap errors and analyse the executed code, to extend the language. I used to do that in APL*PLUS to enable "direct definition" (a precursor to dfns).
This extends APL with a new primitive:
⎕TRAP←2 'E' ':if''√''∊2⊃⎕DM ⋄ ⍎''√''⎕R''*∘÷⍨''⊢2⊃⎕DM ⋄ :else ⋄ {⎕←⍵}¨⎕DM ⋄ :endif'
Try it online! (contains version that works in pre-18.0)
ngn
ngn
@rak1507 found it
23:32
Now I just need to track down that other quotation about how learning APL makes you want to play around with it and see what you can do =P
Hm, I can't seem to find that video with John Scholes where in the middle of his presentation, a number is printed to the session, something he cannot explain. Later on, he has ⎕DL on a negative number, and then he understands!
02:00 - 17:0017:00 - 00:00

« first day (1422 days earlier)      last day (1529 days later) »