« first day (1461 days earlier)      last day (1198 days later) » 

5:00 PM
@KamilaSzewczyk musl uses MIT, one of the licenses that article is so against
 
@rak1507 read it until the end
 
ngn
4) _outside RIDE isn't enjoyable_ - have you tried writing apl in vim?
7) _employment in APL_ - other than dyalog and their sponsors?
 
oh the addendum
 
7) i said seems to
4) no, I'm not a vim user, I'm using my custom editor.
i actually can barely use vim effectively, i can just do some editing.
 
@ngn employment through one company is better than employment through 0 companies
 
ngn
5:02 PM
@rak1507 there are other languages, you know :)
 
@ngn no, really?! I know, but saying that all APL jobs are through one company doesn't refute the existence of APL jobs
 
ngn
@rak1507 correct
 
its sort of a chicken/chicken's egg problem. id personally like to see more apl jobs (mostly out of self-preservation). i also think theres plenty of reason why a "startup" would pick an array language as a competitive edge
 
I'll be honest I don't see much advantage unless you're doing something that benefits from that, it seems to me like APL would be more suited taking up some of the fortran market
 
to me, the advantage of APL et all is its ability to have a domain specific model embedded directly into the execution environment.
 
5:10 PM
I have no idea what that really means so I will take your word for it
 
ngn
me either
 
hah ill try to be a little less obtuse
 
ngn
@cannadayr an advantage would be something apl has but other languages don't have
 
an insurance company might have a very complex set of models that it uses to calculate something like rates.
 
the fact thousands if not millions more people use numpy than APL is a complete failure of APLers to publicise APL and array languages
 
5:13 PM
when theyre building a software platform, they need to work very closely with their analysts to port that pricing model to wtvr language/set of languages they chose
 
@rak1507 python has the advantage that it allows not writing array-y code when you don't want to. APLs ability to do that is near-nonexistent
 
if an assumption in their model proves to be wrong, it might require a lot of different people to coordinate large changes to their codebase
 
@dzaima yeah, that's another failure, the fact you still can't run scripts easily seems so strange
 
the advantage of symbolic, array based languages, is that the model can be expressed very tersely.
if an assumption changes in the model, it doesn't require nearly as much coordination/time/energy to modify the software expression of that model.
 
ngn
@rak1507 that's a failure of dyalog, not apl as a language
 
5:17 PM
@ngn Also about to change in the next release IIRC.
 
@rak1507 Soon, soon…
 
@ngn yeah, that specific thing is
@Adám soon?! what have dyalog been doing for the last decade!
 
@rak1507 Good question.
 
@rak1507 Windows GUI applications? :D (Yeah I guess we unix users are the vocal non-paying minority in this case)
 
ngn
@cannadayr this combination of features is consistent with how iverson described his notation's advantage (i watched an interview with him on yt once) - concise and does bulk operations
 
5:19 PM
@MartinJaniczek we? I am a filthy windows user
 
@rak1507 Oh no did I assume your gen^H^H^H system?
 
Good news: I raised the radical idea that now that we do a new thing ("#!" scripting) we have a once-in-a-lifetime opportunity to right some wrongs. So we should ignore all global states (⎕IO, ⎕ML, etc.) when running a script. And who would have thought… my idea was met with wide approval!
 
@ngn oh interesting i might try and look for that sometime. Ive read the original paper but its been a while.
 
(I used to do most programming etc in a vm on my desktop but recently I have been doing everything in bed on my school laptop which is windows)
@Adám wait, so what will ⎕IO be then?
 
Whatever the interpreter default would be if you simply drop an interpreter onto a computer without installing or setting any envvars or registry settings etc.
 
5:22 PM
So 1 then?
 
Yes.
 
ngn
not really "righting wrongs" :)
 
Yes, it is. Any fixed ⎕IO is better than a variable one.
 
That would have been 158 less characters!
I think it should be whatever the default IO is, then it can still be 0
(well it should just be 0 but no one's going to agree to that :) )
 
So it's impossible to run a script with ⎕IO←0? Or is there some sort of escape?
 
5:24 PM
@rak1507 What is "whatever the default IO is"?
 
RGS
@Adám Default IO being 1 in scripting doesn't feel like it'll pull more users towards APL D:
 
@Marshall Very simple: your script can begin with ⎕IO←0
The only difference from what you have now is that you know what kind of environment you begin with, so you don't have to set any settings that need to have default values.
 
RGS
Can someone please remind me of who are the classes of users who prefer ⎕IO ← 1?
 
@Adám considering registry settings or whatever
 
@rak1507 That's exactly what I want to avoid.
 
ngn
5:25 PM
there was something like $DEFAULT_IO
 
@RGS agreed, does this mean people can do ⎕ML←3 as well? :(
 
@ngn the most recent/well known example I can think of is early whatsapp. they were able to build a platform to handle hundreds of millions of users with maybe a cpl dozen engineers. and part of that was because the technology they chose (erlang) acts as a very concise service definition language. they didnt need hundreds of engineers, because they chose an abstraction that was capable of modelling their problems very tersely.
 
@Adám Okay, you meant it ignores user interpreter settings or something. "Global states" is definitely not the right way to say that.
 
@Adám you sacrificed clarity by not wanting to say 1 :)
 
@rak1507 Of course. But the important thing is that you can write a script using ⎕IO←0 and ⎕ML←1 without having to set ⎕ML←1
 
5:26 PM
@Adám Why? Having a variable IO inside of dyalog (⎕IO) seems worse than having it variable with an envvar or something like that
@Adám :(
 
@dzaima No, I wanted to make a general statement that applies to all settings.
@rak1507 Why ":("?
 
@Adám just "default hardcoded to a default" would do then
 
@Adám Because I was hopeful that 'righting the wrongs' would include getting rid of ⎕IO, ⎕ML, etc
 
@Marshall Yeah, OK, maybe I could have phrased that better.
@rak1507 We're not looking to making existing code break.
 
@Adám is existing code using #! scripts? :)
 
5:28 PM
@dzaima OK, yes. It wasn't the terms we used when discussing it, so my bad for not rephrasing.
 
Existing code doesn't have to be run in scripts, they can keep their component files or punch cards or whatever archaic system they use
 
ngn
@dzaima i.e. all of my code and probably only it :)
 
RGS
@dzaima My thoughts exactly. Scripting is completely new!
 
@dzaima No, but you can call existing code from a #! script.
CMP: If you have the foo.apl ("#!" script) and next to it is a foo.dcfg (Dyalog config file), should the interpreter apply the settings from the config file, or should all settings have to be set from inside the script?
 
If someone ever writes a book about APL they should call it (1>-)∧(1000<-)
 
ngn
5:30 PM
@Adám then the person writing the script would already know what io the existing code uses
 
You can also run a script from "existing" code, i.e. from not-a-script.
 
ngn
@Adám but no existing code does that because scripts haven't been properly supported until now
 
RGS
@rak1507 How does this read?
 
Currently, if you call code from code the callee inherits the states from the caller, which is terrible.
 
ngn
@Adám it should use ⎕io←0, always :)
 
5:31 PM
@RGS so close yet so far
 
RGS
@rak1507 xD
 
@Adám you can do a lot of things from a #! script
@Adám would it make sense to have a shebang on the config file itself, and launch it?
 
@ngn My guess is that you don't think having two different defaults for #! and not-#! is an issue, because you would only use !# and you don't care about anyone but yourself and those that agree with you. Is this a correct guess?
 
i'm for ditching IO and ML in #! scripts
 
unrealated: some BQN fan art (yes, I am a fan)
 
ngn
5:34 PM
@Adám should i be feeling guilty now?
 
I'm not ngn but I think having two different defaults for #! and not-#! isn't an issue because I'd value ease of use for newer people over large legacy code bases being able to hack scripts into their system
 
@ngn Do you ever?
 
hahaha
 
ngn
hardly
 
@Wezl love it
 
5:35 PM
@dzaima Hm, that's an interesting idea. The config file is already launchable on Windows, and with dyalog CONFIG=path/file.dcfg everywhere, so in principle it'd be possible. Now sure how the interpreter would be able to tell what kind of file it is given.
 
adam+ngn conversations are one of the reasons why i check this place on a regular basis
 
haha
 
@Wezl an alien in a saucer would be a great bqn mascot imo
 
@rak1507 I think Dyalog's official policy is that existing customers are more important than new ones. It surely translates to having fewer (=no) new costumers, but also in happier (not necessarily more-paying) existing customers.
 
ngn
here's an idea: compile two interpreters, one with ⎕io frozen to 0 and the other to 1. set the price for ⎕io←1 like 5% higher. it's gonna phase out pretty quickly :)
 
5:37 PM
evil, i love it
 
@Adám Then dyalog is doomed to fail
 
@ngn :D
 
@rak1507 Indeed.
 
Which is bad!
 
Sure.
 
5:37 PM
well, everything awesome ends at one point or another
 
So don't do that
 
a bird in the hand...
 
@rak1507 Why not? It is a management decision. Not mine.
Question is, what is the purpose of Dyalog Ltd.
 
I wasn't meaning you specifically
 
the management is most probably responsible for the most horrible decisions possible
in terms of every corporation
 
5:38 PM
@rak1507 Well, I'm also concerned, long term. I have a family to feed.
 
i mean, dyalog has survived this long when every other apl company went oob, they must be doing something less wrong.
 
Well, when dyalog goes bankrupt, please make the code open source, I want to see marshalls optimisations
 
ngn
@cannadayr vendor lock-in :)
 
this probably won't happen because incorporated codebases yadda yadda
 
aren't marshall's optimizations already present in BQN tho
 
5:39 PM
@cannadayr That's not true.
 
@Razetime BQN currently has no actual optimized implementation
 
@Adám are their other APL companies? (like a company supporting an APL implementation not a company that uses apl)
 
oh well
 
@rak1507 Dyalog won't go bankrupt. What can happen is that the largest customer(s) buy out Dyalog and make Dyalog APL into an in-house PL.
@rak1507 We are considering doing that anyway.
 
@Wezl Yessss
 
5:41 PM
i'm struggling on projecteuler 18 quite a bit
 
ngn
@cannadayr microapl but they went oob and left everything to dyalog
 
How does the ASCII art thing in paste work?
 
@Marshall see JS tab
 
@Adám so Dyalog is adopting redhat model?
 
@Adám That would be really cool
 
5:41 PM
how are you going to make money if not via selling licenses
support?
 
@KamilaSzewczyk for 18 you can bruteforce it easily
 
i want to make a better (tm) solution
 
asking nicely would get at least a little
 
i can see some dynamic programming here, but i have no idea how do i even work on triangle matrices
 
@KamilaSzewczyk I've not promised anything, only said that we're considering it. One of the things that need sorting first is how we can continue to feed our families.
 
5:42 PM
@dzaima Oh, I see.
 
@KamilaSzewczyk I haven't done the version 2 one so I have no clue
 
@Adám i'm fairly sure i've seen companies that like
release their source code under GPL, which means that if you want to use it in a business application you have to buy a license
 
@KamilaSzewczyk Ah, that's interesting.
 
this way hobbyists have everything they'd possibly want to, dyalog can get free contributions and insight from the community, and companies which already have a heck ton of money can pay
 
@dzaima Self-hosted BQN has a fair number of optimizations (merge sort! bin sort!) but having a VM with no concept of mutable arrays can make it kind of hard to speed up much.
 
5:44 PM
@cannadayr Oh, yes. IBM and APL2000 are probably making orders of magnitude more money on their APL implementations than we are ― all basically without adding any features for decades. MicroAPL was so successful with their side business, that the otherwise very solid APLX became an unnecessary distraction.
 
@Adám ahh yea i forgot ibm still sells apl2 licenses. didn't know apl2000 are still kicking.
ehh its risky i wouldnt feel comfortable advising ppl to do something I have no financial risk associated with
 
@KamilaSzewczyk I think our management hasn't realised that OSS≠FOSS or for that sake FS.
 
ngn
@Marshall is that the thing that takes half a minute to load in my browser? :)
 
is microapl or apl2 in any way better than dyalog apl
in terms of performance and stuff
 
@ngn Which is slower though, my language or your browser?
 
ngn
5:47 PM
@Marshall my browser runs my language much faster than your language
 
@ngn my browser runs my language much faster than your browser
 
ngn
@Marshall then you should be writing a browser, not a language :)
 
@KamilaSzewczyk I don't think so. Dyalog has focused a lot on optimisations lately. OOP may be faster in APLX, but I've not made any comparisons.
 
ngn
@Marshall cool! btw, the only reason i'm not using it is i can't log in with google
 
5:50 PM
any1 remember sombrero? yea im back on FF hah
sry, xombrero
 
6:12 PM
here's an alternative ascii-art BQNian (?)
 
doesn't seem to show anything?
 
@Wezl Surely, that's not ASCII.
 
@Adám It's a custom font, click edit
 
Oh, I see.
 
why can't I see anything smh
 
ngn
6:15 PM
i can't see anything either
 
browser? screenshot?
 
Firefox 78.6.1esr Mac OS X 10.11.6
 
ngn
@Wezl this is more interesting (in the js console):
Uncaught SyntaxError: expected expression, got '='paste:214:16
 
oh yes, ||= was breaking in palemoon too, I'll fix
should work now after reloading
 
ngn
@Wezl it does :)
 
6:24 PM
I think I specifically looked that up to see if there was an ||=, but noone warned me about these inconsistencies
@Razetime maybe update to 79? :)
 
6:53 PM
@Adám Well, think about it this way: Would you really want to do business with a company that did not feel that the most important thing was to treat it's existing customers well?
The most important thing for current AND future customers of Dyalog is that Dyalog remains financially sound and is staffed by a competent team, able to maintain steady progress.
 
If I was ngn I'd say something about having a competent team, but I'm not, so I won't :)
 
ngn
:D
 
@MortenKromberg I would prefer not to, but apparently, modern tech companies often take a different stand on that.
 
The current management of Dyalog was put in place 15 years ago in a partly customer-financed management buy-in, specifically designed to avoid the risk of acquisition by a single client.
@Adám We are definitely not trying to follow the modern get-rich-quick, boom-or-bust or acquisition model.
 
Yup, and I stand by Dyalog Ltd's management. I try to explain the decisions and their reasons, and how it can make sense even if it can lead to the eventual demise of Dyalog APL.
@MortenKromberg Exactly my point. If Dyalog Ltd wanted to maximise profit, they'd stop doing APL (like MicroAPL with APLX) and task all the amazing brains with more profitable jobs.
I, for one, appreciate stability, even if it isn't the "hip" thing to do.
 
7:05 PM
There is little risk of the demise of Dyalog APL any time soon. Our customers run businesses that are based on Dyalog APL with a combined annual turnover in excess of a billion euros/dollars.
If by some misfortune or act of stupidity we manage to screw it up, I will do what I can to open source it before we put out the lights :-).
5
 
@rak1507 ^
Realistically speaking, long term, Dyalog APL will probably cease to be attractive to newcomers when eventually replaced by a superior APL language, whether developed by Dyalog Ltd or not. Not a reason to forgo learning Dyalog APL now, though, as most of the acquired skills will be applicable forever, and I know of no viable alternative today.
 
Well a billion is a big number, that's more than I thought it'd be!
 
ngn
@Adám that has already happened
 
@ngn What has?
 
But now it is dinner time. I'll be back, but probably not until tomorrow.
 
ngn
7:10 PM
@Adám "cease to be attractive to newcomers when eventually replaced by a superior APL language"
 
@MortenKromberg Enjoy your caviar and gold leaf ;)
 
@ngn Now sure what language you have in mind, but despite you making no secret of how superior you find (various versions of) K, and FOSS J being out there, and NumPy/Julia/MatLab/Mathematica/etc. existing, quite a steady stream of newcomers still seem to find it attractive enough to invest energy into learning. Source: this room's activity.
Oh, and those that do get into APL seem to prefer Dyalog's version, whether for direct usage to as inspiration for their own implementation.
 
ngn
@Adám that's because you're a master manipulator of public opinion ;)
 
@Adám Not for commercial use though
 
@ngn [citation needed]
 
ngn
7:15 PM
@Adám in the apl world dyalog is the only decent choice
@Adám i say it, jokingly. it's your job to make it look that way, isn't it? :)
 
@ngn No. I'm not here to manipulate, and I challenge you to find any examples of me being deceptive. Quite on the contrary, I think you'd find (if you approached the issue honestly) that I'm quite frank about things.
 
I second this
 
ngn
i have nothing new to say
 
@ngn So stop making unsubstantiated claims. Especially personal attacks. Though I am fairly tough-skinned, you are violating SE's terms of service.
 
ngn
what!
 
7:22 PM
lol
 
ngn
should we try to summon mods about this?
@Adám if you ever feel offended or personally attacked by me, please, do flag the message that you believe violates the ToS
 
@ngn They'd probably leave it up to me as room owner to kick-mute you if I see so fit. However, since it is me that you are baselessly attacking, I feel it'd be unfair to silence you with such drastic measures. I'd much prefer if you'd agree to be nice. Of course, I still want you to express your opinions about on-topic matters, but do refrain from personal attacks unless based on hard evidence.
 
ngn
@Adám i am here because i'm interested in array languages, not so much in you personally
though indeed an interesting person you are
 
I'm just here to watch the Adam and ngn show
 
same
it's hillarious everytime it happens
 
ngn
7:33 PM
@Adám example: if you say something like "tradfns are ok to use" and don't explain the problem with dynamic scoping, i will call you out on that. but that's because i care about good programming, not because i want to attack you!
 
so, uh, switching to some a bit on-topic manners, how viable would be writing parallel versions of some operators
like map or reduce or replicate
 
Good luck parallelizing / with the evaluation order
 
how does APL thread model work, are the threads real OS threads, or just "threads" like in erlang
 
@ngn any time you say that writing short code is good, do you mention the caviat that it might be very hard to have that work in teams of people, and it makes for steeper code learning?
 
@rak1507 well, that maybe not
but map definitely
 
7:35 PM
A new challenger approaches!
 
@ngn But it is true that for many users, trafns are fine.
 
ngn
@KamilaSzewczyk for map i think peach ("parallel each") would work best. reductions in the general case are hard to parallelize
 
@KamilaSzewczyk they're green threads, everything's single-core
 
god damn it man
hmm
 
there is at least one library for spawning more dyalog processes, having each compute something, and collecting the results back though
 
7:36 PM
so in the end, there's no way to parallelize stuff in dyalog apl without ugly hacks, and i-beams 1111/1112 are no-ops?
 
ngn
@dzaima that's a weak analogy. teams are about people. dynamic scoping is about coding.
 
@KamilaSzewczyk Dyalog has both OS threads and "green" threads.
 
@ngn that's not related imo
 
@KamilaSzewczyk Some would certainly be very doable,
 
@Adám is there a description on how to use OS threads
 
7:39 PM
@KamilaSzewczyk Yes.
 
http://help.dyalog.com/12.1/index.html?page=html%2Fnumber%20of%20threads%20ibeam.htm
http://help.dyalog.com/12.1/index.html?page=html%2Fibeam.htm
 
How would you parallelize reduce?
 
what do these two things work
 
@dzaima s/related/important/; afaict you're just making a differentiation just to have a valid point
 
@user have a gather phase and build a tree
it works, sometimes.
 
7:41 PM
@KamilaSzewczyk You mean for certain primitives? I can't think of how that would work for user-defined functions.
 
yes
we could parallelize reduce only for assocative primitives
 
ngn
@dzaima so?
 
@user well if the user defined functions are associative, it would work fine
 
we can parallelize map and each everytime (*)
* => assuming the user doesn't write shitcode and doesn't have mutable state and pass impure functions
 
Oh ok
 
7:42 PM
 
@ngn what "so"? are you admitting that you're making a differentiation just to have a valid point?
 
the font sort of renders bad for me
 
@KamilaSzewczyk that's a great image url
 
ngn
@dzaima i don't understand. is it bad to make a valid point through differentiation?
 
@rak1507 you can't disagree with it.
 
7:44 PM
Is there was some way to mark dfns and say - "This function has such and such properties, you can do these sorts of optimizations on it, here's the inverse, etc."
 
@KamilaSzewczyk lol
 
@Adám is this thing implemented already? is there some sort of a hint when it will be available?
 
@ngn it's wrong to make a point valid by making an unrelated differentiation. example: "APL is better than k because APL uses the character ' for string quoting instead of "."
 
@user no, that would be cool, and if I ever get round to making that APL dialect I've had in my head for a while you can do things like that like in haskell
 
@ngn when saying k is better than APL, do you always mention that k doesn't have proper full lexical scoping?
 
7:46 PM
@KamilaSzewczyk ⎕CY'isolate'
 
ngn
@dzaima we're drifting far off-topic.. this was only an example of why i care about code and not that much about attacking adam personally
 
@rak1507 Chicken and egg problem. As long as the glyphs are not there, people won't use the features, but we won't add the glyphs until we are sure about the design, i.e. after people have used the models.
 
ngn
@ngn a bit of bad phrasing at the end of the sentence, but you know what i mean..
 
@user It could be done when reducing an array of rank > 1
@ngn Problem is that others may not know what you mean, and mistakenly think that you mean what you write.
 
7:49 PM
@Adám Ah, fair enough. I always think in terms of 1D lists
 
@Adám The fact the main documentation is a 41 page pdf probably doesn't help much either
 
@rak1507 Pork sausages and kraut, perfect winter dinner :-)
 
ngn
@Adám fair enough. here it is again: i don't care about who you are, i'm not too interested in your persona, i'm not at all interested in attacking you personally. but if you say something stupid, i will contradict :)
@Adám happy? or should we start flagging?
 
@Adám Can't it be enabled under something like ⎕PR (I don't know if PR is a thing already, just an example)?
 
don't suggest adding more ⎕configs :((
 
7:52 PM
Or is it too substantial a change for that?
@rak1507 How about using the I beam? :)
 
@Adám is this thing implemented on processes?
and RPC?
 
@user That's just ⎕ with a different symbol
 
@rak1507 It was a joke.
 
Oh haha
 
how much would it harm my APL dialect if i didn't support tacit programming (yet)?
in normal apl i kind of did it intuitively, because i'm not exactly sure how it works, i just somehow managed to make it work
 
ngn
7:56 PM
@KamilaSzewczyk not much. apl got tacit forms from j, relatively recently.
 
@user We experimented with parallelising individual array operations, but the results were disappointing. There simply wasn't enough data parallelism in application code to make a big difference. Also, in a multi-core Intel machine, a single core reading and writing arguments and results of simple operations like + × / will quickly swamp the memory system and you won't actually get much speed-up by running them in parallel.
 
like, that:
      +--5
5
      (+--)5
10
so basically a fork and atop are only forks and atops, if they're in parens right?
and otherwise it's just usual old APL order
 
@user The models are implemented using .
 
ngn
@KamilaSzewczyk or in isolation: f←+--
 
@user To get real speed-ups you probably need a compiler which can fuse multiple operations together and run them on something like a GPU, which is what Aaron Hsu is working on with his co-dfns compiler.
 
7:58 PM
@user14901942 Hi vlad. If you want to participate, email adam@ with the domain of www.dyalog.com
 
is there a starter guide on using co-dfns?
i tried to, but i don't understand anything
 
@user Meanwhile in the interpreter, futures and isolates provide parallelism at a level of granularity that several clients have used to achieve typically 5x speedups on an 8-processor Intel machine.
 
@Adám Right, I totally knew that, I was just joking about joking.
@MortenKromberg That seems pretty promising, then
 

« first day (1461 days earlier)      last day (1198 days later) »