jackdaniel 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> | Pastebin: <https://plaster.tymoon.eu/> | News: ELS'22 this Monday (2022-03-21), see https://european-lisp-symposium.org
X-Scale` has joined #commonlisp
X-Scale has quit [Ping timeout: 240 seconds]
X-Scale` is now known as X-Scale
Oladon has quit [Quit: Leaving.]
Brucio-61 has quit [Ping timeout: 240 seconds]
mmk2410 has quit [Quit: ZNC - https://znc.in]
mmk2410 has joined #commonlisp
X-Scale` has joined #commonlisp
X-Scale has quit [Ping timeout: 256 seconds]
X-Scale` is now known as X-Scale
waleee has joined #commonlisp
waleee has quit [Ping timeout: 244 seconds]
Oladon has joined #commonlisp
akoana has quit [Quit: leaving]
notzmv has quit [Ping timeout: 264 seconds]
fitzsim has quit [Remote host closed the connection]
notzmv has joined #commonlisp
tyson2 has quit [Remote host closed the connection]
terrorjack has quit [Quit: The Lounge - https://thelounge.chat]
terrorjack has joined #commonlisp
mon_aaraj has quit [Ping timeout: 256 seconds]
mon_aaraj has joined #commonlisp
Oladon has quit [Quit: Leaving.]
mon_aaraj has quit [Ping timeout: 240 seconds]
mon_aaraj has joined #commonlisp
mon_aaraj has quit [Ping timeout: 240 seconds]
mon_aaraj has joined #commonlisp
pranavats has left #commonlisp [#commonlisp]
pranavats has joined #commonlisp
hineios8 has joined #commonlisp
hineios has quit [Ping timeout: 244 seconds]
hineios8 is now known as hineios
danieli has quit [Quit: Alpine Linux, the security-oriented, lightweight Linux distribution]
SR-71 has joined #commonlisp
danieli has joined #commonlisp
azimut has quit [Ping timeout: 268 seconds]
igemnace has joined #commonlisp
alvaro121_ has quit [*.net *.split]
tibfulv has quit [*.net *.split]
pok has quit [*.net *.split]
thomaslewis has quit [*.net *.split]
madnificent has quit [*.net *.split]
Colleen has quit [*.net *.split]
sukaeto has quit [*.net *.split]
x88x88x has quit [*.net *.split]
stylewarning has quit [*.net *.split]
sgithens has quit [*.net *.split]
zagura has quit [*.net *.split]
okflo_ has quit [*.net *.split]
pok has joined #commonlisp
zagura has joined #commonlisp
sgithens has joined #commonlisp
sukaeto has joined #commonlisp
pok has quit [Changing host]
pok has joined #commonlisp
alvaro121 has joined #commonlisp
tibfulv has joined #commonlisp
stylewarning has joined #commonlisp
Colleen has joined #commonlisp
madnificent has joined #commonlisp
okflo has joined #commonlisp
mgxm has quit [*.net *.split]
dbotton has quit [*.net *.split]
lonjil has quit [*.net *.split]
sirufer has quit [*.net *.split]
megeve has quit [*.net *.split]
zups has quit [*.net *.split]
neominimum has quit [*.net *.split]
sveit has quit [*.net *.split]
sirufer has joined #commonlisp
lonjil has joined #commonlisp
ttree has quit [Ping timeout: 244 seconds]
x88x88x has joined #commonlisp
zups has joined #commonlisp
dbotton has joined #commonlisp
neominimum has joined #commonlisp
megeve has joined #commonlisp
neominimum has quit [Changing host]
neominimum has joined #commonlisp
mgxm has joined #commonlisp
sveit has joined #commonlisp
Algernon69 has joined #commonlisp
dra_ has quit [Ping timeout: 276 seconds]
Cymew has joined #commonlisp
random-nick has joined #commonlisp
overclucker_ has joined #commonlisp
overclucker has quit [Ping timeout: 260 seconds]
Algernon91 has joined #commonlisp
shka has joined #commonlisp
Algernon69 has quit [Ping timeout: 276 seconds]
Th30n has joined #commonlisp
rodicm has joined #commonlisp
mixotricha has quit [Quit: Client closed]
Brucio-61 has joined #commonlisp
rodicm has quit [Ping timeout: 240 seconds]
mixotricha has joined #commonlisp
aartaka has quit [Ping timeout: 240 seconds]
causal has quit [Quit: WeeChat 3.5]
yauhsien has joined #commonlisp
aartaka has joined #commonlisp
yauhsien has quit [Ping timeout: 244 seconds]
MajorBiscuit has joined #commonlisp
TMA has quit [Ping timeout: 244 seconds]
<Josh_2> Good Morning :sunglasses:
rodicm has joined #commonlisp
rodicm has quit [Client Quit]
yauhsien has joined #commonlisp
random-nick has quit [Ping timeout: 240 seconds]
yauhsien has quit [Ping timeout: 272 seconds]
cosimone` has quit [Remote host closed the connection]
Th30n has quit [Ping timeout: 260 seconds]
cosimone has joined #commonlisp
mon_aaraj has quit [Ping timeout: 255 seconds]
mon_aaraj has joined #commonlisp
random-nick has joined #commonlisp
lisp123 has joined #commonlisp
waleee has joined #commonlisp
SR-71 has quit [Remote host closed the connection]
mon_aaraj has quit [Ping timeout: 276 seconds]
mon_aaraj has joined #commonlisp
Harag has joined #commonlisp
cage has joined #commonlisp
Harag has quit [Read error: Connection reset by peer]
Harag has joined #commonlisp
Harag` has joined #commonlisp
Harag has quit [Ping timeout: 244 seconds]
Harag` is now known as Harag
<jackdaniel> clim protocol in clim! ;) https://turtleware.eu/static/paste/65b34e0b-clim.svg
<jackdaniel> parsed directly from tex sources
<pranavats> jackdaniel: Did you use the TeX parser from AsTeR?
<jackdaniel> no, I've written an ad-hoc parser; it is not really parsing TeX; it parses CLIM spec written in TeX
<pranavats> I see.
Th30n has joined #commonlisp
mon_aaraj has quit [Ping timeout: 260 seconds]
lisp123 has quit [Remote host closed the connection]
mon_aaraj has joined #commonlisp
Algernon91 has quit [Ping timeout: 272 seconds]
Oddity has quit [Ping timeout: 240 seconds]
Algernon91 has joined #commonlisp
Algernon91 has quit [Ping timeout: 260 seconds]
monaaraj has joined #commonlisp
mon_aaraj has quit [Ping timeout: 272 seconds]
trocado has quit [Ping timeout: 244 seconds]
Algernon91 has joined #commonlisp
lisp123 has joined #commonlisp
lisp123 has quit [Ping timeout: 272 seconds]
monaaraj has quit [Ping timeout: 244 seconds]
monaaraj has joined #commonlisp
MajorBiscuit has quit [Quit: WeeChat 3.5]
MajorBiscuit has joined #commonlisp
Jach has joined #commonlisp
monaaraj has quit [Ping timeout: 268 seconds]
monaaraj has joined #commonlisp
attila_lendvai has joined #commonlisp
monaaraj has quit [Ping timeout: 260 seconds]
monaaraj has joined #commonlisp
waleee has quit [Ping timeout: 244 seconds]
yauhsien has joined #commonlisp
tyson2 has joined #commonlisp
igemnace has quit [Remote host closed the connection]
prokhor_ has joined #commonlisp
Th30n has quit [Quit: WeeChat 3.5]
waleee has joined #commonlisp
azimut has joined #commonlisp
Catie has joined #commonlisp
Cymew has quit [Ping timeout: 260 seconds]
dilated_dinosaur has quit [Ping timeout: 255 seconds]
Oladon has joined #commonlisp
jmpeax has quit [Ping timeout: 240 seconds]
Cymew has joined #commonlisp
jmpeax has joined #commonlisp
jmpeax is now known as Guest9370
Cymew has quit [Ping timeout: 244 seconds]
dilated_dinosaur has joined #commonlisp
trocado has joined #commonlisp
trocado has quit [Remote host closed the connection]
szkl has joined #commonlisp
cosimone has quit [Remote host closed the connection]
trocado has joined #commonlisp
trocado has quit [Remote host closed the connection]
ebrasca has joined #commonlisp
monaaraj has quit [Ping timeout: 240 seconds]
orestarod has joined #commonlisp
monaaraj has joined #commonlisp
saura has joined #commonlisp
tyson2 has quit [Remote host closed the connection]
saura has quit [Ping timeout: 272 seconds]
Algernon91 has quit [Ping timeout: 272 seconds]
<Josh_2> Another slow monday
Oladon has quit [Quit: Leaving.]
saura has joined #commonlisp
saura has quit [Ping timeout: 260 seconds]
monaaraj has quit [Ping timeout: 272 seconds]
monaaraj has joined #commonlisp
cosimone has joined #commonlisp
jeosol has quit [Quit: Client closed]
monaaraj has quit [Ping timeout: 260 seconds]
monaaraj has joined #commonlisp
jeosol has joined #commonlisp
tane has joined #commonlisp
tane has joined #commonlisp
tane has quit [Changing host]
mixotricha has quit [Quit: Client closed]
ttree has joined #commonlisp
shka has quit [Ping timeout: 272 seconds]
shka has joined #commonlisp
tyson2 has joined #commonlisp
Dynom_ has joined #commonlisp
Algernon69 has joined #commonlisp
Dynom_ is now known as Guest599
MajorBiscuit has quit [Ping timeout: 260 seconds]
Harag has quit [Ping timeout: 272 seconds]
ebrasca has quit [Remote host closed the connection]
Guest9370 is now known as jmpeax
remexre has quit [Ping timeout: 255 seconds]
jeosol has quit [Quit: Client closed]
remexre has joined #commonlisp
cosimone has quit [Remote host closed the connection]
tyson2 has quit [Remote host closed the connection]
Algernon69 has quit [Ping timeout: 255 seconds]
jeosol has joined #commonlisp
notzmv has quit [Ping timeout: 276 seconds]
<Shinmera> Slow day indeed. All I did coding-wise today was add the ability to select multiple items in the shop menu and sell them all at once. Not exactly a major achievement.
cosimone has joined #commonlisp
<Catie> For the player it is
<Josh_2> I have done nothing
<Josh_2> Im supposed to be MOPing around but it hasn't happened yet
<Shinmera> Sounds like you don't have an actual problem to solve
<Josh_2> I do
Andrew is now known as HaxCPU
molson_ has joined #commonlisp
molson has quit [Ping timeout: 256 seconds]
antoni has quit [Quit: WeeChat 2.8]
spec has quit [Remote host closed the connection]
molson_ has quit [Ping timeout: 272 seconds]
molson has joined #commonlisp
<jackdaniel> since the day is slow, here's a fancy question: is there a difference (assuming that foo is a boring list) between (format t "~a" foo) and (format t "(~{~a~^ ~})" foo) ;; (hint - there is!)
<Bike> uhhhh lemme see. the second one doesn't respect *print-length*?
hashfunc106d has joined #commonlisp
<jackdaniel> I think that both respect that (but if not, then that's not the case I've encountered)
<White_Flame> indentation & pretty printing in general
<jackdaniel> it happens that I've got to go now, so I will spoil the fun -- if you have a fancy stream (say a clim stream) and you wrap printing in print-object for one of the object's classes in (with-drawing-options (stream :ink color) …), then in the first case it won't work
<jackdaniel> because format concatenates the string at its own discretion, and only after that it passes the final result to the stream in question
<jackdaniel> so you are already outside of the dynamic scope of the drawing option (for example)
<hashfunc106d> so i'm trying to test out clog (https://github.com/rabbibotton/clog) with the example website (https://github.com/rabbibotton/clogpower) by following along with https://github.com/rabbibotton/clog/blob/main/WEBSERVER.md (replacing in my own domain name and whatnot). but everytime i navigate to my domain name on my browser the default apache page appears and not the common lisp app. and i'm not quite sure what i'm doing wrong?
mfiano has quit [Ping timeout: 240 seconds]
mfiano has joined #commonlisp
WBarends has joined #commonlisp
akoana has joined #commonlisp
NeoCron has joined #commonlisp
<ogamita> jackdaniel: the first deals with dotted lists. But are dotted lists boring?
tyson2 has joined #commonlisp
Oddity has joined #commonlisp
azimut has quit [Ping timeout: 268 seconds]
cage has quit [Quit: rcirc on GNU Emacs 27.1]
szos has joined #commonlisp
seok has quit [Ping timeout: 244 seconds]
<hexology> clog looks very very interesting
<hexology> hashfunc106d: this might be an apache config question and not a lisp question. you can at least check that the web app works by running it on localhost, then worry about apache config after.
<hexology> i'd offer to help, but i only know nginx. i am a youngun and i've never touched apache.
<hashfunc106d> hexology: yeah it's super interesting. & yeah i'm currently trying to mess around with the apache config stuff
<Josh_2> I've only ever used nginx as a reverse proxy for my lisp apps
<hashfunc106d> Josh_2: what does proxy and reverse proxy mean? i've been coming across those config options but i have no idea what they mean
<hexology> a "reverse proxy" is "a web server that doesn't actually serve its own data, it passes along your requests to another web server."
<Josh_2> ^
<hexology> this example apache config listens for http requests on `clogpower.com` on ports 80 and 443, and forwards all requests at path `/` to `http://127.0.0.1:8081/`
<hashfunc106d> hexology: ok, but wouldn't that just be a proxy? i don't understand how that's a "reverse" proxy
<hexology> because a typical proxy is for clients making outbound requests
<hexology> whereas a reverse proxy is for a server handling inbound requests
<hexology> at least, that's the logic behind the name as far as i know
<hashfunc106d> hexology: oh i see. thanks, that's a good explanation
<hexology> do you have an ssl cert for your domain?
monaaraj has quit [Ping timeout: 276 seconds]
<hashfunc106d> hexology: yeah, i did that yesterday
<hexology> good, so you pointed the various SSLCertificate* directives to the appropriate files?
<hashfunc106d> hexology: yeah. now i'm just trying to figure out how to get sbcl (clog) working with apache and whatnot
<hexology> actually, you said that you're just getting the standard apache start page. i don't know if this is an apache thing, but maybe there's a default config that is somehow taking precedence?
<hexology> do you need to just restart httpd?
monaaraj has joined #commonlisp
anticomputer_ has joined #commonlisp
anticomputer has quit [Ping timeout: 268 seconds]
azimut has joined #commonlisp
<hexology> this sounds like it's not related at all to sbcl. naturally you will probably have other issues after you fix this one, but you have to fix this one first :)
<hashfunc106d> so i've figured out how to not display the standard apache start page, but now i'm running into forbidden access problems. also i don't have `httpd` i'm just using the systemctl and whatnot
<hexology> what command do you use to restart apache?
Posterdati has quit [Remote host closed the connection]
<hexology> `systemctl restart httpd` or whatever you normally use is fine
<Josh_2> The SSL can be handled with certbot
<hashfunc106d> sudo systemctl restart apache2
<hexology> fair enough
<hexology> does clog have some kind of "health check" endpoint?
Posterdati has joined #commonlisp
<hexology> you can use that on the server to make sure it's running and accessible locally, before trying to connect it to apache
<hashfunc106d> sudo systemctl status <domain-name>.service is what i'm using the check the sbcl status. and so far that's been good for showing me debugging information
<hexology> that will tell you if the service is "up" from the perspective of systemctl, which maybe is good enough. it might not tell you if the service is _working_, but it's probably good enough if you followed the setup instructions
<hashfunc106d> hexology: do all of my files need to have certain permissions in order to read them over an https request?
<hexology> no, because apache isn't actually reading any of your files
<hexology> it's just forwarding the http requests
<hashfunc106d> ok thanks
<hashfunc106d> yeah i don't get it. i verified that it works locally. but now when i try it on my server, i'm getting the "Forbidden You don't have permission to access this resource." page
<hashfunc106d> when i view the status of sbcl it gives the log messages: "Listening on 0.0.0.0:8080." and "HTTP listening on : 0.0.0.0:8080" which, to me, seems like a red flag?
<hashfunc106d> like shouldn't i be listening on port 443?
<hashfunc106d> (still trying to wrap my head around networking concepts)
aartaka has quit [Ping timeout: 268 seconds]
<hashfunc106d> if i run `curl 127.0.0.1:8080` i get exactly what i expect (working correctly)
<hashfunc106d> but when i navigate to my domain name in my browser i get the forbidden page
<hashfunc106d> maybe the reverse proxy settings (that i deleted) have something to do with it
monaaraj has quit [Ping timeout: 240 seconds]
<hashfunc106d> yep that was it, the reverse proxy settings are needed. the default file now shows, but none of my lisp-coded html. but still progress!
<hashfunc106d> thanks for the help hexology & Josh_2
SunClonus has joined #commonlisp
monaaraj has joined #commonlisp
<dbotton> hashfunc106d - the message listening on 0.0.0.0 means that the clog's webserver is listening on any interface on the machine at port 8080
<dbotton> and in fact if you use your ip address for the machine and port 8080 you circumvent the proxy server (apache) and and access directly the clog server
notzmv has joined #commonlisp
<hashfunc106d> hey dbotton! clog is awesome. i'm still trying to get the hang of it. so far i've got it up and running and the `boot.html` page is being served whenever i navigate to my domain name. but none of my clog code is showing: https://pastebin.com/AG5ky0mR is there something i'm doing wrong?
Guest599 has quit [Quit: WeeChat 3.5]
<dbotton> Does it work if you got to http://yourip:8080?
<dbotton> It could be that apache is not proxying the websocket connection
<hashfunc106d> if i `curl http://127.0.0.1:8080` it serves me the boot.html page
<dbotton> curl doesn't run javascript so no websocket connection is made
<hashfunc106d> maybe i should just skip apache altogether
SunClonus has quit []
<hashfunc106d> oh ok, that makes sense
<dbotton> Try using your browser to access your CLOG app, if it works all is good CLOG/sbcl wise and your issue is your proxy
<dbotton> If you are not ready to run a webserver yet and just learning CLOG you may just want to use it locally
<dbotton> Once you are ready to deploy make sure all works bypassing the proxy first, then make sure apache or whatever proxy you are using is configured properly
<hashfunc106d> my browser just hangs when navigating to http://<my-static-ipv4-address>:8080
<dbotton> Looking at my webserver.md file I don't really say which extensions to insure are loaded for apache. That may also be part of your issue, of distro of linux makes different choices of what apache starts with
<hashfunc106d> dbotton: i got the proper modules loaded, so that's all good to go
<dbotton> great
<dbotton> Take a look a the devtool on your browser
<hashfunc106d> ok, just checked out if there were any errors and whatnot in the browser devtool. the only message there is `Navigated to https://<mydomain>.app/`. nothing about websockets, so that might be a clue
<dbotton> and you can also add to you HOMEPAGE function at the start (clog:debug-mode body) for some additional debug to show in the browser console
<hashfunc106d> yeah, same message; no additional messages showing
<dbotton> hmm you went to a http page how are you ending up on an https page, also why .app
<dbotton> perhaps change the port to something other than 8080
<dbotton> could be your server already uses the port
<dbotton> so in your initialize :port 8086 or the like
<hashfunc106d> .app is the suffix of the domain name i bought, and i think chrome treats .app domains specially; in that they require https
<hashfunc106d> i'll give that a go
<hashfunc106d> i could be wrong on that, but that's what i got from my brief research on it
<hashfunc106d> ok, changed everything to port 8081 and now getting a couple different errors/warnings
<hashfunc106d> "Failed to load resource: the server responded with a status of 502 (Proxy Error) boot.js:1"
<hashfunc106d> "Failed to load resource: the server responded with a status of 502 (Proxy Error) jquery.min.js:1"
<hashfunc106d> and some failed to load source map warnings
<hashfunc106d> i just changed it back to all use port 8080 and i now get the same errors when i switched it to use port 8081
<hashfunc106d> in other words: i started with port 8080 (no error messages), then switched to port 8081 (error messages), then switched it back to port 8080 (same error messages as port 8081)
<hashfunc106d> alright i need to take a little break. i'll be back on later. thanks for the input dbotton. i think i'm going to just try to completely bypass apache. i can learn about the nuances of that stuff later; just need to get it working for right now
hashfunc106d has quit [Ping timeout: 260 seconds]
Kingsy has joined #commonlisp
<Kingsy> The name "ASDF-USER" does not designate any package. <- anyone seen this before?
<Bike> probably indicates you don't have asdf loaded and something expects it to be loaded.
<Bike> try doing (require :asdf) before whatever you are doing.
<Kingsy> well I am doing a sbcl --load run.lisp, run.lisp is coming from https://github.com/vindarel/cl-cookieweb
<Catie> I don't suppose you have any of the `--no-*init` options specified? I can get that error if I start SBCL with `--no-userinit`
<Bike> this readme might expect you to have asdf loaded by your rc file.
<Kingsy> nope.
<Bike> (as most people do)
<Bike> does your rc file load asdf?
<Bike> with sbcl, that would be ~/.sbclrc
<Kingsy> ok so I don't have one of those.
<Bike> that'll be it then. also looking ahead, run.lisp expects quicklisp to be available.
<Bike> go ahead and install https://quicklisp.org
shka has quit [Ping timeout: 272 seconds]
<Kingsy> would this bbe something else that I would specify in sbclrc ?
<Bike> yes, but as it happens quicklisp's install process will put itself in your sbclrc for you.
<Shinmera> it doesn't, you have to manually run (ql:add-to-init-file)
<Bike> er, right.
dra_ has joined #commonlisp
<Kingsy> Shinmera: how do I load quicklisp into the repl first to run that command?
<Shinmera> (load "~/quicklisp/setup.lisp")
<Kingsy> yeah that worked.
<Kingsy> thanks for this.
ahlk has quit [Remote host closed the connection]
waleee has quit [Ping timeout: 260 seconds]
<Kingsy> hrm so more missing deps -> Component "deploy" not found, required by NIL
<Kingsy> "deploy" is some kind of module?
<Shinmera> you're encountering a known issue with quicklisp and asdf defsystem dependencies.
<Shinmera> simply quickload :deploy once
<Shinmera> after that the issue will be gone, even in future sessions.
<Kingsy> you mean something like this -> (ql:quickload "deploy) ?
dra_ has quit [Quit: Leaving]
dra has joined #commonlisp
<Kingsy> yeah that worked. different error now.
ebrasca has joined #commonlisp
<Shinmera> you're missing a quote there.
<Kingsy> yeah got it. doh
<Kingsy> next I have Don't know how to REQUIRE CL+SSL.
<Kingsy> heh I wish there was a better way to beal with these reqs
<Kingsy> haha according to google that error has NEVER been mentioned in a page crawled.. hahah
yauhsien_ has joined #commonlisp
<Catie> Oh I've run into that one, SBCL used to have it so you could REQUIRE and ASDF system, but they removed it from newer releases
yauhsien has quit [Ping timeout: 244 seconds]
<Kingsy> Catie: what was the fix?
waleee has joined #commonlisp
<Catie> In my case it was to use ASDF:LOAD-SYSTEM or QL:QUICKLOAD instead of REQUIRE. You can also (push 'asdf:load-system *module-provider-functions*) to get it back, but I feel like that might be frowned upon
ahlk has joined #commonlisp
<Kingsy> makes sense.
<Catie> (that last assumption is really just based on vibes though)
<Kingsy> yeah this works.
<Shinmera> If you weren't using require yourself, then whatever library or system you were trying to load should be patched.
<Kingsy> yeah, it was a "framework" I am messing with to help me learn lisp. I am really struggling to get started with empty files. so I want to build on something.
<Kingsy> so I'll make a PR for it.
<Shinmera> Practical Common Lisp is very project-oriented, in case you didn't know about it yet.
<Kingsy> what do you mean by that?
<Shinmera> And otherwise, I can also recommend my own Radiance tutorial: https://github.com/Shirakumo/radiance-tutorial/blob/master/Part%200.md
<Shinmera> (radiance being a web framework)
<Shinmera> Kingsy: well, the book is practical, so it teaches things mostly by way of small projects that you implement alongside the book.
<Kingsy> Shinmera: by book do you mean this tutorial you linked?
<Kingsy> because it was a web framework I was looking for. is this the way to go?
<Shinmera> no, I mean the book called Practical Common Lisp. https://gigamonkeys.com/book/
<Kingsy> ah yeah I have looked through that. I struggled with it. but I'll try again as IO work with something more practical
<Kingsy> Shinmera: is this considered the standard web framework to work with? or aare there other good choices?
kaskal- is now known as kaskal
<aeth> I think there are as many web frameworks as there are Lispers who do web things
<aeth> I think corporate users are what gets standardization in stuff like, say, Python (and even there, there are at least two major frameworks)
fitzsim has joined #commonlisp
trocado has joined #commonlisp
trocado has quit [Client Quit]
trocado has joined #commonlisp
<contrapunctus> Kingsy: this might be the closest approximation you can get for "standard" resources in CL - https://github.com/CodyReichert/awesome-cl
<contrapunctus> (It lists Radiance FWIW. Among others.)
mrcom has quit [Remote host closed the connection]
mrcom_ has joined #commonlisp
mrcom_ has quit [Remote host closed the connection]
mrcom_ has joined #commonlisp
<contrapunctus> Is it a terribly bad idea to make the settings of an application into a single `settings` class whose only instance is bound to a `*settings*` special variable?
<aeth> contrapunctus: I do that but with structs because I'm a heretic
akoana has quit [Quit: leaving]
<aeth> (or, rather, structs make sense if you have typed slots, otherwise not so much)
<contrapunctus> aeth: I see...I figured you meant that struct slots are type checked, but turns out the type checking is implementation-independent, just like with class slots. ¯\_(ツ)_/¯
<aeth> contrapunctus: yes, but defclass is particularly bad at type checking because the default optimization levels of SBCL ignore them so a majority of installs is going to ignore them
<aeth> if you want 100% checking you have to write your own metaclass
<contrapunctus> ._.
<aeth> so now it becomes (1) do you want 100% checking with a slow metaclass that won't pass the type information to your program or (2) do you want sometimes checking, in which case do you want the one that will pass the type information?
<aeth> a bit of a mess
<aeth> not as much of a mess as more complicated data structures, e.g. how do you have an array that has a more complicated type than double-float, single-float, bit, (unsigned-byte n) for some common n, etc., that implementations actually support?
<aeth> at least with typed lists you can build them from typed conses and conses are simple
* contrapunctus wonders if it's CDR writing time
<aeth> contrapunctus: the fun part about the defclass problem is that a lot of people only develop with higher debug optimization levels, so they aren't even aware of the lack-of-checking-by-default defclass issue in SBCL
<aeth> contrapunctus: the problem if you want arbitrary data structures in typed arrays is that it sort of breaks the semantics of the language if done naively.
<aeth> contrapunctus: because bit, single-float, double-float, (unsigned-byte 8), character, etc., aren't just easy and useful to optimize (and mandatory for bit)... they're immutable
<aeth> And a lot of the time, you can just do struct-of-arrays instead of array-of-structs to get around that where you need performance, with numerical code
tane has quit [Quit: Leaving]
orestarod has quit [Ping timeout: 276 seconds]
NeoCron has quit [Remote host closed the connection]
<aeth> contrapunctus: But I'd say that the lack of "typed collections" is a very good candidate for language improvement, personally, if you did want to put the work into a CDR
<aeth> You would have to be aware that there's types-for-performance and types-for-reliability, though, and they can have differing concerns.
<contrapunctus> aeth: lol, I'm too new to CL for that. It'd have to be someone else.
<aeth> it goes back to the earlier two choices. defstruct? types-for-performance. defclass-with-metaclass? types-for-reliability.
<aeth> If you're doing a graphics library your *settings* might want to have a struct because it'll have things like width and height
<aeth> If you're doing a web library, write that metaclass
<aeth> This is also why simultaneously this channel says you almost never want to use structs (which is true), yet the internals of something like SBCL is full of them (because there are exceptions to every rule)
<aeth> in general, you'd want your settings class to check types because it's arbitrary user input that could break the assumptions of your code
<aeth> imo
waleee has quit [Ping timeout: 272 seconds]
dra has quit [Ping timeout: 276 seconds]
waleee has joined #commonlisp
<aeth> when the user breaks the assumptions of your code, you tend to get a random NIL error several files away from where the NIL got generated ime
<contrapunctus> lol, yes
<aeth> (if anyone is curious, it's because NIL is the default return of stuff like COND so if you don't exhaustively handle everything everywhere then eventually you'll get an unexpected, impossible branch)
<aeth> (if the user gives you bogus data, I mean)
<aeth> (and hash tables will happily store that and give it to some later part of the program that doesn't expect NIL)
seok has joined #commonlisp
<aeth> A possible way to avoid this without a metaclass is to hide *settings* as a symbol that's not exported (if they modify it directly, it's on them) and then only allow it to be modified through your own accessors (but now you're basically just doing the checking by hand)
<contrapunctus> That was sort of the plan. It's acceptable for a graphical application, I guess?
<aeth> I like having one *settings* because it's object oriented
<aeth> instead of having to keep track of a dozen variables that you then have to export from the package and you might want to rename etc. etc.
<aeth> it also lets you have a settings.lisp where the settings object is defined while still having *settings* in a different location
<aeth> a cleaner *settings* because all of the defaults are in settings.lisp... and if graphical, there's a lot of defaults
<contrapunctus> «instead of having to keep track of a dozen variables that you then have to export from the package and you might want to rename etc. etc.» Exactly!
Catie has quit [Quit: heading out]
molson_ has joined #commonlisp
molson has quit [Read error: Connection reset by peer]
Fade has quit [Ping timeout: 264 seconds]
Fade has joined #commonlisp
monaaraj has quit [Ping timeout: 272 seconds]
monaaraj has joined #commonlisp
waleee has quit [Ping timeout: 272 seconds]
waleee has joined #commonlisp
Lord_of_Life has quit [Ping timeout: 276 seconds]
Lord_of_Life has joined #commonlisp
ad-absurdum has joined #commonlisp
gjvc has quit [Quit: leaving]
gjvc has joined #commonlisp
yauhsien_ has quit [Remote host closed the connection]
<seok> there's a few options for a websocket server, any recommendations?
Colere has quit [Ping timeout: 256 seconds]
yauhsien has joined #commonlisp
Colere has joined #commonlisp
yauhsien has quit [Remote host closed the connection]
molson has joined #commonlisp
yauhsien has joined #commonlisp
molson_ has quit [Ping timeout: 244 seconds]
waleee has quit [Ping timeout: 272 seconds]
mixotricha has joined #commonlisp
yauhsien has quit [Ping timeout: 240 seconds]
waleee has joined #commonlisp