freenode/#lisp - IRC Chatlog
Search
9:48:21
nydel
pardon me, i am having trouble evaluating this form and i am unable to see anything wrong with it: https://pad.disroot.org/p/commonlispSBCLissue#
9:51:39
jackdaniel
btw, this tool (disroot.pads) you have linked is ridiculusly slow to load given you wanted to share a text of small length
9:54:12
nydel
yeah sorry about that, i do most of my work at SDF and our service for pad/url-shorten has its HTTPS expired so i hastily found a backup
9:55:38
jackdaniel
I have a trivial script "hellpost" which puts text file on my server and returns url
9:55:55
nydel
( the SDF service is at tx0.org but if you check it out please use a remote browser until we sort out our HTTPS )
9:56:38
nydel
ah, i could do that as well but it wouldn't format the code as automatically as something like pad.ubuntu
9:57:56
nydel
jackdaniel: is that working correctly? i see a checksum and the URI of a .lisp file but that file when followed is not behind SSL
9:59:24
nydel
oh i see, there are no certificates at all for the domain (at least its www or blank hostnames)
9:59:54
nydel
jackdaniel: i think http ssl is really important, do you disagree, or have you simply not gotten around to it?
10:02:00
jackdaniel
I don't disagree nor agree, I don't have a strong opinion on the matter. That said we are getting into offtopic now.
10:08:00
nydel
well.. my main project right now is a sort of shared commonlisp REPL. i become interested in http security just as i become interested in how to go about authorizing users by session, permission levels etc in my multi-user CL package.
10:09:10
nydel
as i was working on that a few months ago, i made sure all my www things had tls/ssl to keep from "downgrade" attacks and other textfile-read uninspired hacker drollery for fifth graders
10:09:14
jackdaniel
if you have user sessions ssl is a must, I can't disagree with that. is this project hosted somewhere?
10:11:24
nydel
i'm between version control systems but the project there will load and evaluate (muclr-server:start-server 9903) with 9903 as an arbitrary local port.
10:12:04
nydel
you can connect a couple parallel sessions using telnet localhost 9903 then /login (see the other API functions for how to evaluate and send messages to other users etc)
10:12:57
nydel
jackdaniel: actually here is a little demonstration i had to put together for some potential contributors: https://mastodon.sdf.org/system/media_attachments/files/001/902/074/original/3df2d3a5eb0f385c.png?1542364453
10:18:41
nydel
originally when i stopped only-lurking just recently, i was working on a package i'm calling "repl-ui" ... REPL user interface, of course ... i write so many interactive REPL so frequently that i figured it was time to standardize it. that's a bit more pragmatic and less lofty than something like MUCLR.
10:20:47
jackdaniel
having something like muclr to be more useful would require global environments I can imagine
10:21:23
jackdaniel
just like you have separation for users in database but you may import i.e table from another user
10:23:56
nydel
i hear that. in my mind this far i've been thinking that each user has different permissions. so one might submit a bunch of forms for evaluation, but the creator of the shared-instance (or one of their aproved people) has to sign off on the submitted forms before they are evaluated in the shared interpreter.
10:24:18
nydel
and of course each user will also have their own local REPL separate from the shared -- that is the client, part of which i write as the REPL-UI package now.
10:24:39
nydel
i.e. i hope users can connect to a MUCLR server directly from SLIME by using muclr-client. but i haven't written all of that yet.
10:30:47
ogamita
nydel: did you experiment with other REPL features than the classic REPL we find in CL implementations?
10:31:32
nydel
ogamita: i think the answer is probably no, because i can't think of a much different way to build or imagine an REPL
10:31:58
nydel
if you have anything/s in mind i would appreciate being pointed at things of which i'm ignorant
10:33:06
ogamita
Well, there could be something about multiple threads and I/O. allegro does something about it, but only in the debugger IIRC.
10:34:03
ogamita
In slime, there's the "presentations", ie. printing a lisp object in the REPL inserts there a link to inspect the object (could also have a popup menu associated to each presentation to manipilate it).
10:34:25
nydel
the threading has been a bit of a nightmare. the package relies so heavily on bordeaux-threads to keep all the connections separate, each thread a socket and an object attaching various other things to that socket.
10:34:39
ogamita
Something nice would be multimedia: if you print an image object, it would display it, if you print a sound object it would let you hear it, etc.
10:35:05
nydel
ogamita: oh that is such a great series of ideas. i wonder whether i could accomplish such things with pure CL or if emacs lisp would be needed
10:35:07
ogamita
Ie, in addition to print-object, we could have a render-object method to show multimedia objects in the repl.
10:36:07
ogamita
Idealy, the UI would have a front-end and a back-end, and you could use the same back-end with all the target front-end.
10:36:51
nydel
yes, i need a spec. a universal API to handle all the common types of requests that could happen between client & server, server & clients.
10:38:10
ogamita
So, something about input methods could be done, to let you input easily lisp code and data, from other devices than a keyboard (touch screen, microphones, camera (real gesture recognition ;-)).
10:39:42
nydel
i'd like, at first anyhow, for MUCLR to assume for a terminal-only environment. i hope it could be of use to public access unix users who are trying to either share an interpreter with a peer or learn from a mentor etc
10:39:52
ogamita
For example, a smart "abbrev" system that would let you dictate or type on an tablet easily, by smart guessing what is wanted depending on the state of the lisp image (the existing packages and symbols, etc). Ie. more guessing the meaning of the programmer, and generating the sexp he wants.
10:41:02
nydel
huh/hmm. i am really open to these ideas. it would be such a one-two punch if commonlisp could be made multiuser AND smart-device compatible simultaneously
10:41:22
ogamita
nydel: ah good. In this case, "screen sharing" would be great. You'd want to allow the mentor see all the screens of his students, and students could also share their screen between themselves. Both read-only and read-write. And possibly also, letting one user cl:inspect the image of the other.
10:43:04
nydel
yes, strong yes's to all that! i can write most of the sharing easily, but i wonder how easy it will be to make mobile-compatible versions for on-the-go lisp hackers. should an "app" or a mobile web implementation (open source and federated) be best
10:44:56
ogamita
Well, of course, it's complicated. Neither Android nor iOS are easy for us. On Android, the UI or at least the "main" function must be written in Java anyways. On iOS, there are a lot of security restrictions, (and UI is better written in Objective-C than in C, even if it would be possible to use only C (FFI)). (or Kotlin and Swift).
10:45:32
ogamita
On the other hand, on Android it's possible and probably a good choice, given the constraints.
10:46:22
nydel
LdBeth: i think you're in denial. give yourself permission to admit how much you miss chinese food.
10:46:35
ogamita
nydel: it seems clear that the easy way is to put the UI on Android and iOS, and the CL image on a server, but this implies on-line work only, and more difficult communications between the lisp image and the UI.
10:47:51
nydel
ogamita: i had planned for -- if people want to use it mobile-style -- they can ssh to SDF or some pubnix and connect using an emacs/slime & :MUCLR-CLIENT
10:49:57
ogamita
nydel: yes, for now, it should be sufficient. But this doesn't address the specific UI problem of mobile. Terminal emulations are good, but you really want a physical keyboard connected to the mobile to do any serious work. (and then, it works well enough, ergonomically).
10:51:27
nydel
ogamita: may i ask what sort of work you do for a living (or for whatever) ... you're very admirably-skilled at brainstorming on the line between inside-box and outside-outer-space & i wonder the reason why
10:53:53
ogamita
I'm a free-lance developer. I can write programs for macOSX, iOS, Android, Linux. Currently I'm working on integrating Smartcard Login on FreeRDP for a customer. Next year, I'm starting a company to develop IA software.
11:00:26
nydel
"probably more for #lispcafe" is such a polite way to tell someone they're boring you
12:13:40
pfdietz
You could just build a new version of your lisp and it gets its own fresh slice of the cache. :)
12:16:17
pfdietz
If you build a new SBCL, with changes from previous, it will give it a new (lisp-implementation-version), which will go into a fresh subdirectory under .cache/common-lisp
12:18:37
jdz
I have not seen any variables named $1 or $2 when compiling my code. Probably the result of one of those lambda-shortening macros.
12:19:17
jdz
I don't know. You are the one compiling the code, you should know where they come from.
12:23:05
jmercouris
did you quickload each dependency independently to see if they would emit warnings?
12:23:13
pfdietz
I have cl-string-match here, and I used the magic of grep... like he said. Confirmed with (ql:quickload "cl-string-match" :verbose t) (which gives me 38 style warnings, btw).
12:23:18
jackdaniel
grep -rn "my error" ~/quicklisp/dists/quicklisp ; is the most effective silly way to find where warning comes from
12:24:39
jackdaniel
so grepping for the message (carefully, message may have i.e ~A and not the literal you see) is a good heuristic
12:25:29
jmercouris
ok, then my follow up question, anyone have any suggestions to replace cl-string-match?
12:26:42
jmercouris
yes, I'm getting the impression that cl-string-match is not a well taken care of lib
12:28:21
jmercouris
well there were some other interesting things it had in addition to regex, but I'm not using those
12:28:34
pfdietz
If you want to push up changes, I've forked a copy of it on github (added a new algorithm I needed).
12:28:43
jmercouris
and maybe when I wish to do those interesting things I may wish to implement them myself..
12:29:10
jmercouris
pfdietz: I would like to, but I don't want the overhead of having to coordinate to push to ql or maintain deps
12:29:53
pfdietz
This is NOT the version going into QL. I tried to get access to the server with the "real" repo, but had issues. So no pull requests.
12:29:54
jmercouris
I'm sure there is quite a bit that you would disagree with, I also don't like a lot of the source
12:31:58
pfdietz
Although suffix trees on general sequences, not just strings, would be nice (I've used that in clone detection algorithms).
12:40:33
pfdietz
I pushed a change to my copy of cl-string-match that gets rid of the style warnings (and fixes two tests).
12:41:25
jmercouris
I'm thinking about the convenience for users to have to clone your version to compile from source
12:41:59
pfdietz
The QL model with someone elses' dist is not really compatible with good configuration management.
12:48:41
jmercouris
I am thinking, why not just use quicklisp? and have a custom dist only with systems designed to work with next?
12:58:16
ogamita
quicklisp is quite dangerous, when you start to develop seriously. Imagine, you use a dozen libraries, and next month you update quicklisp, and half of them are removed from the distribution!
12:58:49
ogamita
There's quite some prunning occuring each month (I'm not saying it's unjustified, but if you depend on those libraries, you won't be happy).
13:08:08
pfdietz
Things get pruned when they stop working, so if you depended on them and they're removed, you'd probably be in trouble regardless.
13:23:42
beach
Where in the Common Lisp HyperSpec does it say that a DEFMETHOD form is evaluated in the normal lexical environment, as opposed to the null lexical environment?
13:27:34
beach
Yes, well, we are writing a paper about MAKE-METHOD-LAMBDA and I want to get things right.
13:33:02
ogamita
Implementations indeed do it, but I don't see it specified. I guess, they don't use make-method in defmethod or defgeneric…
13:36:45
ogamita
(but I agree, it's nice that methods defined by defmethod and defgeneric be closures).
13:38:00
ogamita
"The form used with make-method is evaluated in the null lexical environment augmented with a local macro definition for call-method and with bindings named by symbols not accessible from the COMMON-LISP-USER package."
13:38:57
Bike
but the form used with make-method is a part of the result of compute-effective-method. it doesn't have a method body in it.
13:40:22
beach
Now, here is the inconsistency: http://metamodular.com/CLOS-MOP/make-method-lambda.html
13:42:10
Bike
that make-method-lambda description also redefines how call-method and sort of how make-method works but doesn't have enough detail
13:44:42
beach
It says, The generic function and method the method function will be used with are not required to be the given ones.
13:46:11
Bike
yeah, ecl and clasp incorporated that, which removes one of the objections in costanza's paper
13:47:27
beach
The other objection is that the method-class must be known so the generic function must be known, or else a method of the wrong class will be created.
13:48:14
beach
But the compiler could save the :method-class argument to DEFGENERIC just as it might save the lambda list, without creating the generic function.
17:13:42
verisimilitude
If I were building an iOS or Android program for someone, I'd try to use mocl; the main issue is they're not so free with their documentation if you don't buy it, apparently, even if you ask nicely.
17:15:46
clintm
We inquired about using mocl for Android about three or four months ago and were told it had bitrotted. Let me see if I can find the email.
17:16:20
verisimilitude
I just wanted to look at its documentation for completeness' sake in a library I've written, but didn't even receive a response.
17:18:42
clintm
Ok, so, sort of bitrotted. Constant changes to android studio, and the (lone?) developer now works at a full time job that doesn't involve mocl.
17:31:42
Xach
selling cl tools always seems like a tough row to hoe, i was hoping mocl could make it work
17:36:10
jasom
I'm curious how LTO works with clasp, since lisp lacks anything quite like a link time
17:36:25
jackdaniel
just saying, but ECL also exists, works on android and you while it has some rought edges you are physically able to fix these because it is a foss software
17:37:35
verisimilitude
I'm fortunately spared from iOS and Android development, but I'd use ECL or SBCL if I couldn't get the employer to buy mocl, yes.
17:38:34
verisimilitude
That does have me wondering, jackdaniel; mocl advertises its special declarations for linking to the native code well; does ECL have anything comparable to those?
17:40:09
jackdaniel
I don't know what are mocl's special declarations for linking, but ECL shares runtime with other C programs
17:40:39
jackdaniel
so it may be linked to other program, compiled to shared and static library and such
17:44:35
clintm
jackdaniel: Do you happen to know of any projects that try to tie the android UI with ECL? I wouldn't expect it to be part of ECL itself, but I looked around when we were evaluating our options and didn't find much in the way of projects, examples, or the like that did anything with the UI.
17:44:54
jackdaniel
it doesn't have Apple's Xcode integration, but it allows defining lisp functions which are called like other C functions
17:45:44
jackdaniel
EQL5-Android project developed it further and has great demos with user interface
17:45:55
clintm
Oh yea, I think I messed with that on one of our test devices! It worked quite well, as I remember.
17:46:52
clintm
Ohh, right, is that the one that needs the specific version of the ndk? Not saying that's a problem or anything, it's just been three or four months since I was poking at this.
17:47:31
jackdaniel
the one I wrote requied specific ndk version because the newer one had some bug, but it was around 2y ago, I would suspect it should work now
17:48:03
jackdaniel
and if not pull requests are welcome and source is available (if it is ecl fault)
17:48:15
clintm
Hrm, yea, I built and messed around with that. I may have to dig into it again - I can't remember why I passed on it.
17:48:16
jackdaniel
here are screenshots: https://gitlab.com/eql/EQL5-Android/tree/master/screenshots
17:50:06
clintm
Yea, right! I built the skoban and repl examples, installed and ran them and they worked as advertised as I remember. Ok, now I'm really curious. Time to shave some yaks and set it up again.
17:50:11
jackdaniel
the most notable drawback with ECL on android is that usually you are forced to use bytecompiler at runtime (nothing technical, devices just usually doesn't have gcc), but you may load precompiled libraries
17:50:50
jackdaniel
and the second drawback is generic function dispatch performance. we plan to address that after upcoming release
17:50:57
clintm
I don't remmeber that being a problem, but I also don't remember doing anything special because of it.
17:58:56
jackdaniel
we know how to improve it (thanks to beach papers and clasp team experimentation)
17:59:55
jackdaniel
I'd say drmeister, but there are more developers who do teremendous job with it (for instance Bike)
18:07:12
Bike
i'd like to see about inlining method bodies themselves so it's like a real jit, but that's a lot of work
18:07:40
drmeister
Yeah - it's not all me anymore. Bike is doing a tremendous amount - Cleavir was written by beach. kpoeck has been fixing lots of bugs. The list goes on.
18:11:22
Bike
i guess rather than full method bodies it's accessors really, or maybe gfs more generally
18:13:14
Bike
it would be pretty cool for accessor calls within methods to be turned into inline memorhy accesses
18:40:56
pfdietz
another-user: that is, if you're using one the standard equality functions (eq, eql, equal, equalp), so it can build a hash table for membership testing.