Xach changed the topic of #commonlisp to: Common Lisp, the #1=(programmable . #1#) programming language | Wiki: <https://www.cliki.net> | IRC Logs: <https://irclog.tymoon.eu/libera/%23commonlisp> | Cookbook: <https://lispcookbook.github.io/cl-cookbook>
pjb has quit [Ping timeout: 268 seconds]
gaqwas has quit [Ping timeout: 240 seconds]
varjag has quit [Ping timeout: 260 seconds]
VincentVega has quit [Remote host closed the connection]
Lord_of_Life has quit [Ping timeout: 246 seconds]
Lord_of_Life has joined #commonlisp
s-liao has quit [Quit: Client closed]
Guest74 has quit [Quit: Connection closed]
s-liao has joined #commonlisp
<lexi_sparks> Hello all, appologies for the bother but I'm somewhat new to this - why is (member "DEC" '("DEC")), NIL? Does member eq things, rather than equal/equalp-ing them?
<hayley> MEMBER uses EQL by default, try (member "DEC" '("DEC") :test #'string=)
<lexi_sparks> hm, yep, that works! Thank you!
<lexi_sparks> I'm surprised it doesn't say which method of equality it uses in the hyperspec
shka has quit [Ping timeout: 268 seconds]
s-liao has quit [Ping timeout: 256 seconds]
<Nilby> You probably don't have the unabridged version. :)
<Nilby> I joke. It's a little confusingly mentioned here http://www.lispworks.com/reference/HyperSpec/Body/sec_17-2-1.html
cjb has quit [Ping timeout: 260 seconds]
<lexi_sparks> huh
cjb has joined #commonlisp
<Nilby> wow, the links were actually changed. I really do have a different version.
random-nick has quit [Ping timeout: 240 seconds]
<lexi_sparks> Wow, I have no idea how I would've found that, thank you!
pranavats has left #commonlisp [#commonlisp]
pranavats has joined #commonlisp
<Nilby> I had to recite it every day as a young lisp cultist
mfiano has joined #commonlisp
Bike has joined #commonlisp
<lexi_sparks> Is there like, a searchable version of the hyperspec anywhere? I mean, I know you can like, go to the symbols index and look stuff up by first letter, but someone has to have made something a little bit more friendly, right?
<jcowan> Googling for [clhs caddr] etc. usually gives you the right result for caddr in the first link returned
<Bike> there's http://l1sp.org/html/
<Nilby> I just use C-s in the emacs info version, but I you can type !clhs in ddg
<Bike> i don't know how extensive the search is beyond expanding from hyphens
lottaquestions has quit [Quit: Konversation terminated!]
<lexi_sparks> Hm, okay!
Guest74 has joined #commonlisp
Bike has quit [Quit: Connection closed]
lexi_sparks has quit [Ping timeout: 260 seconds]
Oladon has quit [Quit: Leaving.]
aartaka has joined #commonlisp
asarch has joined #commonlisp
<asarch> I am uploading a text file to the server and in the POST controller I get the file as #<FLEXI-STREAMS::VECTOR-INPUT-STREAM {1009939D43}>, how could I read its content and store it in a variable? (uiop:copy-stream-to-stream file-content string-buffer :element-type '(unsigned-byte 8)) does not work
igemnace has quit [Ping timeout: 256 seconds]
<hayley> Suppose I had some sort of string search optimisation that relies on some characters being more or less common than others. What would a good interface for communicating the entropy for each character be? Would one be able to provide Shannons or a probability, or would it be easier to just sort some options by likelihood?
s-liao has joined #commonlisp
<hayley> The former is more useful as it would help predict if the optimisation is useful at all, as a higher probability makes performance worse; and my library could handle finding the point of breaking even, rather than the client having to know this point as well as an entropy model.
lexi_sparks has joined #commonlisp
Oladon has joined #commonlisp
Bike has joined #commonlisp
<Bike> hm, did pkhuong's string-case do any of that
amb007 has quit [Remote host closed the connection]
<Bike> no.
<hayley> Someone recommended it to me, but I recall it tested all the characters and did it all branch-free.
<beach> Good morning everyone!
<hayley> In this case, I'm trying to cut down on branches with sb-simd, which is going to be a bit different.
<Bike> yeah. it also doesn't rely on statistics like that.
<hayley> Good morning beach!
<Bike> i'd default to probabilities, i spose
<Bike> would help with composing them later if one wants to do that
<hayley> Yes, I just don't think I can pick probabilities though.
taiju has quit [Ping timeout: 265 seconds]
amb007 has joined #commonlisp
Colt2 has joined #commonlisp
Colt2 has joined #commonlisp
Colt2 has quit [Changing host]
mzan has quit [Quit: https://quassel-irc.org - Chat comfortably. Anywhere.]
<Bike> asarch: alexandria:read-stream-content-into-string maybe?
Colt has quit [Ping timeout: 268 seconds]
mzan has joined #commonlisp
<Bike> or read-stream-content-into-byte-vector
Colt2 has quit [Client Quit]
<hayley> My regular expression compiler seems competitive with Hyperscan when a state machine is actually necessary. It's even a bit faster with no SIMD at all. But it gets smited when most of the entropy is in some constant string that Hyperscan knows how to turn into a FIND/SEARCH loop.
Colt has joined #commonlisp
taiju has joined #commonlisp
<Bike> doesn't cl-ppcre do that too? i think there's some fanciness with character classes as well...
amb007 has quit [Remote host closed the connection]
<hayley> lol
<_death> don't you just need an ordering?
<hayley> Sorry. It does Boyer-Moore-Horspool for constant prefixes, but that's it.
<Bike> oh, huh.
<Bike> shows what i know
<hayley> CL-PPCRE is...not very clever.
<hayley> _death: Yes, though having a threshold for "sufficiently unlikely" would help with deciding to use this optimisation or not.
Guest74 has quit [Ping timeout: 250 seconds]
amb007 has joined #commonlisp
<_death> so you can take a distribution specifier.. say :zipf or a function or a bunch of weights
* hayley nods
waleee has quit [Quit: WeeChat 3.3]
lisp123 has joined #commonlisp
<lisp123> Bind a key (usually C-c C-d h) so that you can instantly look up any term in the hyperspec
lexi_sparks_ has joined #commonlisp
amb007 has quit [Remote host closed the connection]
amb007 has joined #commonlisp
amb007 has quit [Remote host closed the connection]
lisp123 has quit [Remote host closed the connection]
amb007 has joined #commonlisp
MichaelRaskin has quit [Quit: MichaelRaskin]
amb007 has quit [Remote host closed the connection]
amb007 has joined #commonlisp
amb007 has quit [Remote host closed the connection]
Inline has quit [Quit: Leaving]
asarch has quit [Quit: Leaving]
lexi_sparks_ has quit [Ping timeout: 260 seconds]
lexi_sparks has quit [Ping timeout: 260 seconds]
amb007 has joined #commonlisp
amb007 has quit [Remote host closed the connection]
Bike has quit [Quit: sleepin]
amb007 has joined #commonlisp
<hayley> The other problem is that, while the frequency of different English letters has been studied (think ETAOIN SHRLDU...) the frequency of other punctuation has not, but punctuation is more varied between authors and uses.
<hayley> Oh, and digits too.
amb007 has quit [Remote host closed the connection]
amb007 has joined #commonlisp
etiago- has quit [*.net *.split]
amb007 has quit [Remote host closed the connection]
etiago has joined #commonlisp
GreaseMonkey has quit [*.net *.split]
froggey has quit [*.net *.split]
les has quit [*.net *.split]
Nilby has quit [*.net *.split]
fe[nl]ix has quit [*.net *.split]
hexology has quit [*.net *.split]
Patternmaster has quit [*.net *.split]
jackdaniel has quit [*.net *.split]
spacebat3 has quit [*.net *.split]
gko has quit [*.net *.split]
dcx has quit [*.net *.split]
remexre has quit [*.net *.split]
abraham has quit [*.net *.split]
selwyn has quit [*.net *.split]
skyl4rk has quit [*.net *.split]
derwolf has quit [*.net *.split]
greaser|q has joined #commonlisp
Patternmaster has joined #commonlisp
jackdaniel has joined #commonlisp
gko has joined #commonlisp
les has joined #commonlisp
froggey has joined #commonlisp
remexre has joined #commonlisp
fe[nl]ix has joined #commonlisp
skyl4rk has joined #commonlisp
derwolf has joined #commonlisp
hexology has joined #commonlisp
selwyn has joined #commonlisp
dcx has joined #commonlisp
spacebat3 has joined #commonlisp
greaser|q has joined #commonlisp
greaser|q has quit [Changing host]
greaser|q is now known as GreaseMonkey
tyson2 has quit [Remote host closed the connection]
spiaggia has joined #commonlisp
Oladon has quit [Quit: Leaving.]
jackdaniel has quit [Changing host]
jackdaniel has joined #commonlisp
<jackdaniel> o/
amb007 has joined #commonlisp
<beach> Hello jackdaniel.
cjb has quit [Quit: rcirc on GNU Emacs 29.0.50]
Cymew has joined #commonlisp
taiju has quit [Ping timeout: 250 seconds]
asarch has joined #commonlisp
gaqwas has joined #commonlisp
rotateq has joined #commonlisp
amb007 has quit [Ping timeout: 260 seconds]
<hayley> Yes, it depends on the author.
asarch has quit [Quit: Leaving]
karlosz has quit [Quit: karlosz]
asarch has joined #commonlisp
karlosz has joined #commonlisp
<hayley> Worse, if you're not scanning over something that is "formal" English, say, a log file, then the entropy is probably lower, as there are more repeated elements in each log entry.
shka has joined #commonlisp
<asarch> How could you convert this stream #<FLEXI-STREAMS::VECTOR-INPUT-STREAM {10037B69E3}> into the stream type for the (read-sequence) function?
<hayley> It is a stream.
drmeister has quit [Ping timeout: 250 seconds]
<jackdaniel> and it is a well identified stream (10037B69E3 :)
alanz has quit [Ping timeout: 250 seconds]
alanz has joined #commonlisp
<asarch> With (with-open-file (file-stream …) (uiop:copy-stream-to-stream uploaded-file-buffer file-stream :element-type '(unsigned-byte 8)))) I can save it into a file and then open it to slurp the content
<asarch> I would like to do it "on the fly"
drmeister has joined #commonlisp
<asarch> If I use it "directly" I get The value 35 is not of type CHARACTER when setting an element of (ARRAY CHARACTER)
<hayley> Make sure you are using a byte vector, rather than a string vector (a vector of characters).
<jackdaniel> perhaps your output stream doesn't have a correct element-type ?
<asarch> That values comes from a POST message of the Caveman2 web server
taiju has joined #commonlisp
<asarch> What is a byte vector?
<hayley> A vector with element type (unsigned-byte 8)
<hayley> (The term isn't standardised anywhere, but it is "a vector containing bytes")
<asarch> How do you convert a byte vector into a string?
<jackdaniel> you may use coerce
<hayley> You would need to decode it. The library Babel has babel:octets-to-string for this purpose.
<asarch> (read-sequence file-content flexi-stream) (format t "Content: ~a~%" file-content) only shows: Content: #()
<jackdaniel> (coerce object result-type &optional your-diety-of-choosing)
<hayley> READ-SEQUENCE only reads as much as the vector fits, without trying to resize the vector. Bike mentioned that Alexandria has a function to produce a vector with all the contents.
<hayley> I haven't tested this at all, but (babel:octets-to-string (alexandria:read-stream-content-into-byte-vector stream))
pve has joined #commonlisp
spiaggia has quit [Quit: ERC (IRC client for Emacs 26.3)]
<asarch> Yeah!
<asarch> Thank you guys! Thank you very much! :-)
mrcom_ has quit [Ping timeout: 250 seconds]
<asarch> How many kinds of "streams" are there?
mrcom_ has joined #commonlisp
<hayley> I suppose six, of {binary, character} × {input, output, bi-directional}.
<jackdaniel> you may have an object stream, or stream of pointer gestures
<jackdaniel> also there may be echo streams, broadcast streams and with gray streams you may have looping-streams-that-pass-a-message-after-a-minute, so there are plenty of choices ,)
<asarch> Is it the same as a sequence?
<jackdaniel> why do you think it is?
<asarch> Just confirming. As far I know, a sequence is a list of something
<asarch> Stream, vector, sequence
<jackdaniel> I think that you are long enough to know that already
<jackdaniel> you are using common lisp long enough*
<asarch> Well, if I was alone I never could decode the content of the file stream without your help
<jackdaniel> perhaps you should read some introductory material like "practical common lisp"?
<jackdaniel> minion: tell asarch about pcl
<minion> asarch: look at pcl: pcl-book: "Practical Common Lisp", an introduction to Common Lisp by Peter Seibel, available at http://www.gigamonkeys.com/book/ and in dead-tree form from Apress (as of 11 April 2005).
<asarch> It is not something like: FILE* fp = fopen(…); fscanf(fp, …); …
<asarch> flexi-streams, babel, alexandria, uiop
<hayley> Yet POSIX(?) files do not handle the problems of character encodings, or provide combinators and tools to make your own streams.
s-liao has quit [Quit: Client closed]
<jackdaniel> bytes shalt be thou strings and pipes shalt be thou function calls, Also sprach Zarathustra
<flip214> jackdaniel: next you'll quote Götz von Berlichingen...
<jackdaniel> :)
<asarch> There should be a book about streams in Common Lisp
<asarch> Something a la "Let Over Lambda" book
<jackdaniel> they are pretty much covered in books I've linked, no worries
<asarch> And a good example would be to open a reproduce a MP3 file
pranavats has left #commonlisp [#commonlisp]
<jackdaniel> funnily enough this is also covered in one of books I've linked
<rotateq> Common Lisp Recipes covers this topic also
<asarch> The expert level would be one of NeHe's OpenGL tutorial where he opens an AVI video and plays back the content over the faces of a rotating cube
<rotateq> so first getting the basics right as always
gaqwas has quit [Read error: Connection reset by peer]
gaqwas has joined #commonlisp
pranavats has joined #commonlisp
gaqwas has quit [Ping timeout: 245 seconds]
alphapapa[m] has quit [Quit: You have been kicked for being idle]
pjb has joined #commonlisp
igemnace has joined #commonlisp
alanz has quit [Ping timeout: 245 seconds]
ullbeking_ has quit [Ping timeout: 250 seconds]
splittist has quit [Ping timeout: 264 seconds]
jsatk has quit [Ping timeout: 264 seconds]
sgithens has quit [Ping timeout: 260 seconds]
drmeister has quit [Ping timeout: 245 seconds]
pl has quit [Ping timeout: 250 seconds]
dbotton has quit [Ping timeout: 240 seconds]
griffinmb has quit [Ping timeout: 265 seconds]
jcowan has quit [Ping timeout: 260 seconds]
jmercouris has quit [Ping timeout: 264 seconds]
gendl has quit [Ping timeout: 264 seconds]
travv0 has quit [Ping timeout: 264 seconds]
stylewarning has quit [Ping timeout: 250 seconds]
victor_ has quit [Ping timeout: 268 seconds]
d_run has quit [Ping timeout: 265 seconds]
iisi has quit [Ping timeout: 265 seconds]
hubvu has quit [Ping timeout: 264 seconds]
<asarch> Have a nice day :-)
IUSR has quit [Ping timeout: 265 seconds]
conjunctive has quit [Ping timeout: 265 seconds]
asarch has quit [Quit: Leaving]
gendl has joined #commonlisp
sgithens has joined #commonlisp
jsatk has joined #commonlisp
alanz has joined #commonlisp
drmeister has joined #commonlisp
jmercouris has joined #commonlisp
hubvu has joined #commonlisp
splittist has joined #commonlisp
pl has joined #commonlisp
conjunctive has joined #commonlisp
jcowan has joined #commonlisp
ullbeking_ has joined #commonlisp
d_run has joined #commonlisp
travv0 has joined #commonlisp
griffinmb has joined #commonlisp
victor_ has joined #commonlisp
IUSR has joined #commonlisp
iisi has joined #commonlisp
lisp123 has joined #commonlisp
stylewarning has joined #commonlisp
dbotton has joined #commonlisp
travv0 has quit [Ping timeout: 264 seconds]
travv0 has joined #commonlisp
VincentVega has joined #commonlisp
dre has quit [Quit: Leaving]
ym has joined #commonlisp
lisp123 has quit [Remote host closed the connection]
pjb has quit [Ping timeout: 245 seconds]
cosimone has joined #commonlisp
pranavats has left #commonlisp [Disconnected: Replaced by new connection]
pranavats has joined #commonlisp
chrnybo has joined #commonlisp
edgar-rft has quit [Remote host closed the connection]
edgar-rft has joined #commonlisp
paule32_ has joined #commonlisp
pjb`````` has joined #commonlisp
s-liao has joined #commonlisp
paule32 has quit [Ping timeout: 260 seconds]
pjb`````` has quit [Quit: ERC (IRC client for Emacs 27.2)]
paule32_ is now known as paule32
aartaka has quit [Ping timeout: 256 seconds]
hayley has quit [Killed (platinum.libera.chat (Nickname regained by services))]
Guest6831 has joined #commonlisp
Guest6831 is now known as hayley
hayley has quit [Changing host]
hayley has joined #commonlisp
aartaka has joined #commonlisp
random-nick has joined #commonlisp
Noisytoot has quit [Ping timeout: 268 seconds]
rogersm has joined #commonlisp
aartaka has quit [Ping timeout: 264 seconds]
aartaka has joined #commonlisp
karlosz has quit [Quit: karlosz]
X-Scale` has joined #commonlisp
X-Scale has quit [Ping timeout: 268 seconds]
X-Scale` is now known as X-Scale
puke has quit [Quit: puke]
igemnace has quit [Quit: WeeChat 3.3]
igemnace has joined #commonlisp
mrcom_ has quit [Ping timeout: 264 seconds]
tyson2 has joined #commonlisp
pjb has joined #commonlisp
igemnace has quit [Remote host closed the connection]
mrcom_ has joined #commonlisp
yewscion has joined #commonlisp
s-liao has quit [Ping timeout: 256 seconds]
pjb has quit [Ping timeout: 268 seconds]
heisig has joined #commonlisp
pjb has joined #commonlisp
tyson2 has quit [Remote host closed the connection]
s-liao has joined #commonlisp
tyson2 has joined #commonlisp
peterhil_ has quit [Remote host closed the connection]
peterhil_ has joined #commonlisp
peterhil_ has quit [Remote host closed the connection]
peterhil_ has joined #commonlisp
minion has quit [Remote host closed the connection]
specbot has quit [Read error: Connection reset by peer]
minion has joined #commonlisp
specbot has joined #commonlisp
frgo_ has joined #commonlisp
Bike has joined #commonlisp
frgo has quit [Ping timeout: 268 seconds]
asen has joined #commonlisp
hobo has quit [Ping timeout: 246 seconds]
hobo has joined #commonlisp
asen has quit [Read error: Connection reset by peer]
asen has joined #commonlisp
epolanski has joined #commonlisp
asen has quit [Client Quit]
hobo has quit [Read error: Connection reset by peer]
hobo has joined #commonlisp
s-liao has quit [Quit: Client closed]
s-liao has joined #commonlisp
rotateq has quit [Remote host closed the connection]
Inline has joined #commonlisp
Nilby has joined #commonlisp
Lycurgus has joined #commonlisp
igemnace has joined #commonlisp
paule32 has quit [Remote host closed the connection]
Noisytoot has joined #commonlisp
Guest7491 has joined #commonlisp
heisig has quit [Quit: Leaving]
s-liao has quit [Quit: Client closed]
waleee has joined #commonlisp
Colt has quit [Ping timeout: 240 seconds]
aartaka has quit [Ping timeout: 245 seconds]
frgo_ has quit [Remote host closed the connection]
lisp123 has joined #commonlisp
<Guest7491> is there any consistency in drawing apis arguments or expected args. (rectangle x1 y1 x2 y2...)(rectangle x1 y1 width height...)(rectangle pt1 pt2...)...
frgo has joined #commonlisp
VincentVega has quit [Ping timeout: 245 seconds]
<beach> You may check what CLIM does. It often has two functions like DRAW-RECTANGLE and DRAW-RECTANGLE*.
<beach> ... depending on the arguments are points or single coordinates.
Krystof has quit [Ping timeout: 268 seconds]
Lycurgus has quit [Quit: Exeunt]
<Guest7491> is there a convention they follow in the industry or just it's own specification?
lisp123 has quit [Ping timeout: 264 seconds]
Krystof has joined #commonlisp
<beach> Guest7491: I am willing to bet that the CLIM specification was written before most APIs you might use today, so the question is whether industry followed established conventions or not.
<beach> Plus, most languages don't allow names with `*' in them, so that's already a problem for the others.
lisp123 has joined #commonlisp
VincentV` has joined #commonlisp
<Guest7491> i would probably say something list point-rectange or pt-rectangle. an asterisk doesn't scream point to me, but maybe that's just me.
<Guest7491> s/list/like
<shka> anybody here use define-vop in sbcl? I wonder how hard it would be to define vop which would be like cl:< but instead of t or nil it would return 1 or 0
<shka> for double-floats
<beach> Guest7491: Can I assume you are designing something in Common Lisp? Then many Common Lisp programmers will be aware of the CLIM protocols.
<Guest7491> by the amount of questions I would assume most are not, and are probably familiar with other apis.
<beach> Guest7491: As I recall, there are plenty of other examples in Lisp (even before Common Lisp) where * means "spread arguments".
<beach> Guest7491: Sure, most programmers are not familiar with Common Lisp, that's for sure, so if you want to cater to those, then do something else.
<Guest7491> I'm not understanding spread arguments. do you mean the ones labeled as such are the ones that don't use poitnts?
<beach> Guest7491: But then you are probably better of not using Common Lisp.
<Guest7491> well, that's unnecessary
<beach> The * versions use single coordinates, so they are the "spread" versions.
<Guest7491> that's interesting. Is it mentioned anywhere?
<beach> Section 2.3 in the CLIM specification.
<Guest7491> I mean in something a regular lisp programmer would read. The convention must predate CLIM, no?
<Nilby> There is a convention for drawing API arguments which comes from PostScript and is used in many things, e.g. cairo, svg, etc
<Guest7491> I'm not sure I should use a convention that is only known to people who read the clim spec.
<beach> Whatever.
<Guest7491> nilby: I'll have to look into that, I just remember ps being backwards.
<shka> i think that you make "convention" much bigger obstacle then it really is
<shka> but that's my opinion
<Nilby> but as for Lisp, convention is whatever I want since I can "zero cost" macro around everything
<Guest7491> shka:possibly. I think I frequently do that. I don't expect others to think like me.
<shka> substance is infinitely more important then the convention
<_death> there is no single convention.. but this one is etched deep in my skull http://www.antonis.de/qbebooks/gwbasman/line.html
<beach> For what it's worth, every "regular lisp programmer" should read the CLIM II specification. It's a good tutorial on the use of CLOS-style object-oriented programming. Plus, McCLIM is a very good implementation of it that I encourage GUI programmers to use.
<Guest7491> -death: is that basic?
Cymew has quit [Ping timeout: 245 seconds]
<_death> yeah
<Nilby> Xach's vecto uses a simlar API
aartaka has joined #commonlisp
<Guest7491> I think my vector stuff is pretty much the same as vecto or svg.
<Guest7491> by vector stuff i mean path building.
<Guest7491> shka: I guess that's a good point. Just do it and see if anybody complains.
VincentV` has quit [Ping timeout: 245 seconds]
<beach> I myself understood the virtues of CLOS-style object-oriented programming from reading the CLIM II. Reading Keene's book was just not enough. And since I rarely think of myself as unique, I think that any Common Lisp programmer who wants to use CLOS seriously, should read the CLIM II specification.
<Guest7491> Does it cover additional aspects of CLOS? I found Keene quite illuminating and straightforward.
<Guest7491> I had a very hard time with the CLIM spec.
<Guest7491> years ago.
<beach> I found that the concept of a protocol was made clear by the CLIM spec. For example that the important parts of a class are the initialization arguments and the functions that can be applied to instances of it. So the slots are implementation details.
<beach> Also the use of auxiliary methods in the drawing functions.
<etimmons> Not quite the same, but Python (the "language", not compiler) also uses * to deal with spread arguments. f(*a) is equivalent to (apply #'f a). And def f(*a) is equivalent to (defun f (&rest a))
<Guest7491> beach: maybe I'll have to revisit it. at least the aux methods as to how they pertain to drawing functions.
<Guest7491> I do remember thinking it was too complicated at the time and just wanted something more simple.
<beach> That happens to me when I don't have all the prerequisites to understand it.
<Guest7491> I'm usually the opposite. fine with complexity until I see how it can be simplified.
<Guest7491> is the clim 2 spec a living document? is this link fine? http://bauhh.dyndns.org:8000/clim-spec/1.html
<beach> It is not being modified, other than to add annotations. That's the site we typically use.
<Guest7491> ok thanks
<beach> Since we are on the subject, let me give you this link that scymtym posted in #clim: https://techfak.de/~jmoringe/clim-listener-1.ogv
<beach> Just to push the use of McCLIM as a very competent library.
aartaka has quit [Ping timeout: 250 seconds]
aartaka has joined #commonlisp
<Guest7491> Yeah, before I found lisp I thought drawing to a stream would be good. Seeing demos of mcclim made me reconsider that. I much rather just have an object displayed in it's own window and not my repl so I can see everything at once. which is what I currently do.
<shka> i personally found AMOP to be truly illuminating, i think that in the same way beach experienced CLIM ||
<Guest7491> I definitely need to reread that one. Think I read it too early.
<shka> i have a paper back, i highly recommend getting one as well
<_death> Guest7491: you're conflating two things.. you can have a separate pane for the graphics and just draw to it (panes are streams)
<shka> because even if you won't read it, the cover is VALUE in itself :P
<lisp123> Guest7491: https://users.cs.duke.edu/~vahdat/ps/mop.pdf helped me a lot re amop
<Guest7491> _death: no, i'm not. I'm just stating what I thought in the past. I know you can do differently in clim.
ym has quit [Quit: Leaving]
<lisp123> beach: Nice video, thanks for sharing. What was interesting was the GUI objects were just part of a stream, and they moved up the page as more output was written to stream
<beach> Yes, that's the way the listener works. But as _death pointed out, this is just one of several possible choices.
<beach> The listener, by the way, is not in the specification. It's a McCLIM thing, just like the "debugger" (i.e. the backtrace inspector), Clouseau, and more.
<lisp123> I see. Looks good!
<etimmons> A recent Reddit comment re: McCLIM made me a little sad. Said they didn't think McCLIM was "production ready", largely because of its look and feel
<beach> There are still a few quirks, but nothing serious.
<Guest7491> That
<Guest7491> s the problem with theming. They'll just blame the programming :)
<beach> I keep wondering why some people prefer to take a huge amount of work and pain with FFI-bases solutions AND complain about McCLIM, rather than contributing a small amount of work to McCLIM for their own purpose, but also to share with others.
chrnybo has quit [Ping timeout: 250 seconds]
<_death> I think the usual issues are pretty serious though.. I tried showing mcclim thing I wrote to nontechnical people and the quirks I've "gotten used to" (possibly due to the window manager I use and such) really jarred them..
chrnybo has joined #commonlisp
<beach> I can understand that, but I also think that the amount of work required to fix those quirks is small enough that it does not justify abandoning McCLIM in favor of a much larger amount of work and lots of pain, with an FFI solution.
<beach> And again, the FFI solution solves only the immediate problem, whereas fixing a McCLIM quirk is an investment, and a help to others.
<Guest7491> I think an unopinionated framework upon which opinions can be made is the way. I may be biased though :)
<Guest7491> theoretically you could write mcclim on top of what I'm doing.
<lisp123> Guest7491: Great! Are you building some low-level framework for dealing with graphics?
<beach> McCLIM is quite "unopinionated". You can write everything using sheets sand events if you like.
<beach> s/McCLIM/CLIM/
<beach> Plus, CLIM consists of a significant number of protocols, each with at least one default implementation, but the programmer can substitute other implementations and they will fit right in.
<Guest7491> lisp123: graphics, surfaces, keybinding, desktop integration, etc... all as separate modules.
<_death> beach: maybe.. these are longstanding issues though.. I tried to find the root cause for one a year ago or so, but that was when I was less familiar with mcclim and X, and I'm probably still not familiar enough to fix it without making a good effort and taking some time.. and my round-to-its are thin nowadays.. and currently I'm looking at (ugh) web-based UIs and javascript anyway :/
<beach> _death: I see.
chrnybo has quit [Ping timeout: 264 seconds]
<lisp123> Guest7491: That's awesome. Good luck! (And selfishly waiting for it to be plugged into McClim :))
Devon has quit [Ping timeout: 240 seconds]
<lisp123> _death: If somebody can bind web-based UIs / javascript to McClim, that would be a huge gamechanger for CL
<beach> The main "problem" with McCLIM, as I see it, is that we still don't (or not last time I looked) have a documentation that explains CLIM from the bottom up. Such a document would be great for people used to more traditional GUI libraries, because they could stop after chapter 1 and it would be familiar to them.
chrnybo has joined #commonlisp
<lisp123> Portability of the web browser is unmatched
<_death> lisp123: I think scymtym had a "broadway" branch doing some of that
<Guest7491> I'm thinking websockets is the way i'll go for web surfaces.
<Guest7491> If i understand websockets correctly.
<lisp123> beach: I will have a go at it in the coming months (not that I will be any good at it). I must admit I read the first few pages / chapters of the manual and then gave up because it was too advanced
<beach> lisp123: When you do have a go, feel free to ask questions.
<etimmons> lisp123: I believe scymtym was playing in that area. Using the Broadway protocol, IIRC? Plus I think I saw a basic (display only?) demo from jackdaniel in that area using hunchentoot
Catie has joined #commonlisp
chrnybo has quit [Remote host closed the connection]
<lisp123> _death & etimmons: Thanks, good to hear. I really think that would be a game changer. Yes, jackdaniel mentioned a display only Canvas output earlier, but I wasn't sure if input would be possible
chrnybo has joined #commonlisp
<lisp123> beach: Will do
<_death> it's possible, sure.. look at CLOG (websockets)
ec has joined #commonlisp
<lisp123> True
<scymtym> broadway uses websockets to communicate events from the client (browser) to the server and draw commands from server to the client. the client can either receive compressed raster data which it puts into "textures" (GTK does that and i started out doing that) or the client can draw into a canvas according to the draw commands sent by the server (that's what i'm doing now)
cage has joined #commonlisp
paule32 has joined #commonlisp
paule32 has quit [Client Quit]
paule32 has joined #commonlisp
<Guest7491> cool. Might be nice if I can just piggyback on clog for that.
vats has joined #commonlisp
<lisp123> scymtym: For user input, do you take low-level data from the browser [(x,y) coordinates] and then map it to which part of the canvas it relates to?
<_death> I wish CLOG had a mature high-level GUI library like qooxdoo.. since I don't have time to write it, I picked the latter for my use case and can now expect to write some Java-ish JavaScript..
<random-nick> lisp123: portability of the web browser isn't really unmatched
<random-nick> java is pretty much more portable
<lisp123> random-nick: True :)
<scymtym> lisp123: yes
<lisp123> _death: I played around with CLOG today. Looked good. But then I felt its too much of an investment to learn the idiosyncrasies of a bespoke library
varjag has joined #commonlisp
<lisp123> scymtym: Thanks for confirming
<Guest7491> ideally I'd like a web based backend to run it's own event handler that can be updated from the lisp side. I'm not sure I want to go the route of constant back and forth.
<scymtym> lisp123: this is from the raster image uploading version: https://techfak.de/~jmoringe/mcclim-broadway-7.ogv
<_death> Guest7491: CLOG does that.. you can say something like (make-instance 'button :label "Foo" :callback #'do-something) in the REPL, and you get a button popping up in the browser, and the callback called when you click it
<Guest7491> I guess I'll have to look at it. Is it themable with css? My theming stuff is kinda close to css so that might work.
<_death> yeah.. for me it's a disadvantage currently.. since I don't want to write at the level of html/css
<lisp123> scymtym: That looks really good!!
<scymtym> lisp123: thanks
<etimmons> scymtym: It really does look good. TBH, seeing that video was a big thing that pushed me over the edge to actually start using McCLIM. I didn't want want to be locked into using X (with or without forwarding).
<Guest7491> _death: I just need to figure out a way to convert my stuff. I think it's css like, but I don't really know css.
karlosz has joined #commonlisp
<scymtym> etimmons: makes sense
Oladon has joined #commonlisp
<etimmons> I'm not at the point where I need browser based CLIM yet. But when I get there, I plan on helping one of the work-in-progress ways of doing so however I can.
chrnybo has quit [Ping timeout: 268 seconds]
chrnybo has joined #commonlisp
<lisp123> Likewise. I'm glad for today's discussion
<Guest7491> yeah, web is definitely last on my list. Eventually it has to be dealt with because websites are a thing. However, for desktop apps i definitely think it's the wrong focus.
aartaka has quit [Ping timeout: 245 seconds]
aartaka has joined #commonlisp
chrnybo has quit [Ping timeout: 264 seconds]
cosimone has quit [Ping timeout: 245 seconds]
waleee has quit [Ping timeout: 245 seconds]
karlosz has quit [Quit: karlosz]
<jackdaniel> oh, some McCLIM talk, what did I miss?
waleee has joined #commonlisp
<lisp123> jackdaniel: Basically how good it is and a few of us ready to jump onto a Browser CLIM
<jackdaniel> I've just finished reading :) thanks for the summary
tyson2 has quit [Remote host closed the connection]
vats has quit [Read error: Connection reset by peer]
chrnybo has joined #commonlisp
Bike has quit [Quit: Connection closed]
cosimone has joined #commonlisp
chrnybo has quit [Ping timeout: 260 seconds]
aartaka has quit [Ping timeout: 265 seconds]
lisp123 has quit [Quit: Leaving...]
aartaka has joined #commonlisp
cosimone` has joined #commonlisp
cosimone has quit [Read error: Connection reset by peer]
cosimone` has quit [Ping timeout: 245 seconds]
<Nilby> we fixed CLIM to be be more like shoes with CLOS & presentations
<Guest7491> shoes? or clues?
Oladon has quit [Quit: Leaving.]
Guest7491 has quit [Quit: Connection closed]
Bike has joined #commonlisp
VincentVega has joined #commonlisp
<dbotton> _death what sort of things are you looking for in CLOG? Much of what is in qooxdoo is already there
<dbotton> I am working on documentation on the "process" of writing clog apps then the focus will be on adding more higher level widgets.
<dbotton> Guest7491 everything you can do including themes in a browse you can do with CLOG, you can create your layout in HTML, attach to it in CLOG and then use it as part of CLOG or vice versa
trriplex has joined #commonlisp
Oladon has joined #commonlisp
<_death> dbotton: qooxdoo has a comprehensive collection of widgets
<_death> dbotton: probably one could find a way to put clog and qooxdoo together in a consistent and coherent way.. but I think that could require much effort, and deep knowledge of both
<_death> Kenny Tilton already did figure out how to integrate lisp and qooxdoo (and cells).. but I can't figure out both his code and qooxdoo at the same time, so I opted to go with the classic option and just use straight js/qooxdoo for frontend and lisp for backend
CrashTestDummy has joined #commonlisp
zagura has quit [*.net *.split]
zagura has joined #commonlisp
CrashTestDummy2 has quit [Ping timeout: 260 seconds]
rogersm has quit [Quit: Leaving...]
cage has quit [Quit: rcirc on GNU Emacs 27.1]
VincentV` has joined #commonlisp
trriplex has quit [Quit: Leaving]
<dbotton> _death looking over qooxdoo I agree it looks very worthwhile to bind qooxdoo's widgets in to CLOG
VincentVega has quit [Ping timeout: 245 seconds]
<dbotton> I will try and make that a priority soon
<dbotton> If reasonable I
epolanski has quit [Quit: Connection closed for inactivity]
<_death> it also contains its own object oriented system with some features that may be useful to incorporate into CLOS (using the MOP.. not too difficult)
<dbotton> will add a set of bindings to it, any other desktop style widget libraries anyone is using
<dbotton> Not sure if that would be a target for me, but will see
theothornhill has joined #commonlisp
<dbotton> I am interested on adding bindings post 1.1 to various widgets
<dbotton> and documentation on how to do that
<dbotton> there already is 2 tutorials on it
<_death> anyway, I don't expect anyone to do that work :).. but I did think you may be interested in it, if you didn't already know about it
<dbotton> No was not so familiar, so very thankful
shka has quit [Ping timeout: 245 seconds]
Josh_2 has joined #commonlisp
<Josh_2> Is the person who runs tfeb.org around?
kuler has joined #commonlisp
cjb has joined #commonlisp
VincentV` has quit [Remote host closed the connection]
perrierjouet has quit [Quit: WeeChat 3.3]
waleee has quit [Ping timeout: 245 seconds]
waleee has joined #commonlisp
<Josh_2> Guess not. I like his article ranting about redditors
<Josh_2> sorry I meant lisp doomers
gaqwas has joined #commonlisp
Inline has quit [Quit: Leaving]
ec has quit [Remote host closed the connection]
aartaka has quit [Ping timeout: 264 seconds]
ec has joined #commonlisp
<theothornhill> Are let-bound "gethash-values" "setf-able"?
<theothornhill> hmm I guess I need to use mvbind anyway for the present-p.
<Bike> if you mean to ask if something like (let ((foo (gethash ...))) (setf foo ...)) will alter the hash table, the answer is no
<Bike> you could use symbol-macrolet
<theothornhill> yeah, that was what I meant, and thought
<theothornhill> right, or multiple-value-bind?
<Bike> multiple-value-bind doesn't do it either. i mean, (multiple-value-bind (value presentp) (gethash ...) (setf value ...)) will also not alter the table
Inline has joined #commonlisp
<theothornhill> ok, too bad. So either a symbol-macrolet or just using gethash everytime I need
zxcvz has quit [Quit: Leaving]
<theothornhill> Thanks :)
<Bike> happy to be of assistance
ec has quit [Ping timeout: 276 seconds]
Jach has joined #commonlisp
ec has joined #commonlisp
perrierjouet has joined #commonlisp
Catie has quit [Quit: heading home]
<Josh_2> theothornhill: or write a macro
<theothornhill> Josh_2: I could do that, but this isn't that complicated, so I'll just do the naive thing for now at least
Devon has joined #commonlisp
tyson2 has joined #commonlisp
X-Scale` has joined #commonlisp
kuao has joined #commonlisp
X-Scale has quit [Ping timeout: 250 seconds]
amb007 has joined #commonlisp
ec has quit [Ping timeout: 276 seconds]
X-Scale` is now known as X-Scale
ec has joined #commonlisp
varjag has quit [Ping timeout: 245 seconds]
anddam has quit [Ping timeout: 256 seconds]
yewscion has quit [Ping timeout: 264 seconds]
anddam has joined #commonlisp
theothornhill has quit [Ping timeout: 245 seconds]
akoana has joined #commonlisp
aeth has quit [Ping timeout: 260 seconds]
aeth has joined #commonlisp
cosimone has joined #commonlisp
pve has quit [Quit: leaving]
gaqwas has quit [Ping timeout: 264 seconds]
cosimone has quit [Remote host closed the connection]
cosimone has joined #commonlisp
<pjb> beach: I don't think the amount of work required to make things like McCLIM unjarred to the masses to be trivial. It takes $trillion companies to make fashinable GUI (only Apple, Google and Microsoft can attempt it, and most of them still fail).
aeth has quit [Ping timeout: 265 seconds]
aeth has joined #commonlisp
cosimone` has joined #commonlisp
lexi_sparks_ has joined #commonlisp
lexi_sparks has joined #commonlisp
cosimone has quit [Ping timeout: 245 seconds]
lexi_sparks_ has quit [Ping timeout: 245 seconds]
lexi_sparks has quit [Ping timeout: 268 seconds]
lexi_sparks_ has joined #commonlisp
lexi_sparks has joined #commonlisp
Jing has quit [Remote host closed the connection]
Jing has joined #commonlisp
Bike has quit [Quit: Connection closed]