« first day (513 days earlier)      last day (2134 days later) » 

3:02 AM
Is it a breach of Dyalog's non-commericial/personal license to write a chess bot in Dyalog and have it play on lichess?
 
Is it not a breach oh lichess' terms of use?
 
@H.PWiz nah, you can play against bots, or play bots against bots (bot users are clearly marked as such). They have an API for it. It's against their terms of use to have a bot assisting you when you play as a human
 
 
3 hours later…
5:40 AM
@Probie Why would it be? You can't make any money that way, can you?
 
 
3 hours later…
8:41 AM
@Adám two potential issues. 1 - It'd be running on my desktop at home and not on my laptop, so I'd have it installed on two devices. 2 (and this is the bigger issue) - I might be indirectly paid to work on it (my work has "team days" where instead of doing work we're meant to be social, so a few us are just writing chess bots)
 
@Probie 3.2 You may install each version of the software on more than one computer provided that it is used on one computer at a time.
@Probie Regarding 2: I've asked about that before. There's no problem in using Dyalog APL as a utility for your work, e.g. as a desktop calculator for your company's finances. What is restricted is using it to create money-making or paid-for software for others to use.
 
9:04 AM
@Probie I just asked. As stated, you may have it installed both places, but if you leave it running at home and while you want to use it elsewhere, just apply for an additional license. :-)
 
 
2 hours later…
10:35 AM
@Adám is there a way to stream JSON objects from a http connection in Dyalog APL, or am I better off just writing a wrapper in another language and sending the JSON objects over stdin as they come in? (I'm not up to this yet, but by the time I am, the sun will have set where you are and I don't know who else I could ask)
 
@Probie Not my expertise, but hang on a min, I'll ask.
 
@Adám lichess uses a regular http request for a bot to receive incoming actions (and sends a newline every few seconds to keep the connection alive if the bot has no incoming actions). My coworker just wrote a simple node program around his bot (in rust) and I could do the same, but it'd be pretty neat to have the whole thing in APL
 
@Probie Dyalog APL can definitely be a web server.
@Probie I'm chatting with a colleague. So while waiting for him to type, did you get that second license?
 
@Adám Not yet, I figure it's less work to just connect RIDE on my laptop to Dyalog on my desktop
 
@Probie That'll work. Btw, your desktop APL can serve RIDE to a browser too.
 
10:47 AM
@Adám it can, but then I can't launch emacs to edit (or at least I assume so - I haven't actually tried). If my bot in APL compares with my Haskell one (I expect it to be slower, but hopefully not much slower), I'll apply for a second license so I can keep it running without having to connect my laptop to my desktop, but if it's a lot slower I won't keep it running (but it'll still have been worthwhile pedagogical reasons)
 
@Probie What exactly do you mean by "stream"? It is easy to make a server that receives a request and sends JSON back. It is also easy to make a client that sends requests with JSON in them. Are you sure you don't need websockets?
 
@Adám I wish it had websockets - it's a regular http request which doesn't terminate, it just sends JSON objects whenever an event happens (and newlines every few seconds to keep the connection open)
@Adám I think lichess is put together by people who are a lot better at chess than they are at programming (streaming over HTTP/1.1 is a terrible idea, but they do it)
 
@Probie See, they need APL. APL is supposed to be easy so that domain experts can get their stuff done without having to worry about technical computer details.
@Probie Just to clarify: Who's the server and who's the client of you and lichess?
 
@Adám The only thing I'm a domain expert in is theorem proving and APL doesn't suit that (beyond SAT) too well. But after Coq (which isn't really a programming language) and Haskell (which requires learning a lot of strange, non-obvious things) APL is my favourite language right now. It's no worse than other languages for some problems and so much better for the rest.
 
@Probie Try ]load HttpCommand and then do HttpCommand.Describe and HttpCommand.Documentation.
 
11:02 AM
@Adám The server is the lichess server - my program is just a client
The issue is that I need the JSON objects before the request is "complete" (since it never completes)
 
@Probie So the entire game (well, half of the game; the other player's side) is one huge (potentially hours long) request?
 
@Adám in correspondence mode it might even be days (although my bot doesn't need to handle that)
 
!
 
@Adám assume the maximum time for a complete response is no more than two hours, but I need to respond during that
 
11:21 AM
@Probie Did the HttpCommand look like something you can use? If not, then I'll ask Brian to enter the chat here (he has a SE chat account) and help you further. He's in New York, so he'll be around later too…
 
@Adám I'm about to go to bed. If I can't get it working, I'll just wait until Tuesday morning (Monday afternoon your time) but I feel like you shouldn't waste too much time on me - as fun as I'm finding APL I'm unlikely to make Dyalog any money
 
@Probie Spreading APL with success stories ensures our future!
 
@Adám I'm writing a chess bot and an SMT solver in Dyalog APL. They'll be less success stories and more "look how close I could get to state of the art with so few lines of code" which might be of interest
 
@Probie Absolutely. We'd love to see what you come up with.
 
12:03 PM
⍞←10⊤÷7
 
@Sherlock9 0.1428571429
 
⍞←0 10⊤÷7
 
@Sherlock9 0 0.1428571429
 
⍞←10⊥÷7
 
@Sherlock9 0.1428571429
 
12:07 PM
So I can't encode or decode floats
Fair enough
⍞←0 24 60 60⊥1 0 0 0
 
@Sherlock9 86400
 
@Sherlock9 But you could always adjust the base to get as many separate "decimals" as you want.
@Sherlock9 I don;t mind you using the bot as much as you wish, but the experience of APL in an actual interactive session is just so much richer. Have you applied for a free personal license yet?
 
12:27 PM
Oh. I didn't know that was a thing, honestly
I tend to assume a new programming language I encounter is free and open source by default
 
@Sherlock9 Oh. Well: dyalog.com/download-zone.htm
@Sherlock9 Good assumption. But production quality mathematical programming languages tend to be commercial: APL, K, Mathematica, MATLAB…
 
@Sherlock9 Apart from games, Dyalog APL is the only non-free software I've used since 2008. It's completely worthwhile grabbing a copy
 
@Probie Well, it is free for all but the most commercial uses. It isn't open source though.
 
@Adám When I say free. I don't mean free as in beer, I mean free as in freedom (I think Stallman prefers "Libre" these days).
 
 
1 hour later…
ngn
1:36 PM
@Probie J is GPL-licensed
 
@ngn I like J, be it doesn't have dfns
 
@Probie It does, they just have a somewhat clumsy syntax.
 
@Adám does it?
 
@Probie :
 
what
@Probie you taught me about 1: '!x'
you know about :
 
2:05 PM
They are easily inlined, if it’s about that
 
@Probie @Probie I took a quick look at Lichess' API documentation. Everything is simple HTTP GET and POST requests. One could probably use HttpCommand (in Dyalog v16.0 and later do ]load HttpCommand to load it) to interact with the chess bot. Then it's a matter of writing a client that uses HttpCommand. The client would react to the various responses from the chess bot. HttpCommand.Documentation will display the docn.
 
 
2 hours later…
4:35 PM
@Probie Have a look at Notation as a Tool of Thought, sections 1.5 and 4; Rank and Friends, sections 8-13; Tests, Derivations, and Proofs, section 3. How would Coq or Haskell do on these theorems/problems?
 
 
1 hour later…
5:55 PM
I have a great deal of tabs in this browser, half of which are APL-related, and I really should start closing them
But all the links in the last message look cool :S
 
@Sherlock9 How about making an APL bookmarks' folder? I have that.
@Sherlock9 Btw, the chat bot's user profile has a lot of good links too.
 
Oh my
 

« first day (513 days earlier)      last day (2134 days later) »