« first day (1432 days earlier)      last day (1209 days later) » 
00:00 - 13:0013:00 - 00:00

1:03 PM
@rak1507 I think you've misread the clue. It says "The indices of the elements in the vector R containing integers between 1 and 9"
 
Yeah, I'm not quite sure what that means
Oh
Right ok thanks
⍸R∊⍳9 :(
 
Of course, today that's a super short solution, but the crosswords sometimes use unoptimised code to fit in. (And wasn't invented yet.)
 
Yeah
 
@Adám thanks I was trying to use ⍸ everywhere
 
@Razetime That one is a bit mathematical. Also, note that while banks may list a 4% interest rate as 0.04 it actually means 1.04.
 
ah interesting
I'm stumped on the "Throw it all away!"
and "The available programs"
those are so evil
 
I thought throw it all away might be )CLEAR
 
they're like normal crossword clues
 
but I'm not convinced
 
1:32 PM
it fits too well to not be correct
 
Particularly because then there'd be an E in 15 across
 
it's either )CLEAR or ⎕CLEAR
 
Yeah, but then the E in 15 across confuses me
there isn't a ⎕E so I have no idea what it could be
 
12 down also messes with that
 
Huh, 15 across looks all wrong.
Let me see if I can find the right clue for that.
@rak1507 @Razetime Nah, I can't find it online. I may have only had it in actual print at the office. Meanwhile, let me make up a clue for you for 15→: Indicate where the integer ratio between M and N equals ME.
 
1:46 PM
Thanks
 
cool
now there's only 2 and 1 left
APLcart is a boon here lol
 
14 across ending in T is odd as well
 
@rak1507 Why do you think it should end with a T?
 
⋄1 1⍉3 4 ⍴'MY 32NDBOLT'
 
@Razetime
┌→──┐
│MNT│
└───┘
 
1:48 PM
^
 
I don't follow.
 
⋄1 1⍉3 4 ⍴'MY 32ND BOLT' may be the correct clue
 
@Razetime
┌→──┐
│MNL│
└───┘
 
@Adám that snippet is the clue
 
Ah, HTML is to blame: ⋄ 1 1⍉3 4 ⍴'MY 32NDBOLT'
 
1:50 PM
@Adám
┌→──┐
│M2L│
└───┘
 
lmaooo
 
I'll update the CSS to include white-space:pre
 
What does annualizing monthly totals even mean?
I think it's just MV÷12
 
MV×12 you mean
 
Yeah, ^: Given a monthly amount, compute the corresponding annual amount.
 
1:53 PM
yeah × not ÷ oops
 
Hang on, comparing to solution.
 
ah yeah it's on github
I'll see it
 
It is in your browser :-)
@Razetime 1↓ is wrong.
 
hmm why
oh ok
but how would it work even
 
2:00 PM
Hm, the clue doesn't fit with the solution :-(
 
It has to be A[⍋A]≡A or something
@Adám bruh
lemme see
 
The risk of typos when hand-typing from a paper is very high.
 
lol it uses ⌿ so much for some reason
anyway this was fun
 
yeah I didn't finish it but it was still fun
 
@Razetime Because it is a stand-in for / and .
 
2:02 PM
aha
 
Sorry about all the trouble, guys.
 
if I made one and supplied clues would there be a possibility of uploading it?
no problem!
 
@rak1507 Of course, it is just a GitHub repo you can PR to. You'd probably want to complete the almost done ones first, though.
 
Oh yeah, true, might do that at some point when I'm out of other options for procrastinating my prelim revision
 
And rather than making up your own, it'd be much easier to port the originals.
And as you can see, I really need people to proof-read.
The format should be pretty self-explanatory, with each puzzle just being a very simple index.html file in a dir, and all the complicated stuff being in JS.
 
2:06 PM
It'd be good to have an automatic generator
 
That'd be quite impossible to create.
Unless you drew from an existing pool of expressions and clues. Hm, APLcart…
 
no I mean
take two inputs
 
?
 
the grid(with numbers) and the clues
and then generate html for that instead of manually having to do it
 
I don't get it. Isn't that exactly how the pages work?
@Razetime You don't need the actual numbers, only indication of which cells are numbered, which are empty and which are black. The numbers are in ravel order.
 
2:10 PM
huh.
 
This first puzzle could conveniently be represented as:
neenenennnbn
ebbebebneene
nenenenbneee
ebebneeneeeb
neeebneebnee
ebebneeebneb
nnebebnenebn
neeeeeebneee
bnebebebebbe
neenenbnenne
neeeeenbneee
nebbebneebeb
And the answer could conveniently be represented as another matrix, just of the proper characters, with spaces for the black cells, and with special characters for multi-choice cells.
 
sounds like something like that could be an interesting problem solving competition phase 2 question
 
What, constructing a grid?
 
given questions, answers, and a grid size, construct the crossword puzzle
 
So basically write my JS in APL?
 
2:15 PM
No, actually generate the crossword grid layout as well
 
So one would have to figure out a way to make them all fit in? Sounds NPy.
 
Yeah maybe, but there are websites that do it so it can't be too bad...
 
 
2 hours later…
4:33 PM
I'm building a simple automation tool that will let me script a Dyalog APL session and run it as if I were typing. ]demo won'd do because I want to script )ED, other system commands and using the Tracer.

The core is working but I need to translate APL characters to prefix-char format as I have to send raw keystrokes. Has anyone got a text file that maps APL chrs to their prefixed representation (so ⍴ maps to r, for instance)?

I can extract stuff from a web page if necesary but a text file would be super if one exists.
 
D.bq and D.bqbqc from RIDE console:
https://dzaima.github.io/paste/#0lVppk9y2Ef3uX2FtEjmR13buU8fGue/7tBwGQ2JmoCUJLgjuzuoqx3LWulaJZ0o@PtiRtauytHaVy6cUOYqr5H@SX5IGhpLRTTYmmS94xfcGaFyNRpMnlj679PWl/5x9bWl56XOA7l4H8HkH3gTwBQAHofyi05zbBfQlQIeg/LJ/cg3QVwAdhvKr/skVQF/zNbqKHgT0IJR/dk8uPAPoEUAfvQDgkAM3AawBOALlhtNsvwdI@v@fB2T8s3cBWUCnodx0T7aeA9R4NAOkvOodQNqhFy4AqgAdgPIJr/o7oCc9mgI6etTB81cBCv/X24Bqhy6eBZR55JofAkqgHHmDngU09mgL0DGPXgS0CughKHP35NJlQN/wtV4C9JBH7tlx3@bTgCYenQGU@jpuAFr3aA/QwLNuYEuP3KAXgE5CuexrexnKRz16CtBj3toPAZ32yPVln0fvA1rxutcBfcIj1/1PeuQG6VNedwfQn/yzc4D2@1afB3TAP/sHoE979Bagz3j0NqAE0D4oH/Z1
 
ngn
ride scrapes the defaults from here
 
5:00 PM
Thanks!
 
 
4 hours later…
8:40 PM
Hey, was a recording of the centenary event ever posted?
 
I doubt it. BAA tends to take a long time between recording and releasing.
E.g. they've released their webinar from May 7, but not yet the one from May 21.
 
how hard is it to upload a youtube video really....
 
It is entirely volunteer work. You could offer your assistance.
 
If they would let me I'd be happy to try doing some of that stuff
 
You could contact them or show up for their annual organisational meeting.
 
8:47 PM
Do you know when the next meeting is?
 
They are usually in the late spring or early summer.
 
Alright thanks
 
9:02 PM
Hi folks! My query engine saga continues :) So far my prototype eats 250MB of RAM (which I assume is mostly ⎕MAP'ed data that I precalculated earlier) and the core calculation for a query (not including JSON parsing) takes 120 us. My colleagues' code eats 9GB of RAM (they do precalculations but perhaps don't store the bool matrix as efficiently) and the core calculation takes 0.2s (!!!). So, while my code still has some aspects hardcoded, it has ~90% of the full functionality needed. Great!
I'm now looking at JSONServer. All the examples initialize data in each request, it seems. Is it possible to pre-initialize data (⎕MAP from files for example) once and then let the request handlers just use those variables?
 
Wow, that's crazy, 250MB vs 9GB and 120 us vs 200000 us!
 
Yeah I'd like to time it including all the HTTP and JSON overhead in both tools, but it's pretty incredible so far!
 
What language do your colleagues use?
 
Their prototype is written in D
(The stuff that's currently in production and that we'd like to replace is Go + some horrible hack on top of ElasticSearch)
In addition to the JSONServer question above, does anybody know of a way to )load dfns without nuking everything else that was in the current namespace? (This might be my misunderstanding of how namespaces etc. work in Dyalog APL...)
 
9:25 PM
@MartinJaniczek )copy dfns (or ⎕CY'dfns', or 'big' 'rational'⎕CY'dfns' to copy only a few functions)
or {(⍎⍵⎕NS⍬).⎕CY ⍵}'dfns' (from APLcart) to create a namespace object so you could do dfns.big etc
 
@dzaima Thanks, I think 'cmpx'⎕CY'dfns' is all I need currently. BTW I've just (through searching this chatroom for JSONServer) found your Android IDE. Just installed it - thanks for making it! :)
 
@MartinJaniczek (fwiw, my local unfinished complete refactor of that app is moving away from JSONServer to raw sockets & the proper RIDE protocol :D)
@dzaima (i should really finish things.. that happened 17 days ago and i've done nothing since)
 
9:42 PM
BTW how do you reply to your own messages here? I don't get the buttons to do that on my own messages...
 
@MartinJaniczek this
 
Yay! I assume I need to tweak the user ID inside the script?
 
@MartinJaniczek no, that's unrelated - it's for the Dyalog bot and IRC replies
@dzaima (a reply is just :message-id-of-target, so you can even manually reply to yourself by just copying the ID from the message transcript link (which is what i used to do for months if not years until i finally wrote the userscript))
 
What's the difference between using one of those things and ⎕FIX?
 
@MartinJaniczek eyy it works
 
9:45 PM
:D
 
I don't quite get what ⎕FIX does but Aaron Hsu used it in a talk I just watched
 
I think ⎕FIX is some APL jargon for what you'd call "compile" in other languages
 
@rak1507 ⎕CY/)load/)copy work with namespace files (.dws); ⎕FIX deals with special source code files or something?
 
dfns←⎕FIX ':Namespace' '⎕CY ''dfns''' ':EndNamespace' seems to work, interesting
 
10:03 PM
@MartinJaniczek Hm there seems to be InitializeFn in the JSONServer fn that I can provide. That might work
 
A question: in most APLs, are boolean arrays implemented as actual arrays of bits? Thus requiring multiple machine ops to assign a single bit value?
 
@phantomics depends on what "most" includes. Dyalog certainly does, dzaima/APL does, (iirc even APL\360 did)
 
@phantomics It's common, but I'm not sure whether "most" APLs do it. See my APL Wiki writings on boolean optimization.
 
10:30 PM
@MartinJaniczek Talking to myself: that InitializeFn indeed did exactly what I needed. Now I just need to make JSONServer give me JSON matrix instead of namespace 🙃
 
10:41 PM
@dzaima I'm looking at the corner cases in iteration modifiers now. In dzaima/BQN, ≡˘ 2 returns 0 and ≡˘ <2 returns 1, as a plain number in both cases. My implementation has both enclosed. That seems obviously better for ≡˘ <2 although I'm not sure about the case with an atomic argument. Any thoughts?
 
@Marshall personally i'd have ˘ error on rank 0 args, so whatever logic i have for it is worthless for comparison
 
I've also noticed that in my specification and implementation, ⚇¯1 is slightly different from ¨ because it doesn't map when all arguments are atoms, so that 3-¨2 is <1 but 3 -⚇¯1 2 is just 1. I think that's okay but I'm kind of wondering if I should change Each to match Depth as the non-enclosed version seems a little more useful.
@dzaima Even if one argument has rank >0 and the other has rank 0? That case is pretty useful, and I think if I allow that it only makes sense to open it up generally.
 
@Marshall what that's really asking for is a ˘-left and ˘-right, which is unsustainable, so i guess allowing rank 0 args is the only option to allow that
 
@dzaima That's probably accurate.
 
@dzaima (my fix is rather simplistic and lazy)
 
10:53 PM
Ah, is returning a boxed result so ˘ is just inconsistent here. Except that ≡⎉¯1 <2 is <1 while my version gives <0!
So yours converts atoms to arrays but mine just treats them as having empty shape, so it always passes them unchanged to the operand function.
Fairly sure I chose that one deliberately; I'll make sure to specify/test how Rank should handle atoms.
 
Timings of my query engine: with JSONServer, parsing of JSON into matrix etc., it takes 8-30ms per request. Memory usage unchanged. Yay!
I might not have expressed this here before, but ... APL is awesome :) (gasp!)
 
Nice, is there a possibility you'll use it in production replacing the Go thing?
 
I'll let the backend guys react to it. It would need that last 10% to be fully generic and handle all requests, but ... so far it seems better than anything else we've tried. I'd need to talk to some higher-ups about buying a Dyalog license, of course. That and relative obscurity/unfamiliarity of APL is probably the biggest downside I expect to hear. But, I've learned APL enough to write this in a week or two of evenings.
So I'm hopeful, and excited by the results, but it might still be a (politics) battle :)
 
Keep us updated, seems like an interesting project
 
@MartinJaniczek I believe there is a setting for performing something once at server start. The method I used for TryAPL to do things once is to let each callback check if initialised, and initialise if not done yet, i.e. upon first callback only.
 
11:09 PM
@Adám setting srv.InitializeFn←'Init' and then having Source/Init.dyalog with whatever I need has worked for me. And it runs that code before any request.
All assignments made in that init fn are visible from the request handler functions too, which is ideal for me
 
@MartinJaniczek Awesome. That was what I had in mind, I just didn't know the name offhand. Let us know if you need any help with JSONServer/Jarvis. I can get its main developer in here if you need anything, and I'm sure he'll be happy to add minor features too, should you need it. This all really sounds promising.
 
@Adám I have had the need to change this line a little to give me ⎕JSON⍠'M' instead. Perhaps that could be somehow configurable.
 
@MartinJaniczek Yeah, I thought that wasn't a built-in option. But obviously, it could be made so. In fact, one should probably be able to give any of the options to ⎕JSON to tweak functionality. E.g. to make it use JSON5 or return non-compact JSON. I'll pass your request forward. Also, have you tried using Jarvis? It is JSONServer's successor and is actively maintained.
 
@Adám I have looked at Jarvis a little bit, but it seemed to do much more than I wanted (REST stuff etc.). But if there is some kind of streamlined mode in which I can use it like JSONServer, then I'm more than willing to use that (if it's maintained as you say)
Hm, reading github.com/Dyalog/Jarvis/wiki#a-tale-of-two-paradigms it probably has that streamlined JSONServer mode
 
@MartinJaniczek I think JSONServer mode is the default, so something like:
srv←⎕NEW Jarvis
srv.InitializeFn←'Init'
srv.CodeLocation←…
srv.IncludeFns←…
srv.Start
 
11:25 PM
That's great, I'll try it tomorrow. Assume the quad-JSON variant configuration request concerns Jarvis then :)
 
Yeah, I think the migration path from JSONServer to Jarvis is that easy, so it'd be Jarvis that gets the enhancement.
 
@dzaima Ok, is dzaima/APL parallelized? If so did you write custom bit-shifting implementations of array operations like ↑ and ⌽ to handle changing boolean arrays in parallel? I'm looking at options for parallelizing boolean array ops in April.
 
@phantomics Probably barely worth it. Real gains would be from being able to tell the system that "this ¨ can be done in parallel".
 
@phantomics no parallelization (very complicated, not much benefit)
 
@phantomics Most of the implementation's here, I think.
 
11:30 PM
@phantomics in ^ there's this function which is a bit-level equivalent of a memcpy, and everything basically uses that
so i'd probably suggest making a general-use bit-memcpy (which you can parallelize if you really really want to) and ↑↓⌽⍴ just call that 1 or 2 times
for dzaima/BQN i made a generic temporary mutable array thing for memcpy-y things that keeps things in optimal types
(to note is that dzaima/APL doesn't refcount so i don't have to deal with reusing arrays. bad for performance, good for being simpler to implement)
 
11:47 PM
@dzaima I see, thanks, I've gained substantially from parallelizing regular array ops but I could just do boolean operations in serial. Doing ⌽ in parallel nets a 10x speed boost for me.
 
@phantomics dyadic or monadic ? (my monadic falls back to casting up do a double array, and it would need some special implementation to get it done bitwise)
 
00:00 - 13:0013:00 - 00:00

« first day (1432 days earlier)      last day (1209 days later) »