« first day (1441 days earlier)      last day (1214 days later) » 
04:00 - 21:0021:00 - 00:00

4:59 AM
@Adám Is there no lb for APL Extended glyphs?
↑ also, how do I use execute with the new functions in extended?
 
5:27 AM
@dzaima Thank you for your advice. Turns out it works beautifully, and now I have custom operators with the syntax you proposed.
 
6:14 AM
@Razetime apparently Extended.Execute
 
 
1 hour later…
7:20 AM
@Razetime No, but I guess I could make one. Also, I only figured out lately how to "recursively" extend glyphs, while working on TryAPL 3, and as you know, TIO has gone stale.
 
7:31 AM
kewl
 
 
2 hours later…
9:27 AM
[Made an answer for the interval notation question](https://tio.run/##dVCxSgNBEO39inS7S/b09jYnWttoYZPYXa4IhmgR0MJGYkAQjhjYoEiIjY2iSBCuUBvLy5/Mj5yze8eYO7DYnTdv3rydnd750Otf9oZnJzmYJyZZg3Uje8UMZvM2g@s3zDgewWD6nI/AzKjoKKt3GXeZLJIRB/MNt69gfsQWXhymLxKPB5NHLH1iuFotVgvhCRSOCyPe7Tdd@wjNJJi5auJzCpIH1Gwe9i6OT8cMNV1RqoRVvVuh5@IsS6tq650PILnDGkxvwHyA@cpSDck9OnTae3gf7R908kGDRb4MY7aBiBOynCCuQNGuVLosZ2ko8c1qVjZUarxSQ6WWQbyGqYd4vsbjGD6N5tNoPo1WokiREyHn7wuYLFGn4xoX1bj4Py6glShEBdOqbcGyWbqNOIj/5im02kUtWy62aJmBLHdiBwylop9oqXaslv0C "APL (Dyalog Unicode) – Try It Online")
I'm not sure why, but the ⎕R acts weird when I group everything into a single call
 
@Razetime multi-regex ⎕R requires that both left and right args are precisely vectors of vectors of characters. So 'a' 'bc' doesn't work, you need ,¨'a' 'bc' or (,'a')'bc'
 
thanku
@dzaima somehow that.. increased the size
 
@Razetime yeah, i feared that
 
oh well
 
with a hyperator , ⎕R⍥(,¨) :D
 
9:39 AM
what does it mean
anyway I had to fix the regex
 
@Razetime I believe {(⍵≥⍺)/⍺(⊣,⊣-∘(⍳∘|××)-)⍵}{¯1+⍺+⍳0⌈1+⍵-⍺} (no ¯1+ with ⎕IO←0)
alternative idea: split on , then for each get the full range as if it was [a,b] and drop first/last item if has round parens on start/end
 
10:11 AM
@dzaima I have 48
 
@dzaima Not true.
 
@Adám wat i definitely recall that being an issue
 
@dzaima ⋄ 'a' 'bc'⎕R'AB' 'C'⊢'abraham bobcat'
 
@Adám
┌→────────────────┐
│ABbrABhABm boCABt│
└─────────────────┘
 
well.. ¯\_(ツ)_/¯
 
10:18 AM
⋄ 'a' 'bc'⎕R'B' 'C'⊢'abraham bobcat'
 
@Bubbler
┌→─────────────────┐
│BCbrBChBCm boBCBCt│
└──────────────────┘
 
⋄ 'a' 'bc'⎕R'BC'⊢'abraham bobcat'
 
 @Bubbler
┌→─────────────────┐
│BCbrBChBCm boBCBCt│
└──────────────────┘
 
⋄ 'a' 'b'⎕R'AB' 'C'⊢'abraham bobcat'
 
@Bubbler LENGTH ERROR
 
10:20 AM
@Bubbler Yeah, that one, I've suggested should be handled, but that wasn't dzaima's claim.
 
yeah. well i guess i either remember wrong or screwed something else up when testing.
 
@dzaima woah
I'll post my ⍎ thing and you post your smarter answer
 
10:39 AM
Does this make sense?
⍝ Examples assuming parentheses are required for both strands and modified assignments:
 f x ← a  ⍝ use of pass-through value
(x y)← a  ⍝ strand assignment
 x(f ←)a  ⍝ modified assignment

 x f  y ← a  ⍝ use of pass-through value
(f g) x ← a  ⍝ use of pass-through value
 f(x  y)← a  ⍝ use of pass-through value from strand assignment
 f x (g ←)a  ⍝ use of pass-through value from modified assignment

(x y)(g ←)a  ⍝ modified strand assignment
(x y  z)← a  ⍝ strand assignment
 x(f  o ←)a  ⍝ modified assignment with derived function
 
@Adám is x(+/÷≢←)a part of the "derived function" case?
 
Yes.
 
oh, that'd be calling the train dyadically; x(+-×←)y is a better example (for probability-or-ing x by y)
 
Sure, but that's not the point here. Any derived function (including a train) would be allowed.
The list isn't exhaustive, as there are many more possibilities with various name classes. The point is if what's happening can be determined without knowing the name class of anything.
 
doesn't include structural modification though
 
10:50 AM
Currently, structural modification using named structural functions isn't allowed, but you have a good point.
Imo, neither structural, nor indexed assignment (nor @) should ever have been added. Rather, we need structural under (which could have used the @ symbol).
 
@Adám structural under is way harder to get done in-place though, and it has its fair share of usage awkwardness
 
11:08 AM
I like @ :(
 
@rak1507 @ is just two specific cases of under. @f is ⍢(f⌿⊢) (assume a sane function ) and @Iv is ⍢(Iv⌷⊢) (assume a sane selection function ).
 
I'm not quite sure how under works
 
In principle, ⍵⍵⍣¯1 ⍺⍺⍥⍵⍵
But for a selection function ⍵⍵ that obviously doesn't work, so instead think of f⍢g a as (g a)←f g a
Dyadic would be x f⍢g a as (x g a)←x f⍥g a
 
Seems a little bit complex compared to how simple @ is but I guess it makes sense
 
E.g. to negate the first two elements: -⍢(2↑⊢)a which is like -@(⍳2)a
 
11:18 AM
(2↑⊢) isn't invertible, so how would that work?
Oh, it is invertible, but the inverse is the identity
 
@rak1507 That's a structural function, so it'd do ((2↑⊢)a)←…
 
Are there any other structural functions in APL at the moment?
 
, / and all compositions and trains using them.
 
Oh
 
(Did I forget any?)
To negate the last two elements: -⍢(¯2↑⊢)a but try writing that with @
 
11:22 AM
⌽negate at first two⌽
Yeah not great
 
OK, try nulling the diagonal of a matrix with @ instead of under: 0⍢(1 1∘⍉)
 
0@{⍸⍣¯1,⍨¨⍳≢⍵}
 
Doesn't work on non-square matrices.
 
Ah yeah
 
Even worse, try nulling the anti-diagonal! 0⍢(1 1⍉⌽)
 
11:29 AM
{a⊣(1 1⍉⌽a)←0⊣a←⍵} this isn't so bad.. under does look better though
 
OK, now try reversing the order of simple scalars: ⌽⍢∊
 
Oh that's really cool I'm 100% sold now
 
fwiw, that method you used works (it is how I implemented ): {a⊣(∊a)←⌽∊a←⍵}
 
though @ has its bonuses too. in particular, it's much better when the items you need to apply to depend on the items themselves (e.g. lowercase only vowels, reverse items with odd length)
 
12:20 PM
@dzaima 1∘⎕C⍢(∊∘'AEIOU'⊢⍤⌿⊢) and ¨⍢(⊢⊢⍤⌿⍨2|≢¨)
That should be ⌽¨⍢ not ¨⍢ of course.
@Razetime I've edited the wiki. Have a look to see if you're happy with that.
 
@Adám those can't actually ever work, as (f⍢g ⍵) ≡ (g⍣¯1)f g ⍵(g f⍢g ⍵) ≡ f g ⍵, but, e.g. substituting the first example, ((∊∘'AEIOU'⊢⍤⌿⊢)'aabB') ≢ 1∘⎕C (∊∘'AEIOU'⊢⍤⌿⊢)'aAbB'
i guess the second can technically, maybe work as isn't relying on the actual items of , just the structure
 
I've written a draft blog post called 'Why I use APL every day', and as usual I'd love some feedback.

It's currently a secret gist https://gist.github.com/romilly/628037d1fd958d0cf57c358d6b481135
 
@dzaima Structural functions would need detection and use structural under instead, not ⍣¯1.
@RomillyCocking "whenver"
@RomillyCocking "hate you" → "hate for you"
 
12:36 PM
@Adám there's no ⍣¯1 in the checking function, and if it broke a valid ⍣¯1 invariant in a non-erroring situation, either they can't live on the same character or the definition of under in general needs to not have the identity.
 
@dzaima I don't claim that identity.
@RomillyCocking Maybe link "codegolf" to aplwiki.com/wiki/Code_golf or en.wikipedia.org/wiki/Code_golf and maybe link/show an example of readable APL.
 
- It's ... OK, as far as it goes. Even with my pro-APL bias, it doesn't grab me or make me enthusiastic about exploring APL.

It may be worth writing a separate post expanding on the idea of software as stored knowledge.
 
@Adám so under is free to do whatever it wants to?
 
@dzaima I think it needs to either analyse its operand or try the structural approach first, and only if the operand clearly isn't structural/selective or if that approach fails, it should go the computational ⍣¯1 route.
 
(and either way, under not having the identity (g f⍢g ⍵) ≡ f g ⍵ would be just stupid)
 
12:40 PM
@RomillyCocking I'm with Jeff. While well-written in general, I don't find it strongly compels non-APLers (or even more so, APL-haters) to explore APL.
 
Thanks. I'll have another think. I am deliberately trying not to sound too compelling, as that is fatal in my experience. It sounds as if I have gone too far the other way.
 
@Adám well, it's not an advertisement so it doesn't need to
 
What is it?
@dzaima I assume you've read this
 
@Adám fwiw marshall didn't approve of breaking that identity for BQN too
@Adám " it satisfies (𝕨𝔽○𝔾𝕩) ≡ 𝔾z"
@Adám "blog post called 'Why I use APL every day'" per the message I guess. Doesn't need to be much more
@dzaima (that)
 
1:03 PM
@Adám yep that is worded much better
@Adám there exist APL haters?
 
@Adám It's a public service broadcast. I don't want to sell APL. What I want is for people who know nothing about the language to be a little bit curious - curious enough to take the first step.
@Razetime Yup, and some of them are a real issue. Eben Upton (creator of Raspberry Pi) is one.
 
huh wow
 
And Eben will read the blog post when it's up.
 
@RomillyCocking I wanted to read some drama but twitter.com/… found nothing. Ah well :)
 
How come he hates it? @RomillyCocking
 
1:06 PM
 
'Dijkstra didn't hate APL specifically: he hated every language other than ALGOL 60' lol
 
Cos
1) he wants people to learn languages where anyone can guess what code does, like simple Python and
2) APLers tried to sell it too hard in the past, and pissed everyone off
 
@rak1507 this is the funniest quote on the wiki
 
'As long as I am alive, APL will never be used in Munich' is a good one too
 
@rak1507 especially as Munich is home to quite a few APL2 gurus
 
ngn
1:11 PM
@RomillyCocking "Those that have [heard of apl], either love it [..] or hate it." - that's not true. many feel neutral and see it as just a tool.
personally, i went from excited to feeling lukewarm about it as i learned more
 
@ngn You're right. I will make a weaker, more accurate claim.
 
@ngn ouch
 
I both love APL and resent many of its specifics.
@JoeyGibson Welcome to. Interested in APL? It uses some Greek letters…
 
@ngn I mean, you don't stay excited about any language for long. APL is pretty good at what it does, but unfortunately it doesn't do everything many want
 
When I and co-workers used to teach APL there was a pretty constant pattern.

30% of students quite liked it as a tool. 30% loved it. 30% hated it. 10% asked if they could work for us.
@dzaima I've been excited about APL for most of the last 50 years. Not exclusively, but a lot.
 
1:17 PM
@RomillyCocking That's twice as many years as I've been excited about APL ⍥
 
ngn
@RomillyCocking the "Maybe not." section is missing the elephant in the room - there's only one decent impl and it happens to be proprietary and commercial, blocking progress as any monopoly would do
 
How is it blocking progress?
 
ngn
@rak1507 by insisting on not fixing problems because of backwards compatibility
 
@ngn I'd say "by preventing a fork that doesn't have backwards compatibility".
 
But there's nothing stopping another implementation from doing it right, there's just not the motivation to do so
 
1:19 PM
@ngn I respect your pov but I do not share it. I believe profoundly that knowledge (including s/w) should be free but I also believe in evolution rather than revolution. Right now APL needs money behind it.
 
Money won't fix problems that they refuse to fix
 
Also backward compatibility is not just an issue of commercial interest. It's also a consquence of respecting the human value of what has already been created, and still needs to work.
 
ngn
@RomillyCocking where do you see pov in that statement?
 
We differ fundamentally on this. For me the issue is not 'where should we be' but 'how could we actually get there'
 
That is a crazy opinion imo, so no legacy code should ever be rewritten because it would be insulting to the people who originally wrote it?
 
1:22 PM
I fear this is heading towards a confrontation and I don't enjoy those or handle them well.
@rak1507 No, I'm saying that many people prefer the software they wrote to continue to work and that has to be balanced against the value of progress.
 
@rak1507 That's not what he said, only that old code should still be able to run.
 
I'm out of here for now.
 
Ah I misinterpreted 'respecting the human value of what has already been created' of referring to the programming language itself rather than the software built in it
 
Thaks for your comments abut the blog post. I will link to an updated version 'real soon now' (tm)
 
No matter how sensible it is, browsers can't begin to give [2,7,10] as result of JavaScript's [2,10,7].sort()
 
1:25 PM
@RomillyCocking I wonder how these differences get resolved in a good way - how is it possible to "actually get there". (We have a similar situation in the Elm language community where some aspects of how the creator is handling the development make other folks grow impatient with it and want to create a community-led fork... but then, how do you make the fork sustainable?) Perhaps Perl folks managed to pull this off lately?
 
ngn
@Adám surely you don't mean to compare dyalog (a few hundred users? a thousand? they all know each other) to a browser (the whole world, basically)
 
Making a breaking change (even for the better) is a tremendous undertaking, and can easily take decades, even with conversion tools available. See Python2 → Python3.
 
@MartinJaniczek If there are fundamental unchangeable differences between impl and users, I think the only sensible thing is to attempt to fork. Doesn't guarantee success, but is the best option
 
@ngn Yes I do. Is there anything fundamentally wrong with doing so?
 
@Adám if it's going to take a while, might as well start sooner rather than later...
Also, one of the biggest issues with Python's conversion was having to port all the libraries that people used, seeing as there are very few APL libraries, that seems like it would be less of an issue
 
1:29 PM
Sure, but the list of what needs fixing it isn't even ready yet.
 
ngn
@Adám yes, the sheer amount of sofware running on js vs apl is vastly different
 
@ngn So?
 
ngn
@Adám so your comparison with js's .sort() doesn't hold water
 
@ngn Why?
 
ngn
apl users are so few, dyalog could literally go through the list of customers one by one, tell them about the prospect of introducing a breaking change, and ask them to adapt
can you imagine a web browser doing this?
 
1:33 PM
@ngn I don't believe they'd be willing to do so.
 
ngn
they can choose another impl from the apl market, then :)
(they could, if there were any..)
 
@ngn You know they can't (comment for other readers)
 
@ngn Also, that'd still be a huge investment. Not every APL codebase has 100% coverage tests to make sure nothing breaks
 
@ngn How many browser users pay substantial amounts to the browser devs to ensure that their code can still run on modern hardware and OSs?
 
ngn
@dzaima and that's exactly the kind of thinking that leads to the perpetuation of early mistakes
@Adám irrelevant, but i think the market there is more about advertising. users are the product. they pay with their privacy.
 
1:38 PM
@ngn Right. So Dyalog is mostly stuck with keeping backwards compatibility, whether you, or Dyalog, or other users, like it or not. Again, best option is to have a separate impl. But there's noone willing to put actual effort into it for approximately zero gain
 
ngn
@dzaima right
but i think it's ridiculous to write a paragraph about why not to use apl, and not even mention the problem (whatever one's opinion about it is)
the inconveniences of the character set are so insignificant compared to the problem of eternal backwards compatibility and the lack of good free alternatives
 
2:05 PM
I disagree. I think the main issue today to using APL for production code, is lack of good interoperability. However, all of these issues are kind of irrelevant for the benefit of using APL to explore algorithms and solve problems ― often with the goal of re-implementing in another language later.
 
ngn
@Adám hm, what good is interop if you don't even have an interpreter you can use freely for any purpose? this may depend on the point of view. if i understand correctly, romilly's readers are likely to be young and unaffiliated with any company. learning apl would be a bad investment for them.
 
@ngn But you do have an interpreter that you can use freely for these purposes.
@ngn Why? If it gives them a free tool to explore algorithms, solve problems, and learn an alternative/better way to attack things, then what's not to like?
 
ngn
@Adám it's not libre, and better libre alternatives exist
 
It's like saying getting into playing with Wolfram Alpha is a bad idea because Mathematica is a non-libre product.
@ngn What better libre alternatives exist?
 
ngn
@Adám exactly!
 
2:14 PM
Do you actually believe that?
 
ngn
@Adám the ones mentioned in the article: numpy, tensorflow, etc
@Adám about mathematica? definitely
 
@ngn But, as the article points out, those are not conducive to attain the kind of insight that learning APL can provide.
@ngn I suspect that a lot of people would disagree about that. And maybe the article targets those…
 
ngn
@Adám "not conductive to attain the kind of insight" .. i guess apl isn't conductive to the kind of insight they can provide either :)
 
@RomillyCocking 'willimg'. interesting story of the origin of one-liners, is that how code golf 'is known to have been popular with earlier APL hackers'? (quote from en.wikipedia.org/wiki/Code_golf, but unsourced)
 
@user41805 Unsourced there, but my father told me the same (before Wikipedia existed), and he was there to witness (well, and participate in) it!
At IBM (he worked at their development labs '68-'72), they used to announce things like "I'll give a coffee to whomever can reduce this code by one character" (or whatever unit they used).
 
2:24 PM
ah interesting
 
@Adám This reminds me of Hillel Wayne's talk about CS history and retroactively rationalizing "why we do X" deconstructconf.com/2019/…
 
@MartinJaniczek Let me watch that while washing dishes tonight…
 
ngn
@RomillyCocking argument is the most efficient way to get to the truth, they say. as long as we don't make it too personal, i think we all should seek confrontation, not avoid it. it would be rather boring if we all pretended to agree all the time. i hope none of my messages was offensive.
 
@Adám It also has a transcript in case you prefer that format. I found it pretty insightful, and finding out the historic reasons for "why are one-liners a thing" felt similar just now :)
 
maybe that wikipedia sentence can cite the aplwiki article, but i'm not sure if it is acceptable for wp's standards
 
2:30 PM
"Heard from someone who was there" is an interesting problem for Wikipedia.
I don't think it is allowed, but if someone was to have interviewed him and put the interview on YouTube, then it would be admissible.
Maybe we can get another APL oldtimer to say so on video. Very few left today.
Actually, Romilly's blog post may well be considered a valid source, as he was there.
 
I have a question about Dyalog parsing rules. Assume you have an ambivalent two-arg operator: OP. The left operator arg being a function, and the right can be either a function or a value. How is the following parsed? 1+OP+3?
Is it parsed as an operator taking two functions, + and +?
Or is it assuming that +3 is the right value argument?
 
@Adám en.wikipedia.org/wiki/… looks like claims made by self-published authors about themselves can be used, so yeah that should work
 
@EliasMårtenson "Ambivalent two-arg operator" sounds like a contradiction.
 
I mean ambivalent with respect to the allowed datatype on the right side.
 
ngn
ambi-right-operand-kinded :)
 
2:39 PM
@EliasMårtenson And by "two-arg" you mean dyadic operator, i.e. taking two operands?
 
Yes, exactly.
I mean, the operator is dyadic. The derived function may or may not be.
 
ngn
1(+OP+)3 then
 
If the operator needs two operands, it grabs two operands before any functions are applied, so 1(+OP+)3
 
What about +OP 3 4 then?
 
ngn
⍵⍵ becomes 3 4
 
2:41 PM
@EliasMårtenson Yup, (+OP(3 4)) i.e. a function.
@EliasMårtenson You know you can try it: ⋄ +{⍵⍵}3 4
 
@Adám
 {⍵⍵}
┌┴┐
+ 3·4
 
I'm thinking about how to write the parsing rules so it's Dyalog compatible.
 
I give up on operators, APL's pseudo-infix is too ambiguous. I need a stack-based language with scalar extension. And static typing would be interesting too.
 
I can be done.
 
@EliasMårtenson Binding strength seems to work well.
 
2:44 PM
@Wezl The work on my parser has shown that it's possible to be almost Dyalog compatible while still removing ambiguities.
 
really? then what does a b c do? apply a function? access variables? make a train?
maybe I'm talking about different ambiguities
 
3:03 PM
@Wezl That depends on whether a, b or c are defined as functions.
This is no different from how C works. The existence of a typedef can completely change how something is parsed.
Not to mention C++. In that language all bets are off.
 
which is why I dislike C and never touch C++
 
Wait, nothing wrong with disliking C and C++, but that is the reason you dislike them? :-)
 
not the only one
 
Sure hope so. C++ in particular has a bottomless pit of garbage to choose from.
 
I don't hate C much because it was the first language I learned, but I never really understood it.
I understand the syntax, but it always segfaults
 
3:14 PM
@Wezl The syntax isn't enough. One has to understand the memory model, pointer behaviour, etc. I have a large amount of experience with it and understand it very well. But, even I wouldn't want to write a large C program again.
But I wouldn't call C a "bad" language. I't woefully inadequate for most projects, but it dpes exactly what it sets out to do. In contrast there are very valid arguments why C++ is a quantifiably "bad" language.
 
Like what? I'm interested
 
3:27 PM
@EliasMårtenson That's the beauty of c, and the ugliness of c++ right there. And I say that as a fan of both.
 
@rak1507 It's hard to take a single feature of C++ and point to it and say "see? this is what makes it bad". It's the mix of all the things it does. It's the collection of seemingly nice features, all just shoved into the language with little thought of the whole. This is why you have several generations of C++, where for each generation, C++ programmers say "oh, you shouldn't use that feature, do it this way instead"
How many different ways do they have to track references to instances again?
But each and every (well, almost) feature of C++ sounds really good on its own.
 
Not written c++ in anger since my postdoc many years ago. And have no inclination to ever do it again.
(or look at the code I wrote :))
I doubt I'd recognise the language today.
 
3:57 PM
Your messages were not at all offensive. I was feeling very vulnerable for reasons nothing to do with this community. No longer an issue, as a major personal problem has just been resolved.

I think I'd say 'discussion' rather than argument, but I agree that open and friendly discussion (which I see a lot of here) is a great way to get closer to the truth.
 
@RomillyCocking I can't express enough how much I appreciate your frequenting this room, asking for feedback and raising ideas.
 
@ngn I think the problem with breaking changes is that the biggest users (who also own shares in the main APL vendor) have many senior execs who would love a reason to force their employees to move away from APL. Of course they would be mad to do so, but I've seen bigger companies try to do madder things.
For instance I know of one world famous investment bank that has tried to rewrite the software that makes most of its money, in order to move from Smalltalk to Java for 'religious' reasons. They have spent many millions over decades and falled three times. They are about to try a fourth,
@Adam I feel very welcome here, and I have got much benefit (and encouragement) from the feedback.
 
@RomillyCocking IIRC, the biggest customer(s) even bought in and arranged leadership for the explicit purpose of facilitating migration of their own things away from APL. But that new leadership instead managed to turn the ship around and made the customer abandon (some of) their migration plans.
 
@Adám The forces of righteousness won that time, but the batlle between wisdom and folly is never over.
 
ngn
4:33 PM
@RomillyCocking i believe language design should be driven by other factors than executive politics
and, given the situation you describe, what does dyalog have to gain from not fixing old mistakes? maybe a bit of time, but also more reason for those companies to move away from apl
 
@ngn So do I but while we remain in a primarily capitalist economy the piper needs paying, and the payer calls the tune. Don;t get me wrong - I know that open source languages can prosper, but all those I know of have been supported by funders who had a lot of influence over their direction.
 
RGS
4:53 PM
@RomillyCocking "Not everyone is willimg to do that"
@RomillyCocking "You should use the most approporiate tool for the job"
@RomillyCocking "give you new insight into to the problems"
 
@RGS Your English is better than mine :)
 
RGS
@RomillyCocking "If you're working with Tensors" should be lower case 't', matching the other usages of the word in your blog post.
 
@RGS good catches. Thanks.
 
RGS
@RomillyCocking "It's easier to use and even more powerful that it was." than?
"I'd hate you to miss out (on) something"
 
ngn
@RomillyCocking so, we need funding + a new piper?
 
RGS
5:00 PM
Np Romilly, when I'm in the mood I am great at reviewing written documents :P
 
@RGS The draft blog post is going to get an update tomorrow morning- corrections and some new text. I'll be using some ANN examples, based on my blog posts of 2016 and also talking about Hopfield networks which are interesting and very well suited to implementation in APL.
 
RGS
@RomillyCocking Feel free to ping me, I'll review it again and learn something new along the way.
Btw I also enjoy using APL to deal with neural networks, I trust you've seen a couple of videos of mine ;)
 
@ngn I think if you/we want to develop an open source APL from the ground up you need someone with deep pockets.
My strategy is to try to help Dyalog to the point where they felt they could afford to fund that. I trust the people at Dyalog. They have been friends for many years. I have never known them do anything remotely dishonest and they have always been completely open with me. That's rare in business.
PS I can tell you what I'd love: a FOSS APL with syntax and semantics inspired by both APL and Smalltalk.
Both languages are expressive.
 
@RomillyCocking what parts of smalltalk would you borrow?
 
smalltalk's syntax I can almost approve of
the blocks-as-objects that it may have gotten from logo are also nice
 
5:12 PM
@Dogbert I like treating everything as an object (even arrays). I like the environment to include soirce code for all of the language. (In some cases that source will say 'call this bottom-level primitive here' and the byte-code compiler will need to inline that, but that's OK). I like the way that Smalltalk handles multiple method arguments. I like the fact that you can break everything by redefining + on integers :)
 
ngn
@RomillyCocking the lazy-pure-functional-language community managed to unite and created something as amazing as haskell. the dominant impl is free to use for any purpose (still funded development, but free for the user). tbh, i don't understand why the array community should be so different.
 
because it's smaller?
 
And I like the way that the editors and browsers are built in the language, so you can change them if you want/need to.
 
@RomillyCocking boo
 
@Wezl or is it? R is kinda big
 
5:15 PM
@Adám Smalltalk is not the only language where you can do very naughty things :)
And I like the fact that Smalltalk lets you dig in to the internal structure of objects, and create proxy objects, and (cos I am vain) the fact that there is a little code of mine in the (now defunct) Digital Smalltalk product.
 
ngn
@RomillyCocking "trust" - yes, for most things. "remotely dishonest" - i hate to say this, but if it matters, i can point to at least 2 examples from recent competitions :)
 
Sadly I never get to use Smalltalk now, because APL is better for what I create and Python is better for what I publish.
 
@RomillyCocking I'm familiar with Ruby which borrows a lot from Smalltalk and lets you redefine + on integers. I'll check out the "multiple method arguments" thing!
 
@ngn I do suspect you love to say that. Either way, I'd love to hear what.
 
Are there any blog posts or anything floating around with suggestions from users on improving (or changing) the syntax and semantics of APL? any interesting derived languages?
 
5:21 PM
@Dogbert like x indexOf: $a ifAbsent: [0]
 
@Dogbert J, A(+), K, BQN…
 
Mutiple agruments:

bucket fillWith: water and: wine
 
just like named arguments in python or keyword arguments in ruby?
 
@Romilly you mean arguments. @Romillt no I don'r (with apologies to Monty Python)
 
@Dogbert We might be (kind-of) getting that (fairly) soon.
 
5:23 PM
Not quite the same as Python.
ALso Smalltalk supports three kinds of message: unary (suffix), binary (infix) and keyword.
So you can say stinrg length (unart ,essgage sent to a string), 2 + 3 (binary cos it's a special cjharacter, but redefinable in your code if you want) or like my bucket example.
Also if you send a message to an object that belongs to a class that doesn't understand it, the system sends the message doesNotUndertand: message to it. If your class reimplements that method, you can do anyhing you like.
It also opens the opportuninty for the follwing error message which I once saw:
'parent doesNotUnderstand: child'
 
@Wezl Just enforcing a strict naming convention would go a long way.
 
like using assembly macros always would make control structures easier to follow
 
5:38 PM
@RomillyCocking Objective-C stole this (and many other) ideas from Smalltalk.
 
ngn
@Adám you have and you will again after dinner
@Dogbert there's no shortage of suggestions and wannabe implementers. we need: [0] money, and [1] fast implementations
2
@Dogbert most interesting derived language, in my opinion: k
 
<moon-child> k has certainly deviated the most from trad. apl. (Where j and bqn, as well as more modern apl, are more of a direct evolution.) There are also a bunch of less prominent derivatives: xs, klong, o, nial, a couple of others I forgeet
<moon-child> (maybe klong can be called a k)
 
6:12 PM
How would I go about learning k?
I'm looking at learnxinyminutes.com/docs/kdb+ , and on a side note, would anyone be interested in writing a Learn X In Y Minutes tutorial for APL?
 
RGS
@Wezl I would.
 
@Wezl there's also this, but note that's for ±k6, whereas that's for k4
 
@Wezl Take a look at this issue as well.
 
<moon-child> @Wezl as I recall github.com/kparc/kcc was decent, though that's for k7
 
ngn
6:27 PM
@DyalogAPL <moon-child> ngn.bitbucket.io/k.html
@Wezl there's a k room where you can ask anything but keep in mind people there are usually busy and might be slow to reply
 
6:42 PM
@ngn are you allowed to talk about those examples?
 
@EliasMårtenson How about making the header part of the code? This will allow you to create anonymous and/or inline functions with a header. Also, do you not want to be able to specify the return variable name? E.g. ƒ foo {(r0 r1 r2)←(a0 a1 a2)∇(b0 b1) → a1+a1+a2+b0+b1} or how about foo←{(r0 r1 r2)←(a0 a1 a2)∇(b0 b1) → a1+a1+a2+b0+b1} ? If the return variable isn't specified, just use the last statement's value. The terse form would be equivalent to the header ⍺∇⍵ →
 
ngn
@rak1507 should i get a permission from the commission on freedom of speech first? :)
 
I thought it might be from when you worked at Dyalog and there could be an NDA or something like that
 
@rak1507 I literally asked about it, but that's besides the point. This is an open forum, and while moderated, it isn't censored.
The moderation here is only to keep the conversations civil and on-topic.
We'd probably frown at disclosing outright security vulnerabilities or PII without contacting the involved parties first, though.
 
ngn
@rak1507 this is about publicly announced competitions. i wouldn't reveal company secrets even though my nda has expired.
 
6:49 PM
I seem to recall you complained about something, but I can't remember what. As we are currently reviewing the site content for the 2021 round, it is a good time to fix issues.
 
quick bit of searching and I found something about ngn losing out because of the lack of comments, why doesn't that surprise me
 
Ah, wasn't it that we don't disclose exactly how various aspects of solutions weigh in on the final score?
 
ngn
@Adám [0] the 2017 coding challenge (not: student competition, not: optima codegolf challenge). i was the sole winner. dyalog violated 2 of their their own rules to put someone else on first place too. i was complaining for months, but was just told to wait some more. (@Adám see your email, you were on cc then, i bumped the thread)
 
And also that we didn't make it clear how one should prioritise breath (solving a lot of tasks) vs depth (quality of individual solutions)?
 
ngn
6:54 PM
@rak1507 yes, [1] is a me getting negative points for lack of comments, and the winner disappearing from this chat after after being asked for sources
@rak1507 yes! that one. thanks for finding it.
 
@ngn You did not, and have afaik never gotten negative points for lack of comments. You did, however, miss out on potential extra points you could have gotten for comments. And to be fair, we did state that one should comment the code and that the code should be clear.
 
am I missing something or is 269 ≠ 271
oh
That person isn't even on the leaderboard
 
@ngn the first isn't really "dishonest" since it did say that comments are judged (not whether they're positive or negative points, but providing a checklist of how precisely to win would be kinda stupid imo)
 
ngn
@rak1507 lol :)
 
RGS
@rak1507 oh so that is it. I was finding it weird that ngn was the winner in every single month, there being months for which ngn was the only 1st place, and then someone else also gets the same score as ngn.
 
6:56 PM
that's ... weird
 
@dzaima Is first the correct name? or ... the argument at index [1]?
 
@Wezl i read that message as having two parts for some reason, but yeah, "first" is wrong there. Just 'that's not really "dishonest" …'
 
I thought you meant first because ngn is 0-indexing their points
 
ngn
https://www.dyalog.com/uploads/files/2017yeargame.txt

Week 9: as I wrote a year ago, "I've assumed that character scalars are not acceptable results - The Rules mention only character *vectors*. If scalars are ok, please don't count the leading glyph in the expression for 9."

Week 25: The first item of ⎕SD is not necessarily 25 - for example in the terminal I'm typing in right now ⎕SD is 39 151. The Rules say: "Expressions must not rely on local conditions, for example, the operating system, the exact date/time or specific input from the user."
 
Right, I see that. Having Jonas Stensiö as a shared winner seems like a mistake. It being dishonest is a stretch.
And lack of clarity in a problem spec is a well-known issue in these parts, of course. It was a rather informal competition, without prizes, and I guess Fiona just drowned in more important matters. Again, "dishonest"? I wouldn't call it that. Nobody tried to trick or deceive anyone here.
 
ngn
7:03 PM
@Adám did you read the whole thread i bumped for you? i asked about these rules in advance, and reminded about correcting the mistake 3 times after the competition was over
@Adám so, is anyone going to correct the score now?
 
@ngn Even if we don't correct mistakes in time for it to matter, it is hardly "dishonest", is it? What's next? Is ignoring reports about software bugs also "dishonest"?
 
ngn
@Adám should i have reminded about this 4 times? 5.. ?
 
@ngn No, we're stretched thin, and unfortunately have to prioritise sometimes. Some of us even have lives outside work.
@ngn I'll ask Fiona if she can find the old data, or else, at least remove Stensiö as that seems to be a mistake. Would also like us to announce it on instagooglefacetweet, or issue a press release?
 
ngn
@Adám i'd be happy with just a correction on dyalog's own site, and no social media
@Adám well, if you don't have time to judge contests, don't publish them
 
@ngn Stuff happens. Still, "dishonest"‽
 
ngn
7:16 PM
@Adám i don't know how else to describe it
 
@ngn How about words like "Dyalog employees are known to have made mistakes and forget things"?
 
ngn
@Adám you're a master manipulator :)
 
@ngn I'll be proud if I ever manage to manipulate you. Still, isn't that objectively more correct than "remotely dishonest" - i hate to say this, but if it matters, i can point to at least 2 examples from recent competitions when all you have is an example of your repeated (very valid, imo) requests remaining unaddressed after you were told:
> Sorry Nick; I got back today but have a squillion emails and other jobs to work through. I'll get back to you on this later this week.
and
 
ngn
@Adám i asked a question about the rules. i got a clarification and abided by it. at the end of the year i find that the exact same rules have been violated. complaint - no reply. reminder: "later this week". next week: "Not forgotten but bumped down the list". it's been 3 years since :) now what would you have thought in this situation?
 
> Not forgotten but bumped down the list due to having my laptop die and needing to get a new machine up and running. I will come back to you but it will be a while. Sorry.
@ngn That they have forgotten, of course.
 
RGS
7:27 PM
@ngn That the issue fell through the cracks..?
 
ngn
@Adám you forgot too?
in The Nineteenth Byte, Feb 13 '18 at 21:52, by ngn
@Adám no comment about the competition? the published answers for 9 and 25 don't comply with the rules
 
does anyone need a glass of water? 🧊🌊🥤🦄
 
RGS
@Wezl 🙋
 
@RGS you can have the unicorn for free too
 
RGS
@Wezl :D Thanks
 
7:31 PM
@ngn Absolutely. I forget a lot, to the point where I've considered giving up working because of it. But in this case, I did apparently ask Fiona, and assumed she'd take care of it. I do not believe that you honestly think Fiona was playing tricks on you. You know her well enough for that. And what did she or Dyalog stand to gain, anyway? It isn't as if we've otherwise tried to hurt you, is it?
 
ngn
what did they have to gain - that's what i was wondering too
 
And that didn't lead you to question your conclusion about dishonesty?
 
ngn
i forget a lot too. i can understand how in rare cases someone can forget twice. maybe even three times is possible. but four.. ? what would you assume is more likely to have happened?
 
@ngn If it was me, oh dear, I can forget the same thing, every day, for months. Despite daily reminders.
And it being mostly a single email thread… I just hit "unread" when it is something I need to do about, and then it sinks into the pile of unread emails.
 
8:02 PM
@xpqz If I had to choose/use a C derivative that implemented O-O it would be Objective-C
 
8:29 PM
@KamilaSzewczyk You've claimed 100 rep for this but it isn't explained.
 
04:00 - 21:0021:00 - 00:00

« first day (1441 days earlier)      last day (1214 days later) »