« first day (2249 days earlier)      last day (454 days later) » 

6:06 AM
man how yall onto phase 2 im still stuck on phase 1 :((
1:10 is kicking my ass rn lol
errr guys what if i use regex in phase 1... is that frowned upon
 
6:35 AM
┌─────────────┐
│thisisasample│
└─────────────┘
┌────┬─────────┐
│this│isasample│
└────┴─────────┘
┌────┬──┬───────┐
│this│is│asample│
└────┴──┴───────┘
┌────┬──┬─┬──────┐
│this│is│a│sample│
└────┴──┴─┴──────┘
bruuuuuuh this is what my code output for 1:10
for 1 f 'this is a sample' all the way to 4 f 'this is a sample'. and this is before i even add any code to check if i need to add more empty arrays
this is sad
ive just spent the past hour or so writing out and planning my solution and it flops like this lol
bruuuuuuuuuuuuuh my code is failing for empty string too i just realized
wtf am i supposed to do ahhhhhhhhhhhh
domain error?? length error??? my code is going haywire :\
 
7:13 AM
@AidenChow no need to be done with phase 1 before you start phase 2 :)
 
@RubenVerg well phase 2 looks waaay more complicated than phase 1... why would u do phase 2 before phase 1...
 
@AidenChow Sounds like you're deep in it! The pain is real. We all go through it. Stay strong!
 
7:32 AM
@B.Wilson yea well i think im scrapping my entire code lol
i have no idea whats going on with my close to 100 bytes code
so might as well restart from fresh
100 bytes is probably getting a bit on the long side anyways
 
@AidenChow Sounds solid to me! That's one of the things I am starting to like about APL; scrapping and rewriting is way more feasible than with traditional algol-likes or whatever.
Psychologically, it's easier to scrap 100 bytes than a few hundred lines.
 
how da hell u solve all the phase 1 problems in few hours... this 1:10 is gonna take me a few hours by itself
@B.Wilson lol true, using one character to do what would otherwise take multiple lines in other lang helps a lot
 
7:58 AM
@AidenChow A big part of it is doing exactly what you're doing, I'd say. Also, riffing of ideas of other good APL you've seen (e.g. APLCart, dfns workspace, etc).
 
APL Quest…
 
@Adám whats that??
 
oh interesting!
@B.Wilson whats dfns workspace
 
(do you see the pattern?)
 
8:02 AM
@Adám pattern for what?
@Adám cool!
 
When you want to know about something relating to APL, look it up on APL Wiki.
 
oh
thats the pattern u mean
 
@AidenChow I have the dfns topic index page in my bookmarks bar: dfns.dyalog.com/sindx.htm
It's the font of plenty of APL know-how.
 
It's almost like a lot of work has been put into making learning resources available :D (There is a bit of a meta-learning curve for figuring out where those resources are, though)
 
8:07 AM
Hence the Help>Getting Started menu item in the IDEs.
 
what ides?
 
Wait, how are you using APL?
 
on website
 
I highly recommend downloading Dyalog as the offline experience is much better than e.g. TryAPL.
 
oh u need admin to download that right?
 
8:10 AM
No.
 
Dyalog Ltd. would like you to register your copy of Dyalog APL so that we can communicate with you about enhancements and updates available for your licence.
We will not share your data and will only use it for our own internal purposes.

what i do here??
also how big is this
 
@AidenChow Either register, or don't :-)
 
why i need to register, what it do
 
@AidenChow Depends on OS, but the largest is on Windows; about 1 G.
 
wow 1 GB?
 
8:12 AM
Dyalog is not quite TikTok in the data gathering stakes.
 
> so that we can communicate with you about enhancements and updates available for your licence.
 
licence?
what licence???
 
hahha :)
 
Every piece of software you use, yes, even entirely free open source software, needs a licence.
 
what is that suppose to do??
 
8:13 AM
Often, and so too in Dyalog's case, there's a default licence you agree to.
 
also why is it so big
 
@AidenChow It grants you some things, and protects the software author from some things.
 
 
wait so why i need it
 
@AidenChow Mainly because it bundles all sorts of fanciful tools, e.g. an entire Chromium library.
 
8:14 AM
i register and get this licence... what happens??
@Adám whats chromium
that sounds like periodic table element lmfao
 
@AidenChow You download and install and use the interpreter, for fun and profit.
 
You don't NEED to register, it's voluntary. But it's a nice thing to do.
 
yea but im trying to understand this licence thing
 
Yes, the registration is really entirely for your own good. We don't gain anything from it.
 
errrrrrr but what the licence do for me??
 
8:16 AM
@AidenChow An HTML/JS/CSS rendering engine, which also powers things like the Chrome, Edge, and Opera browsers, in addition to many desktop applications, like VSCode and Discord.
 
A software license is a legal instrument (usually by way of contract law, with or without printed material) governing the use or redistribution of software. Under United States copyright law, all software is copyright protected, in both source code and object code forms, unless that software was developed by the United States Government, in which case it cannot be copyrighted. Authors of copyrighted software can donate their software to the public domain, in which case it is also not covered by copyright and, as a result, cannot be licensed. A typical software license grants the licensee, typically...
 
@AidenChow It gives you the right to use the software in question, under the stated conditions.
 
wait so if i dont register i dont have a licence??
waaat i need to put my address
 
Yes, you do. The registration is just so we can tell you about updates.
Feel free to not register.
 
r u sure this is safe, i dont want to be put my address on random stuff...
 
8:18 AM
Yes, I'm sure, but if you're uncomfortable, then simply don't register.
If you want an updated version, you can always just go back and re-download.
You get the exact same software, and the exact same license either way.
 
i dont see whats licence used for, what benefits to licences?
 
You MUST have a license to use software that others created.
 
so if i dont register i cant use it?
 
E.g. you already have a license to use the browser you use to read this.
@AidenChow Again, registration has nothing to do with licensing
 
what now
 
8:21 AM
Registration is optional, and for your benefit.
Licensing is required so you can use the software.
 
so what does register doing???
 
It adds you to our costumer relations database, and we'll contact you about updates.
 
so why the address??
 
Just an extra way to get in contact with you if all else fails.
Again, it sounds like this registration is making you nervous. Just skip it and check the download page from time to time to see if there have been any updates. Or don't :-)
 
what if i want to register but dont want to put address......
 
8:25 AM
I don't know, but I'll ask.
 
so registering is only to get updates??
 
Yes, and you can always get updates anyway. You just won't get automatic notifications.
 
wait but what if i uncheck the box that say i want to receive emails from dyalog... then i wont get any updates?? and the registration is useless???
 
Yes and no.
 
????
 
8:27 AM
You won't get notifications, but you'll still have access to the updating system.
So if you hear, by other means, that there's been an update, you can go to your MyDyalog page and download it.
 
huh, seems not worth to put my address just for updating system
 
Then, as I said, don't. It is just a free service we provide.
 
i would register without requirement to put address tbh
seems like a nice service
 
That's a fair position. I'll take it up internally.
Btw, by default, you get a license which grants you the right to use our software entirely free of charge, until you use it directly to generate revenue equal to or exceeding £5,000. At that point, you must pay 2% of said revenue, or get a different license.
 
ok good to know... as if im gonna make any money from coding apl lolol
 
8:31 AM
You can still use it indirectly without having to pay anything. Indirect usage includes things like using it as a fancy desktop calculator, but where it isn't part of an automated production system or something that gets automatically called when a customer uses your application or website.
 
@AidenChow you never know... it might land you a job one day.
 
Companies are making hundreds of millions on software they wrote in APL.
 
u severly overestimate my apl capabilities
 
Every APLer was a beginner once.
 
@Adám wait actually?? which ones? example?
 
8:32 AM
@AidenChow everybody starts from zero at some stage
 
SimCorp (Nasdaq Copenhagen: SIM) is a Danish company providing software and services to financial institutions such as asset managers, banks, national banks, pension funds, sovereign wealth funds and insurance companies worldwide.Their core product is the SimCorp Dimension, a front to back integrated investment management system used by more than 190 clients around the world. SimCorp was founded in 1971 and has its headquarters in Copenhagen and has offices in over 20 locations throughout Europe, Asia, and North America. SimCorp has over 1800 employees.Over the years, SimCorp has acquired several...
 
so this is how yall make ur money... i was wondering that for a while lol
 
SimCorp Dimension is just an APL program running in Dyalog.
 
@Adám I've been wondering about this. It seems mostly like an honor system at this point? So if I have some critical internal tool backed by Dyalog which doesn't have a bright-line cause and effect relationship to the bottom line, does Dyalog just rely on customers to make a judgement on when and how much to remit?
 
Yes.
 
8:40 AM
so is this the main way yall make money for these competitions and other stuff
 
We're not in this for the money. All shares are owned by customers and employees. We charge for the product so we can pay our employees to keep maintaining and developing it. We also try to spread APL, not to grow revenue, but because we all believe in its good for humanity.
The competition prizes are sponsored by customers.
 
ah i see... but still this is ur main form of revenue or no?
oh
cool!
 
@AidenChow What is?
 
@Adám I'm hoping some day Adám will start making yes-no answers directly with 1 and 0. :P
 
@Adám da thing u mention
5000 euro thing
 
8:42 AM
@Adám which file contains my RIDE settings? Re-mapped key bindings etc..?
 
@AidenChow oh, those default 2% licenses are nothing compared to the custom license agreements that big customers have negotiated.
 
Can't see anything in .dyalog...
 
@Adám they pay even more than the 2% license?? why they do that
 
@xpqz I don't know, but you can probably search for it or find it in the source.
 
@Adám what's wrong with (⊢~⌷∘' ')? I know there are other solutions like (' '~⍨⊢), but curious what I am missing
 
8:46 AM
@AidenChow I don't see their licenses, but they think that Dyalog is worth it.
 
ah, so its just out of generosity?
 
@Richard those are not at all the same. What's up with ?
@AidenChow No, they want to use Dyalog, so they need a license.
 
@Adám I used ⌷ because (⊢~' ') will not work
 
you need after ' '
 
@Adám oh so u guys reach out to them to upgrade their licence to smth else??
or like how does that work
 
8:49 AM
@Adám ok. But why is materialise not working? It just makes a funcion out of a constant, isn't it?
 
@AidenChow renew, not upgrade, usually
@Richard uh, no.
A function cannot make a function (usually). Need an operator for that.
 
@Adám ok so wait, why they want to pay more instead of just sticking with 2% ??
 
i didn't say they pay more
 
so they pay less???
 
they pay whatever they've negotiated.
 
8:52 AM
which is less most of the time right, cuz why would they want to pay more lol
 
right
although we do offer additional services, which they might want.
 
9:20 AM
This VCS has promise: https://github.com/martinvonz/jj/
Have been test-running for about a week. Its inline diffs give especially output for APL.
 
@B.Wilson especially good?
 
Lol. Yes.
 
screenshot?
 
Really nice that it's backing store is Just Git™, making gradual transition and seamless collaboration with git users nice.
@Adám Sure. Just a sec.
 
@Adám p.s. I wouldn't mind registering and actually I will do to honour your effort to the community. But I got the following error "There was a problem with the automatically generated recapture code from Google. Our apologies about that – please click here to try again"
Is that a problem on my side?
 
9:26 AM
not sure. i don't register so often...
 
nice
 
10:00 AM
@AidenChow sometimes it helps to move on when you're stuck and come back later - I often find something clicks later after I've changed my focus. The start of phase 2 bioinformatics isn't any more difficult than phase 1 in my opinion
 
 
4 hours later…
2:16 PM
@Adám Question about workflow
I always save my little programs and solutions on dropbox so I can adress them from differtent computers. I do this by ]create # 'directpry'. And then using )ed FILENAME to save my soluton.
Is this the best and easy way?
Second question, this only works with dfns and not with tacit programs. The editor warns me 'cannot fix object wothout a name'
 
2:35 PM
@Richard You probably mean )ed itemname and not filename, though the file gets named accordingly (with .aplf or similar). Anyway, yes, that sounds reasonable. We really should add the ability to save tacit things, but for now you'll have to either contain them in a scripted namespace, or wrap them in a tradfn. github.com/abrudz/Lazy makes this easy.
Ooh, this reminds me that I should update that to work smoother with Link. For now, you have to do ]add myfn after ]lazy myfn←∊⍴~↑
Done.
 
wrapping like {⍺(...)⍵} ?
I'll also try Lazy. Do no fully inderstand it but I will try it out
 
2:55 PM
@AidenChow after I had my original solution I tried this way and find it would take much more characters and hard to handle corner cases this way.
Albeit my working solution is still a bit long
 
Welcome to APL Quest 2018-10! Today's quest is Anagrammatically Correct:
> Write an APL expression that takes left and right arguments of character scalars or vectors returns a 1 if the arguments are anagrams of one another, 0 otherwise. You may assume that both arguments are both either upper-case or lower-case.
We have to ignore spaces, but no other punctuation needs handling.
 
(≡⍥(⊂∘⍋⌷⊢))⍥(' '~⍨⊢)
 
Ooh, a double-over.
 
to please you
 
⍥‿⍥
@Richard Feedback: ≡⍥(⊂∘⍋⌷⊢)⍥(~∘' ')
If not for pleasing me, you could combine the overs to ≡⍥(' '~⍨⊂∘⍋⌷⊢) or ≡⍥(~∘' '⊂∘⍋⌷⊢)
 
3:03 PM
:)
 
This approach (albeit with the optimised {⍵[⍋⍵]}) seems to be fastest, but there are other interesting ways to solve the problem.
 
@Adám This is exactly what I had. I had ≡⍥((⊂⍤⍋⌷⊢)~∘' ') first, then realized f⍥(g⍤h) is the same as f⍥g⍥h
 
I had one using ⌸ but was too cumbersome
 
@Adám Uh oh, ≡⍥(~∘' '⊂∘⍋⌷⊢) doesn't work — can anyone spot why?
@rabbitgrowth I should start writing things that has the "middle" function named _ so I get f⍥_⍥h
@Richard I did that too: {⍺≡⍥(≢⍤⊢⌸' '~⍨⍺,⍵,⊢)⍵}
 
doesnt handle single letter / character
 
3:06 PM
Well spotted.
 
maybe add a ravel
 
Sure, but probably better to remove spaces before sort anyway.
Nobody went for an outer product?
 
ah yes nice. And then each column and row shoudl have exactly one 1 ('xyz' ∘.= 'zxy')
 
That only works if there are no duplicates.
{⍺≡⍥(+/(' '~⍨⍺,⍵)∘.=,)⍵}
 
no not true what I am saying
 
3:13 PM
We have to have the ravel there fore scalars.
If we had dyadic progressive set functions, they could be used too.
 
ah that ⍺,⍵,⊢ trick is clever
 
That's basically from the core of dyadic progressives.
 
I was wondering how to do it with but without
 
(∧/DPE,DPE⍨)⍥(~∘' ') where DPE is Dyadic Progressive Epsilon.
 
???
 
3:19 PM
APLcart it! :-)
Progressive set functions are ⍳∊~ but without replacement.
So in order for 10 10 DPE 10 11 is 1 0
Now we just need to check if each argument can be built from the elements of the other.
We could also do (DPT≡DPT⍨)⍥(~∘' ') where DPT is Dyadic Progressive Tilde.
It will only give 1 if both sides of the fork give the empty vector, because if there are additional elements, they must differ, or would have been taken out by the ~
Maybe we should have an APL Wiki article on progressive set functions.
 
thanks!
 
I suppose we've exhausted this simple problem.
That means we've finished all of 2018's tasks. See you next week for 2019-1: Chunky Monkey!
 
came up with this abomination: ({0=≢⍺:0=≢⍵ ⋄ (1↓⍺)∇⍵/⍨≤\⍵≠⊃⍺}∧≡⍥≢)⍥(~∘' ')
 
Oof, what is that‽ Recursive too?
 
(sorry)
 
3:31 PM
Ah, I see. That's actually pretty clever, and could be (made) faster on large arguments.
 
@Adám Late to the party, but... ≡⍥(' '~⍨⊂∘⍋∘,⌷,). Mildly ugliness.
 
@Adám yeah now that you mention it, the ⍺,⍵,⊢ trick does remind me of that dyadic progressive iota video
I should rewatch it (again)
 
@B.Wilson Sure, or factor out the ravel: ≡⍥(' '~⍨⊂∘⍋⌷⊢)⍥,
 
@Adám Ah. That feels much better.
 
I ❤️
 
3:35 PM
@LdBeth ya but i dont see any other way... :(((
 
@rabbitgrowth T-shirt?
 
errrrmm what does even do...
looks like atop but bigger
 
ooh, APL merch?
 
@AidenChow Yeah. Look it up wherever. If you managed to install Dyalog, then type it and press F1. Otherwise, on TryAPL, do ]help ⍥
@rabbitgrowth apl.wiki/merch
 
@AidenChow aplwiki.com/wiki/Function_composition explains it nicely
 
3:37 PM
@AidenChow easiest way to think about it is "preprocess (both) arguments"
 
so it look like and do same thing for one argument but different for two??
 
Yes. Hence the similar symbols.
 
In the real world, is ever used monadically?
 
It is useful for ambivalent functions.
 
Wonder what people will say if I walk around wearing this T shirt aplwiki.com/wiki/File:Function_compositions.png
 
3:43 PM
@rabbitgrowth E.g. ,⍥⊂ is useful with both valences, so much so that it is a primitive in BQN.
@Richard Some APLers may start a conversations. Maybe some non-APLers will ask what in the world that is.
 
is also the proposed symbol for Depth, right? Or was it another circle diaeresis-like combo?
 
Yes, correct. By analogy with for Atop/Rank.
 
what? depth??
what that do
 
@AidenChow hint, it is almost in the APLCart
 
3:48 PM
@LdBeth bruuh ok what now
 
Hahahaha. I need this: bonfire.com/quad-io-gets-zeroio0
 
@B.Wilson what that code even do??
 
search "break" or "split" or "⊂"
 
@Adám I'm not sure I understand. If you were using it monadically, why wouldn't you just write ,∘⊂ or ,⍤⊂ instead?
 
@rabbitgrowth i think hes saying that is both one arg and two arg so deal with both
 
3:51 PM
@AidenChow Sets Index Origin to the Correct™ (fight me) value.
 
if it can be used both monadic and dyadic, it is more consistent, so that can be saved as idiom
 
mlochbaum.github.io/BQN/doc/fromDyalog.html does say that is equivalent to ,⍥⊂ both monadically and dyadically...
 
@rabbitgrowth Ooo... That's nice.
Nest Max? Nest Ceiling? I don't get it: redbubble.com/shop/ap/131836275
 
@B.Wilson it’s a shopping cart I assume.
 
4:06 PM
@Adám Oh! I'm so deep in that the visual pun went completely whoosh on me. I like it!
 
 
2 hours later…
6:19 PM
@B.Wilson waiting for a dialect where you can do ⎕io←4÷3, then that will be the Correct™ value.
 
7:13 PM
there is no primitve for cdr, right? it's just 1∘↓?
 
8:00 PM
Given it's not very APLy, no
Sorry, that felt a bit accusative. No, all doesn't have cdr as primitive as tries to get you to deal with all the data in one large hit
@RubenVerg maybe for April fools?
 
@Silas makes sense ig
 

« first day (2249 days earlier)      last day (454 days later) »