phoe changed the topic of #lisp to: Common Lisp, the #1=(programmable . #1#) programming language | <http://cliki.net/> <https://irclog.tymoon.eu/freenode/%23lisp> <https://irclog.whitequark.org/lisp> <http://ccl.clozure.com/irc-logs/lisp/> | SBCL 1.4.16, CMUCL 21b, ECL 16.1.3, CCL 1.11.5, ABCL 1.5.0
robdog has joined #lisp
metallicus has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
<fiddlerwoaroof> I found a spotlight metadata importer for lisp files on lemonodor, and polished it up a bit for modern macOS
<fiddlerwoaroof> It's a bit of a pain to get working, but it's pretty useful for finding definitions on your mac.
beach has quit [Ping timeout: 258 seconds]
igemnace has joined #lisp
notzmv has quit [Ping timeout: 244 seconds]
Oladon has quit [Quit: Leaving.]
Lord_of_Life_ has joined #lisp
Lord_of_Life has quit [Ping timeout: 245 seconds]
Lord_of_Life_ is now known as Lord_of_Life
kbtr has joined #lisp
metallicus has quit [Ping timeout: 245 seconds]
keep_learning_M has quit [Quit: This computer has gone to sleep]
keep_learning_M has joined #lisp
dale has joined #lisp
akoana has joined #lisp
rumbler31 has joined #lisp
didi` has joined #lisp
didi` is now known as didi
rumbler31 has quit [Ping timeout: 246 seconds]
Fare has quit [Ping timeout: 245 seconds]
keep_learning_M has quit [Quit: This computer has gone to sleep]
keep_learning_M has joined #lisp
akoana has left #lisp ["Leaving"]
thijso has quit [Ping timeout: 245 seconds]
thijso has joined #lisp
charh has quit [Ping timeout: 255 seconds]
quazimodo has quit [Ping timeout: 255 seconds]
quazimodo has joined #lisp
Khisanth has quit [Ping timeout: 255 seconds]
xkapastel has quit [Quit: Connection closed for inactivity]
quazimodo has quit [Ping timeout: 245 seconds]
quazimodo has joined #lisp
ym555 has quit [Ping timeout: 245 seconds]
ym555 has joined #lisp
Kevslinger has quit [Quit: Connection closed for inactivity]
charh has joined #lisp
Khisanth has joined #lisp
quazimodo has quit [Ping timeout: 255 seconds]
Essadon has quit [Quit: Qutting]
quazimodo has joined #lisp
Aruseus has quit [Read error: Connection reset by peer]
keep_learning_M has quit [Quit: This computer has gone to sleep]
keep_learning_M has joined #lisp
torbo has joined #lisp
keep_learning_M has quit [Client Quit]
dddddd has quit [Remote host closed the connection]
keep_learning_M has joined #lisp
torbo has quit [Remote host closed the connection]
keep_learning_M has quit [Quit: This computer has gone to sleep]
keep_learning_M has joined #lisp
Oladon has joined #lisp
wanz has joined #lisp
Fare has joined #lisp
robdog has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
wanz has quit [Quit: wanz]
wanz has joined #lisp
jealousmonk has joined #lisp
keep_learning_M has quit [Quit: This computer has gone to sleep]
jealousmonk has quit [Quit: Leaving]
notzmv has joined #lisp
keep_learning_M has joined #lisp
holycow has joined #lisp
akoana has joined #lisp
didi has quit [Ping timeout: 244 seconds]
didi has joined #lisp
FareTower has joined #lisp
Fare has quit [Quit: Leaving]
FareTower is now known as Fare
polezaivsani has quit [Ping timeout: 246 seconds]
didi has quit [Ping timeout: 246 seconds]
Oladon has quit [Quit: Leaving.]
didi has joined #lisp
orivej has quit [Ping timeout: 240 seconds]
wanz has quit [Quit: wanz]
FreeBirdLjj has joined #lisp
FreeBirdLjj has quit [Ping timeout: 268 seconds]
beach has joined #lisp
<beach> Good morning everyone!
wanz has joined #lisp
dale has quit [Quit: dale]
lavaflow_ has quit [Read error: Connection reset by peer]
wanz has quit [Quit: wanz]
wanz has joined #lisp
impulse has joined #lisp
charh has quit [Ping timeout: 246 seconds]
shka_ has joined #lisp
impulse has quit [Ping timeout: 246 seconds]
wigust has joined #lisp
wigust- has quit [Ping timeout: 255 seconds]
ym555 has quit [Ping timeout: 268 seconds]
robdog has joined #lisp
flazh has quit [Ping timeout: 245 seconds]
robdog has quit [Ping timeout: 252 seconds]
cranes has quit [Ping timeout: 246 seconds]
cranes has joined #lisp
Fare has quit [Ping timeout: 246 seconds]
flazh has joined #lisp
Inline has quit [Quit: Leaving]
keep_learning_M has quit [Quit: This computer has gone to sleep]
keep_learning_M has joined #lisp
holycow has quit [Quit: Lost terminal]
vlatkoB has joined #lisp
shka_ has quit [Ping timeout: 250 seconds]
rozenglass has quit [Ping timeout: 245 seconds]
impulse has joined #lisp
akoana has left #lisp [#lisp]
smasta has quit [Ping timeout: 268 seconds]
keep_learning_M has quit [Quit: This computer has gone to sleep]
milivoj has joined #lisp
makomo has joined #lisp
<makomo> morning
keep_learning_M has joined #lisp
makomo has quit [Ping timeout: 250 seconds]
jprajzne has joined #lisp
makomo has joined #lisp
makomo has quit [Ping timeout: 240 seconds]
makomo has joined #lisp
JohnMS_WORK has joined #lisp
lisptom has quit [Ping timeout: 255 seconds]
lemoinem has quit [Ping timeout: 240 seconds]
lemoinem has joined #lisp
makomo has quit [Ping timeout: 245 seconds]
Achylles has joined #lisp
makomo has joined #lisp
shrdlu68 has joined #lisp
makomo has quit [Ping timeout: 250 seconds]
makomo has joined #lisp
_whitelogger has joined #lisp
makomo has quit [Ping timeout: 246 seconds]
<splittist> morning
<no-defun-allowed> Morning splittist
<no-defun-allowed> So, please tell me if this is too far fetched from Common Lisp talk, but what do people call defining features of a Lisp? I answered on /r/lisp, people seemed to agree, but then they changed when I told someone their project wasn't a Lisp.
<no-defun-allowed> (I answered that lambdas, symbols and conses are the fewest types you'd need, and macros, and thus homiconicity, and having a complete development system at runtime are important tools in a Lisp too.)
<jackdaniel> no-defun-allowed: some people will tell, that what defines Lisp is the fact whenever programming language is a descendent of LISP 1.5 (direct or indirect), others will list macros, closures, first class functinos yada yada, next person will say "clos" ,-)
<no-defun-allowed> Heh.
<jackdaniel> my point is that discussing it is pointless due to great disagreement what "lisp" is – is scheme a lisp? imho – sure; many people (both cl and scheme) will disagree
<no-defun-allowed> Of course. Is there anything people can agree on though?
<jackdaniel> I don't know, some people take it strictly religiously, and I shy away from religious disputes (to avoid getting burned at stake)
<no-defun-allowed> Cause someone posted something I thought was not a Lisp on /r/Lisp, and people did not seem to agree with that.
<no-defun-allowed> I see, that's pretty fair. No stress.
<no-defun-allowed> I'm just cranky that r/Lisp has stopped being an echo chamber I agree with, I suppose.
<jackdaniel> ah, so you are the religious folk ,)
<jackdaniel> have your opinion and let others have theirs
<no-defun-allowed> Maybe? I just saw web-assembler with dynamic typing (and I'm not sure about that, OP chose to write it in Rust for some god-awful reason so I can't compile it).
<jackdaniel> fact that we are lisp suckers does not mean rust is not a good programming language. /me shyes away from this discussion.
<no-defun-allowed> Sure, I don't mean to argue about that.
* no-defun-allowed also awkwardly drops the topic
schweers has joined #lisp
Zaab1t has joined #lisp
makomo has joined #lisp
Zaab1t has quit [Client Quit]
shka_ has joined #lisp
makomo has quit [Ping timeout: 245 seconds]
q3d has joined #lisp
robdog has joined #lisp
makomo has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
robdog has joined #lisp
makomo has quit [Ping timeout: 246 seconds]
space_otter has quit [Remote host closed the connection]
robdog has quit [Ping timeout: 252 seconds]
makomo has joined #lisp
makomo has quit [Ping timeout: 250 seconds]
heisig has joined #lisp
varjag has joined #lisp
marcoecc has joined #lisp
keep_learning_M has quit [Quit: This computer has gone to sleep]
physpi has quit [Ping timeout: 264 seconds]
n3k0_t has quit [Quit: WeeChat 2.3]
Lord_of_Life has quit [Ping timeout: 245 seconds]
physpi has joined #lisp
milivoj has quit [Quit: milivoj]
TMA has joined #lisp
Lord_of_Life has joined #lisp
xkapastel has joined #lisp
nalkri has joined #lisp
wanz has quit [Quit: wanz]
techquila has quit [Ping timeout: 240 seconds]
notzmv has quit [Ping timeout: 246 seconds]
matijja has joined #lisp
q3d has quit [Ping timeout: 256 seconds]
Achylles has quit [Ping timeout: 258 seconds]
makomo has joined #lisp
dddddd has joined #lisp
makomo has quit [Ping timeout: 244 seconds]
robdog has joined #lisp
sakalli has joined #lisp
robdog has quit [Ping timeout: 240 seconds]
Achylles has joined #lisp
hhdave has joined #lisp
lavaflow_ has joined #lisp
scymtym has joined #lisp
jmercouris has joined #lisp
<jmercouris> Does anyone have experience with deploy a lisp web server and updating it while it is running?
<no-defun-allowed> I've run a web server with swank running.
binghe has joined #lisp
<jmercouris> When I'm in a Slime REPL session I just C-c C-c and continue on my merry way, but I was wondering if it would be possible to have the same effect by uploading new code to the webserver and it having it automatically eval or something
<jmercouris> no-defun-allowed: Right, that's one obvious approach, and that *would* work, you could even connect to it remotely
<no-defun-allowed> It works as well as you'd expect, you just have to use slime-connect instead of slime to start the Emacs client.
<shka_> jmercouris: it is probabbly possible
<jmercouris> however swank does have some performance drawbacks which I do not wish to go into
<jmercouris> mostly related to I/O
<shka_> jmercouris: oh common
<no-defun-allowed> I don't think it should impact the rest of the server.
<shka_> it won't
<jackdaniel> C-c C-c is good for quick hacks
<jmercouris> shka_: most definitely it is, I am just thinking of how to do it
<jackdaniel> if it is a real server it may crash at some point of time and process may get restarted
<jackdaniel> then you lose all your glamour fixe
<jackdaniel> fixes*
<jmercouris> yes that is true
<jmercouris> unless you had your lisp process daemonized
<shka_> jmercouris: run swank and be merry
<jmercouris> and you were uploading the new versions of code the whole time to the server
<jmercouris> so that when the system does reload itself, it has all the new definitions
q3d has joined #lisp
<jackdaniel> jmercouris: even if it is daemonized it may crash and get restarted by the daemon manager
<jmercouris> right, and that's okay, because it will load the new source files
<jmercouris> I guess that depends on how you daemonize
<jmercouris> if you make a lisp image and die, or if you are loading the system in the daemon
<jackdaniel> I'm confused, I thought I'm talking about flaws of calling C-c C-c from slime-connect
<jmercouris> Yes, that is what we are talkign about
<jmercouris> but I had put a little caveat above
<jackdaniel> then how would it load new source files upon restart if you just do C-c C-c? where are said files?
<jmercouris> which was, in addiiton ot C-c C-c from Slime Connect, you also upload new versions of the functions/files to the server upon which you are making these hotfixees
themsay has joined #lisp
<jmercouris> said source files are located on the remote server, which you synchronize with something like RSYNC
<jmercouris> you leave swank as no defun said, connect to it, and C-c C-c new definitions at your whim
orivej has joined #lisp
<jmercouris> if that doesn't make sense, I can start from a blank and explain anew
<jackdaniel> I don't understand why do you need swank if you upload files anyway
<jmercouris> because, if you are uploading files, the Lisp image in memory will not change
<jackdaniel> (i.e you may monitor directory with "fixes" and if new file happens to be there you simply load it)
<jmercouris> yeah that's what I'm talking about
<jmercouris> that seems much better than Swank
<jmercouris> has anyone experience doing that specifically?
<jmercouris> and what about loading files with defsystem forms in them, that will inevitably lead to trouble
<shka_> jmercouris: i do have some expirience, but you must have plan B in case things go south
<shka_> which is usually a quick restart
<jmercouris> hence, why I was suggesting a hybrid approach, which is 1. swank and reload functions as necessary, export symbols etc, whatever you need to, 2. all the changes you make, also make to the source and upload them to the server 3. such that when the server crashes it will load the correct, new source
<jmercouris> so this is like an extreme form of continuous deployment, with 0 downtime
<jackdaniel> it is not extreme
<jmercouris> I'm just thinking about how this could be done in a production environment
<jmercouris> I think its extreme
<jackdaniel> common lisp has been designed to allow that
<jmercouris> I couldn't see this work in any other language
<jmercouris> or implementation of a language*
<jackdaniel> you have change-class, compiler on board and many more tools to deal with live updates
<surrounder> jmercouris: can imagine smalltalk working the same way
<jmercouris> okay fine, it is not extreme to you or me, but in the web community, the idea is extreme
<jmercouris> surrounder: can you imagine smalltalk being used in a production web server?
<surrounder> why not?
<jmercouris> I am just asking, I don't know anything about smalltalk
<no-defun-allowed> Yeah, it's doable.
<shka_> jmercouris: it was done
<jmercouris> what specifically?
<no-defun-allowed> There's the Seaside framework.
<jmercouris> small talk as a web server backend?
<jmercouris> oh right that whole seashell thing
<shka_> yes
<jmercouris> with the lighthouse
<shka_> jmercouris: anyway, whatever you do, ensure two things
<shka_> make sure that you can validate thate update went ok
<shka_> make sure that you can fix stuff if validation failed
Zaab1t has joined #lisp
<jmercouris> shka_: that's an interesting thought, you could have live rollbacks
<jmercouris> you could literally just redefine functions live
<shka_> technically it should be possible to do it essentially always
<shka_> but!
<jmercouris> however your database could be in a bad state
wanz has joined #lisp
<jmercouris> since the database is... stateful
<shka_> never underestimate potential of human fuckup
<jmercouris> I do not
<shka_> good :-)
<jmercouris> I made a catastrophic failure myself earlier this week
<jmercouris> assumed the stripe API accepted currency in float amounts, but it is integer
<shka_> also, be quiet, you may summon beach to talk about first class envs :D
<shka_> yeah, so stuff like that
<shka_> i also think that doing this via swank is way to go
<jmercouris> so the overhead of a swank server is not too much in your opinion?
<shka_> but i am not an expert
<jmercouris> I think it is, which is why I was asking the question
<jmercouris> that was the first thing that came to mind
<shka_> imho overhead of swank is tiny
<jmercouris> it also feels like a great security vulnerability
<shka_> swank?
<no-defun-allowed> A swank server has zero overhead (except a listening thread) usually.
<jmercouris> though I guess someone would need to be on the server
<shka_> swank is not secure at all
<no-defun-allowed> Oh, you need to port forward using SSH to get in.
<jmercouris> at which point, everything is compromised anyways
Zaab1t has quit [Client Quit]
<jmercouris> however, I imagine most hackers are not experienced in Lisp
<shka_> that's why you don't bind it on anything but loopback
<jmercouris> and will just go for the database anyways
<no-defun-allowed> I don't remember the invocation of SSH, but swank just won't take connections from outside localhost from memory.
<jmercouris> yeah, you could do that as well in the swank rc file or whatever it is called
<shka_> jmercouris: just don't bind swank socket to network interface,
<shka_> use ssh tunnel
<jmercouris> I think it is .swank.lisp or so
<jmercouris> shka_: so you've done this yourself in a production environment?
<jmercouris> did you have success? is this something I should consider?
<jmercouris> no-defun-allowed: a listening thread is a lot of interrupts
<jmercouris> bordeaux threads, are they lightweight threads or system processes? or is it OS dependent?
<no-defun-allowed> Why would it interrupt if there is nothing to do?
<jmercouris> no-defun-allowed: something somewhere is polling, there is no "listening"
<jmercouris> but maybe it is too trivial to care
<schweers> jmercouris: why is there no such thing as “listening”?
<no-defun-allowed> (BT wraps over your implementation's threads. SBCL uses OS threads, but I hear ECL uses green threads.)
<jackdaniel> you hear wrong
<no-defun-allowed> I think that's the OS's problem.
<jackdaniel> and jmercouris what made you make such (untrue) statement with such certainity?
<jmercouris> jackdaniel: if you are going to start talking about traps and interrupts and claim that that is listening, then we will have to disagree
<no-defun-allowed> The pattern for a socket server is usually to wait for SOCKET-ACCEPT, then spawn a thread.
<jackdaniel> I'm talking about swank-server listening for new connections?
<jmercouris> and this has no cost to listen? must it not check every so often if there is a message available somewhere?
<no-defun-allowed> A server spends most of its time waiting for SOCKET-ACCEPT, which can just be a little wrapper for the C function which waits.
<jmercouris> which consumes CPU time
<no-defun-allowed> Pretty much none, it's the kernel's problem now.
<jmercouris> there is no argument about this
<jmercouris> you can say this is an OS level problem, but it is still a consumption of resources
<jmercouris> anyways I also stated above "maybe it is too trivial to care"
<no-defun-allowed> There is an argument, since accept is blocking, so it's out of your control.
<jackdaniel> if you say with certainity that waiting for a connection is "polling on the cpu" then I think I have nothing to say
<schweers> jmercouris: resources yes, but why do you think this consumes CPU time or is polling?
<jmercouris> of course this is implementation dependent, but let's consider two cases, of a simple Unix machine
<no-defun-allowed> It's marginally more work for your kernel's scheduler to remember to run your server thread.
<jmercouris> one has Port XYZ open and an application listening on that port, the other has no ports open
<jmercouris> which one is consuming more resources? which one is periodically checking that port for messages?
wanz has quit [Quit: wanz]
* jackdaniel is going to pass on these spoils of wisdom, later \o
<jmercouris> lol
<jmercouris> don't condescend
<schweers> jmercouris: technically, listening on a port consumes kernel resources. But this does not mean that the kernel is polling anything. Let alone userspace.
<jmercouris> schweers: okay, so let's get this straight
<no-defun-allowed> Does it bother you that much?
makomo has joined #lisp
<no-defun-allowed> At this point, it'd be more effective to rewrite your program in assembler.
<jmercouris> you believe that an interrupt is *actually* simply an interrupt, and that there didn't have to be a check somewhere on the hardware?
<jmercouris> that it doesn't have some hardware loop or clock or whatever on some device to check?
<jmercouris> for example, do you think a mouse consumes no extra CPU simply by being plugged in?
<jmercouris> I mean, they are both IO devices
<schweers> In hardware, that’s the point. Not CPU hardware
<schweers>
<jmercouris> okay, here is where I was too ambiguous
<jmercouris> I was using the word CPU as an alias for computer
<jmercouris> rather than simply meaning the processor
kushal has quit [Remote host closed the connection]
<jmercouris> and that is where this misunderstanding has arisen from
<schweers> Well, the C does stand for Central ;)
kushal has joined #lisp
<jmercouris> that does, and I have been imprecise!
<schweers> Also, I used the word resource to refer to things like open files, open ports, etc.
<jmercouris> Apologies for the confusion!
<no-defun-allowed> So, back to lispland, the difference between running swank with no clients and not running swank is minimal.
<schweers> I’d call it immeasurable.
<no-defun-allowed> Also, SWANK consumes memory, so you'll have longer GC pauses maybe. Does it still matter?
<schweers> jmercouris: I’m glad we could resolve this misunderstanding :)
<jmercouris> "maybe it is too trivial to care" :D
<no-defun-allowed> Have you got a CL implementation on your Commodore PET or something?
<jmercouris> schweers: I appreciate your positive attitude!
<jmercouris> I am also glad about this
kbtr has quit [Quit: leaving]
<jmercouris> and I have learned a lesson I will continue to learn, be more precise
kbtr has joined #lisp
makomo has quit [Ping timeout: 268 seconds]
<shka_> jmercouris: swank simply offers to much for a little
<shka_> jmercouris: i used swank on production server
<shka_> it worked ok, but i managed to srew up because of my error
<jmercouris> shka_: and were you satisfied with the experience?
<jmercouris> oh I see
<jmercouris> that is the danger isn't it
<jmercouris> you can very easily mess everything up
<jmercouris> what kind of server were you on?
<shka_> yeah, you need to take that into account
<shka_> what do you mean?
<jmercouris> I wonder if one could make a nice little program that takes a ZFS snapshot before making your changes in case everything goes awry
<jmercouris> simply roll back to ten seconds ago, and re-evaluate the old function versions
<jmercouris> shka_: what OS and file system were you using?
<jmercouris> how was the Lisp Process running?
<jmercouris> could you elaborate on your set-up?
<jmercouris> I am using FreeBSD servers running ZFS
<shka_> jmercouris: i was running on linux with ext4
<shka_> no snapshots
<jmercouris> living a dangerous life :D
<shka_> not that bad
<jmercouris> however even if one does take snapshots, database transactions could still be in memory
<jmercouris> so you would have to flush all of them before taking the snapshot
<jmercouris> maybe you could do 1 second deployment hotfixes
wanz has joined #lisp
<shka_> anyway, i didn't optimized whole process perfectly
<shka_> but it wasn't critical service, if it gets down for a minute or so it is fine
charh has joined #lisp
<jmercouris> I see
<jmercouris> well, thanks for sharing your experience
<jmercouris> I'll see what I can do
<shka_> jmercouris: thing is, i am pretty sure you should start with swank
<jmercouris> Yes, I will try it
<shka_> ok cool
<shka_> furthermore
<shka_> threads!
<jmercouris> I would like to think about the bigger picture of how this will fit into a deployment/updater
<jmercouris> what about threads?
robdog has joined #lisp
<jmercouris> that's actually interesting, so a bordeaux thread, contains all the state of the main image? or?
<jmercouris> I never thought that much about threads in Lisp
<aeth> I wouldn't describe swank as zero overhead like no-defun-allowed said, but I would say that if you wanted less overhead you'd probably have to write it entirely by yourself.
<shka_> ok, so issue is that i am pretty sure that redefining method in sbcl is no 100% thread safe
<jmercouris> right, that's what I was hinting at, but did not want to assume
<jmercouris> so I'm imagining some operation in thread A calling a function, and thread B calling a function, and redefining that function could have unexpected results
<jmercouris> there are timing issues, so maybe you do need to freeze the system
<jackdaniel> bordeaux-threads is a compatibility layer for threading primitives present on underlying implementation (for instance sbcl). usually threading is implemented as operating system threads (i.e posix threads) with shared process memory
<jmercouris> maybe you need a function called like "lock-system" that literally just locks the system so you can redfine things in safety
<shka_> i got no method found few times when doing that
<jmercouris> that would make sense
<jmercouris> if each client is a new thread or whatever, it may not be *too* big a deal, I guess it depends on how defensive your code is
<shka_> not sure what the perfect solution is, but i wanted to warn you
<jmercouris> a couple of "internal server errors" isn't the end of the world for a few people
robdog has quit [Ping timeout: 240 seconds]
<jmercouris> so usually posix threads
<jmercouris> but not necessarily, seems there are few guaranteees
<jmercouris> this is a tricky tricky problem! much trickier than I initially thought
<jackdaniel> if you are concerned about system initial tables it is compilers memory to protect them with locks
<jackdaniel> if you always want to have the newest function called despite the compilation unit, declare it notinline
<jackdaniel> that's all there is to it
<jmercouris> hmm
<jmercouris> I will have to read about this
<jackdaniel> s/initial/internal/
<jackdaniel> s/compilers memory/compiler's responsibility/
ym555 has joined #lisp
robdog has joined #lisp
makomo has joined #lisp
rozenglass has joined #lisp
<jmercouris> so the s/value/substitution, I know it works in VI, is it a general thing in other programs?
<jmercouris> why don't we for example, on this channel, type M-% "xyz" "zyx"?
robdog has quit [Ping timeout: 252 seconds]
makomo has quit [Ping timeout: 246 seconds]
robdog has joined #lisp
trocado has quit [Ping timeout: 245 seconds]
<edgar-rft> s/<pattern>/<replacement> is the standard syntax of sed
<edgar-rft> also compare s/xyz/zyx with:
<edgar-rft> M-%
<edgar-rft> Query replace xyz with: zyx
<edgar-rft> Query replace: xyz
<edgar-rft> Replacd 0 ocurrences
robdog has quit [Ping timeout: 252 seconds]
makomo has joined #lisp
<jmercouris> what is the elisp string replacement function?
<jmercouris> I don't know any elisp
<jackdaniel> --> #emacs
<jmercouris> maybe we could use that instead
<jmercouris> I'm not asking seriously, it's just banter
<jackdaniel> --> #lispcafe
<jmercouris> lol
robdog has joined #lisp
makomo has quit [Ping timeout: 268 seconds]
matijja has quit [Ping timeout: 255 seconds]
robdog has quit [Ping timeout: 252 seconds]
Fare has joined #lisp
makomo has joined #lisp
robdog has joined #lisp
makomo has quit [Ping timeout: 245 seconds]
robdog has quit [Ping timeout: 240 seconds]
binghe has quit [Quit: ChatZilla 0.9.93 [SeaMonkey 2.49.4/20180711181801]]
robdog has joined #lisp
themsay has quit [Read error: Connection reset by peer]
themsay has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
tr4zodone has joined #lisp
themsay has quit [Read error: Connection reset by peer]
themsay has joined #lisp
tr4zodone has quit [Read error: Connection reset by peer]
robdog has joined #lisp
Lord_of_Life_ has joined #lisp
Lord_of_Life has quit [Ping timeout: 246 seconds]
robdog has quit [Ping timeout: 252 seconds]
m00natic has joined #lisp
atgreen_ has quit [Read error: Connection reset by peer]
Lord_of_Life_ is now known as Lord_of_Life
svillemot has quit [Quit: ZNC 1.6.5+deb1+deb9u1 - http://znc.in]
svillemot has joined #lisp
matijja has joined #lisp
wxie has joined #lisp
Essadon has joined #lisp
milivoj has joined #lisp
Arcaelyx has joined #lisp
xkapastel has quit [Quit: Connection closed for inactivity]
im0nde_ has joined #lisp
im0nde has quit [Ping timeout: 246 seconds]
Arcaelyx has quit [Ping timeout: 246 seconds]
wxie has quit [Ping timeout: 252 seconds]
Bike has joined #lisp
<gendl> good morning everyone
polezaivsani has joined #lisp
francogrex has joined #lisp
<francogrex> Hi, is there a way to get document attributes (creating date, etc) without osicat, but just with regular sb-posix or something else?
milivoj has quit [Ping timeout: 246 seconds]
<dlowe> sb-posix:stat should work
* jackdaniel is not aware of ways which doesn't involve ffi
* jackdaniel is now aware of ways which doesn't involve ffi
<dlowe> (inspect (sb-posix:stat "/usr/")) works
<dlowe> :) It's still ffi
<dlowe> just done for you
<jackdaniel> if its in the core it doesn't count
Kevslinger has joined #lisp
Josh_2 has quit [Read error: Connection reset by peer]
warweasle has joined #lisp
<francogrex> dlowe: great, yes it works
<francogrex> ctime, CTIME: 1546867620 for example, is not the lisp universal-time, what is it?
<dlowe> it's the seconds since unix epoch
<dlowe> which differs from universal time
makomo has joined #lisp
<dlowe> it's a constant, though
Fare has quit [Ping timeout: 250 seconds]
<francogrex> ok, and to get that as decoded time, i suppose there is no ready function? (tentative sneaky question)
robdog has joined #lisp
<dlowe> Just add 2208988800
sjl_ has joined #lisp
<dlowe> the lisptips author could have just used eval-when to evaluate the encode-universal-time on load
makomo has quit [Ping timeout: 245 seconds]
robdog has quit [Ping timeout: 252 seconds]
dale_ has joined #lisp
dale_ is now known as dale
LiamH has joined #lisp
random-nick has joined #lisp
<francogrex> ok. thanks.
francogrex has quit [Quit: ERC (IRC client for Emacs 25.3.1)]
makomo has joined #lisp
makomo has quit [Ping timeout: 245 seconds]
Arcaelyx has joined #lisp
FreeBirdLjj has joined #lisp
<beach> Hello gendl.
<Xach> dlowe: sbcl has been updated since i wrote that.
<Xach> You can also write #.(char-code #\a) but that is an offense to decency
smasta has joined #lisp
<dlowe> Xach: :)
<Xach> k.d. lang, compiler engineer, sings her hit "constant folding"
<_death> since both the unix epoch and the universal time epoch are fixed, defconstant works
xkapastel has joined #lisp
ym has quit [Remote host closed the connection]
smasta has quit [Ping timeout: 246 seconds]
wanz has quit [Quit: wanz]
jfb4 has quit [Ping timeout: 250 seconds]
makomo has joined #lisp
Inline has joined #lisp
makomo has quit [Ping timeout: 250 seconds]
JohnMS_WORK has quit [Quit: KVIrc 4.2.0 Equilibrium http://www.kvirc.net/]
lnostdal has quit [Excess Flood]
lnostdal has joined #lisp
robdog has joined #lisp
wanz has joined #lisp
robdog_ has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
makomo has joined #lisp
robdog_ has quit [Ping timeout: 252 seconds]
makomo has quit [Ping timeout: 255 seconds]
Achylles has quit [Remote host closed the connection]
pfdietz_ has quit [Quit: Page closed]
rpg has joined #lisp
robdog has joined #lisp
heisig has quit [Quit: Leaving]
robdog has quit [Ping timeout: 252 seconds]
robdog has joined #lisp
varjag has quit [Quit: ERC (IRC client for Emacs 25.2.2)]
shrdlu68 has quit [Quit: WeeChat 2.3]
rippa has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
matijja has quit [Ping timeout: 240 seconds]
makomo has joined #lisp
domovod has joined #lisp
domovod has left #lisp [#lisp]
robdog has joined #lisp
makomo has quit [Ping timeout: 245 seconds]
robdog has quit [Ping timeout: 252 seconds]
robdog has joined #lisp
Ukari has quit [Remote host closed the connection]
Ukari has joined #lisp
robdog_ has joined #lisp
makomo has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
Ukari has quit [Client Quit]
Ukari has joined #lisp
robdog_ has quit [Ping timeout: 252 seconds]
smasta has joined #lisp
Ukari has quit [Remote host closed the connection]
makomo has quit [Ping timeout: 246 seconds]
Ukari has joined #lisp
ym555 has quit [Ping timeout: 245 seconds]
domovod has joined #lisp
domovod has left #lisp [#lisp]
makomo has joined #lisp
domovod has joined #lisp
beach has quit [Ping timeout: 257 seconds]
trocado has joined #lisp
beach has joined #lisp
schweers has quit [Ping timeout: 264 seconds]
lavaflow_ has quit [Read error: Connection reset by peer]
makomo has quit [Ping timeout: 240 seconds]
lavaflow_ has joined #lisp
robdog has joined #lisp
<flip214> anyone from US coming to ELS this year?
<beach> Yes.
robdog has quit [Ping timeout: 252 seconds]
<flip214> beach: thanks -- I assumed as much. I'd like to ask a small favour...
<beach> I know of at least Martin Cracauer.
charh has quit [Ping timeout: 255 seconds]
<flip214> Any volunteer available here with amazon dot com access?
Josh_2 has joined #lisp
verisimilitude has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
<Jachy> flip214: I might be able to help if what I'm inferring you need isn't something big... got late approval last week for my company to expense my flight/hotel. :)
robdog has joined #lisp
verisimilitude has quit [Client Quit]
FreeBirdLjj has joined #lisp
<sjl_> I'll be there.
wanz has quit [Quit: wanz]
<flip214> I'd like to ask for a book being bought (used) from amazon, given to me, in exchange for hard currency
robdog has quit [Ping timeout: 252 seconds]
FreeBirdLjj has quit [Ping timeout: 245 seconds]
domovod has quit [Quit: WeeChat 2.4]
domovod has joined #lisp
robdog has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
<Jachy> flip214: Sure, PM me the details?
karlosz has quit [Quit: karlosz]
robdog has joined #lisp
FreeBirdLjj has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
FreeBirdLjj has quit [Remote host closed the connection]
Aruseus has joined #lisp
<flip214> Thanks, problem seems solved
rpg has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
Arcaelyx_ has joined #lisp
robdog has joined #lisp
slyrus_ has joined #lisp
ym555 has joined #lisp
slyrus__ has quit [Read error: Connection reset by peer]
Lord_of_Life has quit [Excess Flood]
nowhere_man has joined #lisp
Lord_of_Life has joined #lisp
Arcaelyx has quit [Ping timeout: 268 seconds]
Oddity has quit [Ping timeout: 268 seconds]
robdog has quit [Ping timeout: 252 seconds]
rpg has joined #lisp
Oddity has joined #lisp
rpg has quit [Ping timeout: 246 seconds]
robdog has joined #lisp
lumm has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
lumm_ has joined #lisp
terpri has quit [Ping timeout: 246 seconds]
hhdave has quit [Ping timeout: 250 seconds]
lumm has quit [Ping timeout: 240 seconds]
lumm_ is now known as lumm
robdog has joined #lisp
trocado has quit [Ping timeout: 240 seconds]
rozenglass has quit [Ping timeout: 246 seconds]
Fare has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
terpri has joined #lisp
cmatei has joined #lisp
robdog has joined #lisp
themsay has quit [Read error: Connection reset by peer]
themsay has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
trocado has joined #lisp
q3d has quit [Ping timeout: 256 seconds]
makomo has joined #lisp
jack_rabbit has quit [Ping timeout: 245 seconds]
m00natic has quit [Read error: Connection reset by peer]
trocado has quit [Ping timeout: 250 seconds]
marcoecc has quit [Ping timeout: 246 seconds]
Fare has quit [Ping timeout: 240 seconds]
robdog has joined #lisp
robdog has quit [Ping timeout: 240 seconds]
jack_rabbit has joined #lisp
Necktwi has quit [Quit: leaving]
sauvin has quit [Read error: Connection reset by peer]
dreamcompiler has joined #lisp
robdog has joined #lisp
Zaab1t has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
_whitelogger has joined #lisp
sakalli has quit [Ping timeout: 250 seconds]
<White_Flame> C-c Enter will macroexpand the form where the cursor is
<White_Flame> in a separate slime buffer
<polezaivsani> yeah, and it's all jammed into one line
<White_Flame> that's pretty odd. Can you post the macro & a usage?
<polezaivsani> even when i do 'pretty print' from a menu, i still get the same result.
<polezaivsani> oh it's the do-primes from the pcl book, chapter 8
<polezaivsani> want a url?
<polezaivsani> is paredit.el known to cause any conflicts with slime?
<dlowe> no
robdog has joined #lisp
verisimilitude has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
lumm_ has joined #lisp
lumm has quit [Ping timeout: 244 seconds]
lumm_ is now known as lumm
robdog has joined #lisp
themsay has quit [Read error: Connection reset by peer]
themsay has joined #lisp
nowhere_man has quit [Ping timeout: 245 seconds]
robdog has quit [Ping timeout: 252 seconds]
rozenglass has joined #lisp
themsay has quit [Ping timeout: 268 seconds]
robdog has joined #lisp
nanoz has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
<jackdaniel> 4 years is a bit longer than I have anticipated to tackle this task, but I've made a PR to ansi-test to remove logical pathname dependency on tests which are not related to logical pathnames :)
<Grue`> polezaivsani: what's your lisp implementation?
<polezaivsani> Grue`: sbcl
didi has quit [Remote host closed the connection]
<Grue`> maybe the macroexpansion is so short it fits into one line?
milivoj has joined #lisp
DGASAU has quit [Read error: Connection reset by peer]
<polezaivsani> Grue`: it does fit alright, i'll see a longer one would make a difference; i was thinking about some semanticaly appropriate formatting :)
<Grue`> "Whenever possible, the pretty printer displays the entire contents of a section on a single line. However, if the section is too long to fit in the space available, line breaks are inserted at conditional newline positions within the section. "
<polezaivsani> ... and franly i wouldn't know any better, but the PCL book mentioned smt along the lines of 'if the output of macro expansion is crammed into single line, check *print-pretty* is t'
vlatkoB has quit [Remote host closed the connection]
<Grue`> i guess it depends on how big your lines are
<sjl_> polezaivsani: does it work outside of slime? e.g. if you just run sbcl at a shell and evaluate (let ((*print-pretty* t)) (print '(if 1 2 3))) do you get newlines?
<sjl_> I get the newlines when I do that, even though it would fit on a single line
<polezaivsani> sjl_: haven't tried it in stand alone repl, but it does gets formatted into multiple lines in slime
<polezaivsani> Grue`: yeah, i tried it with a larger marco and it does get's pretty printed
DGASAU has joined #lisp
<Bike> i mean, even with the pretty printer on, if the output isn't that long it will keep it on one line
ym555 has quit [Ping timeout: 245 seconds]
Josh_2 has quit [Quit: ERC (IRC client for Emacs 26.1)]
<polezaivsani> thanks for helping me! i'll try to check what it is that i want next time :)
makomo has quit [Quit: WeeChat 2.2]
<polezaivsani> ... prior to making noise here
Zaab1t has quit [Quit: bye bye friends]
robdog has joined #lisp
themsay has joined #lisp
robdog_ has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
lumm has quit [Quit: lumm]
varjag has joined #lisp
robdog has joined #lisp
robdog_ has quit [Ping timeout: 252 seconds]
Josh_2 has joined #lisp
robdog_ has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
robdog_ has quit [Ping timeout: 252 seconds]
techquila has joined #lisp
robdog has joined #lisp
dreamcompiler has quit [Quit: dreamcompiler]
nalkri has quit [Ping timeout: 245 seconds]
robdog has quit [Ping timeout: 252 seconds]
ym555 has joined #lisp
dreamcompiler has joined #lisp
robdog has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
orivej has quit [Ping timeout: 255 seconds]
varjag has quit [Ping timeout: 252 seconds]
jealousmonk has joined #lisp
varjag has joined #lisp
robdog has joined #lisp
jealousmonk has quit [Read error: Connection reset by peer]
robdog has quit [Ping timeout: 252 seconds]
<jmercouris> so I have an interesting question, let's say I have a custom CLOS object
<jmercouris> or rather lets say I have a defclass inheriting from t or whatever
robdog has joined #lisp
<jmercouris> and when I print it, I want it to print in a way that the reader can evaluate it and make that object
<jmercouris> is there a generic way to just dump all of the slots in such a way that it can be read by the reader?
<jmercouris> does that question make sense?
<Bike> the question makes sense and the answer is no.
<Bike> but you can write out #.(make-instance ...) and that's almost as simple.
<Bike> the writer will take care of circularity for you, so you just need to write out the initargs and values appropriately.
scymtym has quit [Ping timeout: 240 seconds]
<jmercouris> I see, interesting, thanks for the answer
<Bike> also you can't actually make a class that inherits directly from T.
<jmercouris> ah, I see
robdog has quit [Ping timeout: 252 seconds]
<jmercouris> so what happens when you don't specify a superclass?
Ricchi has joined #lisp
milivoj_ has joined #lisp
<no-defun-allowed> i think it inherits from STANDARD-CLASS
<dreamcompiler> Correct.
<jmercouris> Each superclass-name argument specifies a direct superclass of the new class. If the superclass list is empty, then the superclass defaults depending on the metaclass, with standard-object being the default for standard-class.
<jmercouris> voila!
milivoj has quit [Ping timeout: 246 seconds]
milivoj_ is now known as milivoj
rippa has quit [Quit: {#`%${%&`+'${`%&NO CARRIER]
q3d has joined #lisp
robdog has joined #lisp
Fare has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
moldybits has joined #lisp
lavaflow_ has quit [Read error: Connection reset by peer]
slyrus_ has quit [Ping timeout: 245 seconds]
<fiddlerwoaroof> I tend to use a constructor function for this
Bike has quit []
<jmercouris> a constructor function? you just wrap make-instance?
lavaflow_ has joined #lisp
<verisimilitude> Are any of you running Windows?
<jmercouris> I'm running *from* Windows, does that count?
<verisimilitude> Would one of you show me the return value of this expression:
<verisimilitude> (make-pathname :device "C" :directory '(:absolute "%USERPROFILE%" "Documents"))
<verisimilitude> If you can evaluate that, then sure, jmercouris.
<jmercouris> I'm sure I can eval it, but it will most likely signal a condition ;)
<verisimilitude> Oh, alright.
<jmercouris> lol, actually it works
<jmercouris> #P"/%USERPROFILE%/Documents/"
<jmercouris> there's the result, you're welcome :)
<jmercouris> It actually does make sense though, in a very twisted way, I think that could be a valid Unix pathname, right?
<verisimilitude> Yes.
<jmercouris> shouldn't it just be something like C:\username ?
spoeplau has joined #lisp
<jmercouris> do you need to use make-pathname? if you are writing for Windows, do you not have a Windows test box?
<verisimilitude> In practice, a system such as Linux doesn't even require proper UTF-8 encoding; a filename is just any bytes, except zero and forty seven.
<jmercouris> I would legimitately help you, but I literally just deleted my Windows 10VM very recently
<verisimilitude> I'll gladly explain what this is for.
<verisimilitude> So, I've some file writing code and I was never able to properly test the Windows default I had, which is that.
<jmercouris> You don't have to justify yourself, I am sure you would not ask if it was not important, however I can't help you :\
<jmercouris> hopefully someone else can, so I'll stop spamming the channel :D
<verisimilitude> I try pathname defaults in the following order:
<verisimilitude> (USER-HOMEDIR-PATHNAME)
<verisimilitude> *DEFAULT-PATHNAME-DEFAULTS*
<verisimilitude> #+unix (make-pathname :directory '(:absolute "tmp"))
<verisimilitude> #+windows (make-pathname :device "C" :directory '(:absolute "%USERPROFILE%" "Documents"))
<verisimilitude> I can clearly see the UNIX case works and I need a suitable such directory under Windows, so I was using this for now.
<verisimilitude> Currently, UNIX and Windows are the only two systems I have special fallbacks for.
LiamH has quit [Quit: Leaving.]
bobby has quit [Ping timeout: 268 seconds]
trocado has joined #lisp
buhman has quit [Ping timeout: 246 seconds]
nanoz has quit [Ping timeout: 246 seconds]
<fiddlerwoaroof> jmercouris: yes, the nice thing about wrapping make-instance, is that you can reduce some of the noise of instantiating the class
<fiddlerwoaroof> Plus, you can also make the fact that there is a class an implementation detail
<fiddlerwoaroof> if it turns out that another representation is better
bobby has joined #lisp
<fiddlerwoaroof> in the case where I already have symbols named the same thing as the initarg keywords
detectiveaoi has joined #lisp
comborico1611 has joined #lisp
bobby has quit [Remote host closed the connection]
comborico1611 has quit [Ping timeout: 268 seconds]
bobby has joined #lisp
robdog has joined #lisp
vms14 has joined #lisp
buhman has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
robdog_ has joined #lisp
bobby has quit [Ping timeout: 252 seconds]
bobby has joined #lisp
<vms14> guys, I want to read from a cgi lisp script
kdas_ has joined #lisp
<vms14> it's for a kind of interactive tutorial that let's you try some common lisp code typing in some input
kushal has quit [Ping timeout: 256 seconds]
<pjb> vms14: (with-open-file (input "/srv/web/localhost/cgi-bin/test.cgi") (read-line input))
<vms14> but I receive keykodes for some characters with GET
<vms14> QUERY_STRING=meh=%28%2B+23+2%29
<vms14> the input is (+ 23 2)
<vms14> pjb, that's for POST?
<vms14> and won't hang waiting for a enter?
<pjb> That's for some value of "read from a cgi lisp script".
<vms14> how to make (read) or which function won't wait for enter?
<pjb> (let ((QUERY_STRING "meh=%28%2B+23+2%29")) (com.informatimago.common-lisp.http.hquery:query-unescape QUERY_STRING)) #| --> "meh=(+ 23 2)" |#
<vms14> for post input if I use read from stdin it waits for enter, so it hangs
<vms14> oh
<vms14> thanks a lot pjb
<pjb> (with-input-from-string (input (let ((QUERY_STRING "meh=%28%2B+23+2%29")) (com.informatimago.common-lisp.http.hquery:query-unescape QUERY_STRING))) (list (read input) (read input))) #| --> (meh= (+ 23 2)) |#
Bike has joined #lisp
<vms14> there is no way to don't use libraries?
<pjb> vms14: but note that the double-read only works because meh=() is interpreted as two lisp sexp. It would be wrong form meh=42
robdog_ has quit [Ping timeout: 252 seconds]
<vms14> the project will be in heliohost
<pjb> vms14: implement query-unescape!
<vms14> and they just added sbcl as cgi
<vms14> also how to read without waiting for enter?
<pjb> Or type M-. on it, and copy-and-paste the AGPL3-licensed code.
<pjb> vms14: read above!
<pjb> The answer to your question is: mu.
<pjb> vms14: alternatively, have a look at cl-charms.
<pjb> vms14: you should read the TAOUP.
Fare has quit [Ping timeout: 246 seconds]
nowhere_man has joined #lisp
<vms14> pjb, why this book?
<pjb> Because it teaches something.
<no-defun-allowed> what does it teach?
<pjb> Of course a lot of other material can be learned. For example, you could read about apache and CGI.
<vms14> a lot of things it seems
<pjb> You could learn about HTTP and HTML.
<jmercouris> fiddlerwoaroof: nice macro!
<vms14> I just want to translate that input to something evaluable by lisp
<jmercouris> you are also using serapeum lol
<no-defun-allowed> the title is a name, there is nothing artful about *nix
<jmercouris> damnit, that library sinks itself into random spots all the time
orivej has joined #lisp
<vms14> I have a final course project and we'll have this month to start and finish it
<no-defun-allowed> read-from-string when *read-eval* is NIL, and you understand it could intern stuff
<vms14> so I chose to make it about lisp
<vms14> and talk a bit about the little I know about that language
<jmercouris> vms14: why not use clack with FCGI?
<vms14> and try to show why lisp is a good language
<vms14> jmercouris, I'm tied to plain sbcl with no libraries
<vms14> since I'll use heliohost as a hosting
<no-defun-allowed> why do you have to use CGI?
<vms14> and they just have sbcl with cgi
<jmercouris> what? no quicklisp?
robdog has joined #lisp
<vms14> I want to make use of that cgi to make some sort of interactive tutorial
<vms14> nope jmercouris
<jmercouris> why don't you just spin up an instance on a Droplet
<vms14> plain lisp
<jmercouris> seems kind of ridiculous not to be allowed to use any libs
<vms14> yeah, but I won't make much more than evaluate stuff from an input
<no-defun-allowed> what a load of shite
<jmercouris> I don't understand
<jmercouris> is this a limitation placed upon you? or is this artifical because you insist on using helihost?
<no-defun-allowed> tell heliohost to git gud
<vms14> because is a project for a course and I won't pay anything just to make that project
<vms14> I want to use heliohost because it's free
<no-defun-allowed> probably a heliohost problem, since their lisp support is very new, and they probably don't know much about the lisp ecosystem
<jmercouris> you won't pay 5$ to save yourself hundreds of hours of time?
<vms14> and has lisp as cgi
<vms14> jmercouris, not for just an exercise
<vms14> that course lasts 3 months
<jmercouris> your time must be worthless if you won't spend the 5$
scymtym has joined #lisp
<jmercouris> I'm trying to say that in the most polite way possible
<vms14> I just think I can use the fact heliohost has a lisp cgi to do something with it
<jmercouris> don't waste your time, Clack, and Lack have been invented because it is *non-trivial*
<vms14> just for this case
<vms14> not for production or whatever
<Xach> yeah, you should make a new web browser instead
<jmercouris> lol
<jmercouris> you got me there, touche
<no-defun-allowed> well all i have to say is that thinking about CGI in (nth-value 5 (decode-universal-time (get-universal-time))) shouldn't be needed
<verisimilitude> I could understand that perspective if paying people or organizations online wasn't such a pain, jmercouris.
<vms14> I really need a library to read from a cgi post or get input?
<jmercouris> you don't *need* a library, but have you read the CGI protocol spec?
<vms14> nope
<verisimilitude> I'll write one for myself, eventually, vms14.
<vms14> I just have 1 month of web development course xD
<verisimilitude> I don't suppose you can wait on me, though.
<no-defun-allowed> so, just install hunchentoot and write something like `(define-easy-handler (http-eval :uri "/eval") (text) (eval (read-from-string text)))`
<vms14> so I know absolutely nothing
<vms14> and the project is mostly frontend
<no-defun-allowed> but of course, don't actually do that because eval from unknown sources is a very, very, VERY bad idea
<vms14> but I've wanted to extend it a bit using heliohost instead of another host
<jmercouris> why don't you pick an easier technology?
<jmercouris> PHP already has nice CGI support
<vms14> no-defun-allowed, you can limit the things to eval
<vms14> like make a list of allowed commands
<jmercouris> if this is mostly a front-end project, and it sounds like you can pick the language, I don't understand why you won't go with something far simpler to implement
<no-defun-allowed> >PHP >easier
<vms14> I know you could bypass it
<no-defun-allowed> pick one, jmercouris
<vms14> jmercouris, we should be making any backend stuff
<jmercouris> you know what, might even be a more enriching exercise
<jmercouris> implement a simple Lisp in PHP
<vms14> meh
<vms14> nevermind
<no-defun-allowed> i wouldn't suggest trying
<jmercouris> implementing a Lisp interpreter isn't that hard
<no-defun-allowed> we've got enough Lisp-in-foo languages thanks
<verisimilitude> Then you have two problems, jmercouris.
<jmercouris> s/a Lisp interpreter/simple Lisp interpreter over a small subset of functions
sjl_ has quit [Quit: WeeChat 2.3-dev]
ym555 has quit [Quit: leaving...]
dreamcompiler has quit [Quit: dreamcompiler]
robdog has quit [Ping timeout: 252 seconds]
random-nick has quit [Read error: Connection reset by peer]
<Xach> i briefly worked with a company that wrote a php compiler in scheme.
<Xach> it's open source now
robdog has joined #lisp
<jmercouris> a PHP compiler?
<jmercouris> did that improve performance in some way?
smasta has quit [Quit: WeeChat 2.4]
<Xach> jmercouris: that was the idea. your php is too slow, compile it with a lisp program to native code, it gets faster. i don't know if it was successful.
<no-defun-allowed> friendface made one of those, except it didn't have the Scheme step
ltriant has joined #lisp
techquila has quit [Ping timeout: 246 seconds]
emaczen has joined #lisp
<_death> vms14: you can use read-char to read a single character without "waiting for enter", assuming the stream is not line buffered
buffergn0me has quit [Remote host closed the connection]
buffergn0me has joined #lisp
<jmercouris> it doesn't have to be so
<jmercouris> he could store the current statement to be evaluated in a text input or something, and send it as a stream all at once with a special delimiter at the end
<jmercouris> or better yet a textarea
<jmercouris> and simply keep reading into a buffer until you get to that delimiter
<jmercouris> however, allowing arbitrary execution of SBCL via a JS interface, upon brief reflection, feels like a bad idea
q3d has quit [Ping timeout: 256 seconds]
<jmercouris> I'm sure they've set-up jails and the like, but his account could be compromised pretty easily
<jmercouris> anyways, going to sleep now, goodnight everyone
jmercouris has quit [Remote host closed the connection]
<vms14> _death, thanks
robdog has quit [Ping timeout: 252 seconds]
<vms14> I've solved it by adding a '\r\n' with js
<vms14> just \n
Autolycus has joined #lisp
<vms14> anyway I wanted to try with post to see if the result would be different, butnope xD
milivoj has quit [Ping timeout: 268 seconds]
<vms14> so I'll learn how to work with strings and replace those characters by what I want
<vms14> thanks for the help anyway
trocado has quit [Ping timeout: 245 seconds]
varjag has quit [Ping timeout: 268 seconds]
robdog has joined #lisp
milivoj has joined #lisp
vms14 has quit [Quit: Doing something with my shit life :D]
<pjb> _death: what stream? The context was CGI!
<pjb> _death: there's no interactive I/O with CGI.
robdog_ has joined #lisp
<Josh_2> How can I remove my structure so I can redefine it as a class??
<pjb> there's no (delete-structure 'foo)
robdog has quit [Ping timeout: 252 seconds]
<pjb> so you can only (mapcar 'unintern '(foo make-foo foo-p copy-foo foo-x foo-y foo-z))
<Josh_2> ah
<Josh_2> might as well reload my asdf system
<pjb> ie. the structure still exists (until it's not referenced anywhere and can be garbage collected) only now it uses uninterned names.
<pjb> Yes.
<Josh_2> I wonder what will break when I try to reload my system xD
<verisimilitude> Redefining a structure is undefined behavior, note.
<pjb> It's a shame, but nowadays computers and I/O is so fast, that yes, you can just reboot the lisp image.
<Josh_2> verisimilitude: another +1 for changing to clos
robdog_ has quit [Ping timeout: 252 seconds]
<Josh_2> Especially while I'm prototyping
z3t0 has joined #lisp
<_death> pjb: the standard input stream.. indeed, since it's not interactive, read-char would work, wouldn't you say?
<Josh_2> oof that took a long time to compile
robdog has joined #lisp
<_death> pjb: the real issue is that http is a octet-oriented protocol, at least until you know the textual encoding used
xkapastel has quit [Quit: Connection closed for inactivity]
robdog has quit [Ping timeout: 252 seconds]
robdog has joined #lisp
<pjb> _death: also, you don't need a final newline to read a batch stream such as sockets in network protocols, as long as the protocol ensures that the data is transmitted (which is the case with the HTTP parameters).
<pjb> Which I clearly demonstrated with my code :-/
keep_learning_M has joined #lisp
Fare has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
themsay has quit [Read error: Connection reset by peer]
themsay has joined #lisp
robdog has joined #lisp