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
Achylles has quit [Remote host closed the connection]
anewuser has joined #lisp
kajo has joined #lisp
bexx has quit [Remote host closed the connection]
Lycurgus has quit [Quit: Exeunt]
t58 has quit [Quit: Night]
pjb has joined #lisp
anewuser has quit [Ping timeout: 272 seconds]
leb has joined #lisp
Inline has quit [Ping timeout: 264 seconds]
leb has quit [Remote host closed the connection]
_leb has joined #lisp
devon has joined #lisp
<devon> How might I best digest a pile of files using all available CPU cores?
<oni-on-ion> pmap/parmap?
<devon> In Haskell? I was hoping for quicklisp.
<oni-on-ion> why is.. what?
orivej has quit [Ping timeout: 248 seconds]
<pjb> This is useless, until you have proven that you have the I/O bandwidth to feed those CPUs.
<oni-on-ion> why expecting haskell? thats some CL. if i were to suggest a whole other language/platform for parallel/concurrent, i would say JULIA.
<oni-on-ion> pjb, possibly after mapping the files to mem ?
<pjb> Think about it!
<no-defun-allowed> in haskell you'd use things like map/reduce/filter quite liberally
<White_Flame> one of the first things you should do is decouple threaded I/O reading from processing, even if there's only 1 thread doing each
<oni-on-ion> ok ok. why are we saying haskell still? =) we have no definition for his word "DIGEST"
<pjb> oni-on-ion: for example, assume the pile of files are 8TB of .avi files (~ 1GB each).
<pjb> Try to mmap them!
<pjb> DUH!
<oni-on-ion> okay lets invent extreme cases for no reason
<oni-on-ion> clearly not having enough memory , a programmer would know this before anything else! DUHHH!
<pjb> oni-on-ion: if your pile is 200KB of lisp sources, then again, it doesn't matter!
<pjb> It won't make any difference if you do it on 1 CPU or on 32.
<White_Flame> yeah it would. 32 CPUs would likely be slower! :)
<pjb> Please, THINK!
<oni-on-ion> listen i cant defend his reasons or his meaning, he has not responded.
<pjb> For God's sake!
<oni-on-ion> "guys how do i light a match" "okay first go to the firestation and tell them ur an arsonist" hmmmm
<White_Flame> and maybe in those 200KB of sources is a #. form which raytraces a high resolution scene
<oni-on-ion> if he wants to use multiple cores then why not ? its undefined if he is doing it for speed or combining with another thing, or anything else. too many variables that i would not humiliate myself in trying to assume.
* White_Flame recalls a business card image delivered in postscript that did exactly that
<no-defun-allowed> Now, how bout we assume that the files take a while to process, and IO isn't the bottleneck. I would expect devon has done some research to conclude that parallel reading might be useful.
<no-defun-allowed> In that case, (lparallel:pmapcar #'read-file (directory #p"pathname/*.*")) is a good start.
<White_Flame> devon: is there any particular reason not to give any more requested details?
<pjb> oni-on-ion: you need to study closely this: https://gist.github.com/jboner/2841832
<devon> pjb: I was away from this chat, back now.
Pixel_Outlaw has joined #lisp
<pjb> oni-on-ion: check: https://automationrhapsody.com/md5-sha-1-sha-256-sha-512-speed-performance/ The slowest SHA-512 is ~ 1 µs/MB while reading from SSD is 1000 µs/MB; therefore if I'm not wrong, we have proven that SHA-512 is 1000 times faster than reading from SSD, and therefore we would need 1000 SSD connected with 1000 interfaces to the computer, to fill the CPU time of 1 core! (orders of magnitude).
<devon> White_Flame: Oops, wrong name. Reading is 32x slower than processing.
<White_Flame> if you're reading from a single device, then parallelizing the read itself probably isnt' going to gain you anything
<White_Flame> and since processing isn't taking any substantial time, threading that isn't going to reduce much of anything
<White_Flame> so you're legit I/O bound?
<White_Flame> one option you might have to speed things up is to compress things on disk, so the I/O completes faster
<pjb> right, but on usual files, compression doesn't earn much. 50% if you're lucky. Often 0% on the files you want to hash (eg. videos or jpegs), because those interesting files are already compressed.
<White_Flame> 90% on text is easily expected
<White_Flame> 50% would halve the overall time spent in this case, too
<devon> Oops, I meant to say, reading is 32x FASTER than processing.
<White_Flame> how many files are involved?
<devon> Not sure, a TB or two.
<White_Flame> so yeah, if there's lots of files, just do the plain parallel stuff where each job reads & processes independently. It's probably not worth I/O pipelining
<White_Flame> if there's fewer files than the number of cores you have, then it'd be more challenging. You'd have to break up each file into multiple jobs. But it doesn't sound like this is the case
<devon> Perhaps launch more threads than cores and hope the excess threads harmlessly hang?
karlosz_ has joined #lisp
libertyprime has joined #lisp
oni-on-ion has quit [Quit: Leaving]
Lord_of_Life has quit [Ping timeout: 272 seconds]
karlosz_ has quit [Quit: karlosz_]
<White_Flame> devon: they won't hang. They'll all hammer the CPU timeslicing
<devon> bummer
<White_Flame> that's why you threadpool
<White_Flame> however, since there's 1/32nd of the time or so spent in idle I/O waiting, then you should be able to launch about 33 threads in the pool on a 32-thread CPU and probably have it not waste much time thrashing
<White_Flame> or, do your I/O in a separate thread and feed a job queue
<White_Flame> If each job involves streaming data from disk because it's too big for memory, I'd probably just let each thread block and spawn a few more than there are cores
Lord_of_Life has joined #lisp
<White_Flame> but really, it doesn't sound like optimizing the I/O would affect it much anyway
karlosz_ has joined #lisp
<devon> So, no way to determine the number of available cores?
milanj has quit [Quit: Leaving]
<White_Flame> that's usually a config parameter. If you're running multiple programs, you don't necessarily want each one to try to allocate all cores
atgreen has joined #lisp
<devon> Somewhere, something always knows about idle cores.
<White_Flame> what exactly are you trying to balance?
<devon> Balance? I'm just annoyed that my program takes too long to run even though there are plenty of idle cores.
torbo has quit [Remote host closed the connection]
<White_Flame> then tell it to use more cores. Really, what I"m discussing is tuning parameters, if the job is big enough that shaving off some percent would be significant
<devon> So I have to guess how many idle cores there might be? Not ideal.
<White_Flame> at the level of performance tuning, "cores" aren't idle in a discrete quanta
<White_Flame> it's not a binary "idle" or "busy", but more a percent utilization of each
<White_Flame> (yes, at the microscopic level it is binary, but whatever)
<White_Flame> and often when you're running a single-threaded task, you might see your utilization such that all cores are running at 12.5%, instead of 1 core out of 8 running at 100%
dddddd has quit [Remote host closed the connection]
<devon> Either way, cores are sitting idle most of the time.
<White_Flame> well, there's no vague "either way". Code needs to do something specific. You could call out to unix stuff to get numeric utilization percent of each core, but what would you do with it?
<White_Flame> just tell it how much to thread
<pjb> devon: how may SATA interfaces do you have? What is the bandwidth of your buses from those SATA interfaces to the RAM?
<devon> You're saying there no way for a job to use its fair share of available capacity unless I roll my own scheduler?
<pjb> devon: what I'm saying is that computing digests is TOO FAST!
<White_Flame> there's no such thing as "fair share" in an objective computing sense
<White_Flame> and as mentioned above, use lparallel, don't roll your own
<pjb> compared to disk I/O even SSD.
<devon> pjb: 32x slower than reading files.
<devon> Actually, 31.2× slower.
<pjb> In that case, you can easily feed 32 CPUs.
<devon> How? I was hoping to do better than $ find . -print0 | xargs -0 shasum -a 256
<White_Flame> aren't you doing this from lisp?
<pjb> devon: sure. use: xargs -P 32
<White_Flame> (and besides, if there are tons of smaller files, launching a process per will overwhelm your performance)
<didi> devon: [OT] I've used GNU Parallel successfully.
<devon> I'd rather do it in Lisp as there's noise in the file names and shasum has no -print0 option.
<White_Flame> ok, so lparallel:pmap
<pjb> (loop repeat 32 do (bt:make-thread (lambda () (loop for file = (get-next-pathname) while file do (digest file)))))
<pjb> or that.
<devon> thanks
oni-on-ion has joined #lisp
<White_Flame> yeah, if (get-next-pathname) is consuming from a threadsafe job queue
<pjb> yes.
<devon> That'd've been my next question.
Bike has quit [Quit: Lost terminal]
Inline has joined #lisp
karlosz_ has quit [Quit: karlosz_]
Necktwi has quit [Ping timeout: 268 seconds]
Necktwi has joined #lisp
techquila has joined #lisp
payphone has joined #lisp
X-Scale has quit [Read error: Connection reset by peer]
FreeBirdLjj has joined #lisp
rdh has quit [Quit: Leaving]
cantstanya has joined #lisp
_whitelogger has joined #lisp
froggey has quit [Ping timeout: 244 seconds]
cantstanya has quit [Remote host closed the connection]
cantstanya has joined #lisp
<beach> Good morning everyone!
pankajgodbole has joined #lisp
vlatkoB has joined #lisp
karlosz_ has joined #lisp
orivej has joined #lisp
Pixel_Outlaw has quit [Quit: Leaving]
karlosz_ has quit [Quit: karlosz_]
atgreen has quit [Ping timeout: 248 seconds]
devon has quit [Ping timeout: 248 seconds]
orivej has quit [Ping timeout: 248 seconds]
actuallybatman has joined #lisp
<jeosol> good morning beach
zhlyg has joined #lisp
_leb has quit []
oni-on-ion has quit [Quit: Leaving]
sauvin has joined #lisp
ebrasca has joined #lisp
<flip214> cl-soap: $Id: index.html,v 1.11 2005/10/09 08:34:43 scaekenberghe Exp $
<flip214> some libraries for CL are older than entire JS ecosystems...
actuallybatman has left #lisp ["ERC (IRC client for Emacs 26.2)"]
<mfiano> How can I right pad a string with a single charactet with format's ~A if it's a length of 1? I can't seem to figure it out. I would like "9" ;=> "9X", or "foo" ;=> "foo"
<mfiano> character, rather
<mfiano> I guess 0-length would need to be "XX" as well
<flip214> (format nil "~2,,,'Xa" 1)
<flip214> hu.dwim has no documentation about hu.dwim.soap, at least not in the menu
<mfiano> Ah I was missing the damn quote. Thank you!
<shangul> I used the short conversation between flip214 and mfiano to train my chatbot :P
<shangul> (people might say it's okay if it's in CL)
<flip214> is that the chatbot chiming in? good work, then
<shangul> :)
jprajzne has joined #lisp
makomo has joined #lisp
<no-defun-allowed> What chatbot?
<shangul> no-defun-allowed, You want its name?
<no-defun-allowed> Sure. Also, what do you have to train?
<shangul> aptcow
<shangul> And I don't understand this question
<no-defun-allowed> What modelling does it use?
<shangul> I don't know
<shangul> I just use a pre-built library/module
<shangul> :D
<shangul> I don't know anything about AI, yet...
dmiles has quit [Ping timeout: 272 seconds]
<flip214> is there something that parses wsdl files and creates functions? cl-soap "only" interpretes them, and hu.dwim.soap seems to _generate_ wsdl
dmiles has joined #lisp
JohnMS_WORK has joined #lisp
hiroaki has quit [Ping timeout: 246 seconds]
<ck_> good morning
<shangul> good morning
rippa has joined #lisp
<ck_> so, what's the name of the library you used? Is it more than a simple markov chain generator?
Inline has quit [Remote host closed the connection]
<shangul> Is Python code allowed here?
<shangul> This is off topic anyway
<jackdaniel> why would CMUCL /Python compiler/ not allowed here? :)
<jackdaniel> I think my joke hit the void :-(
<ck_> jackdaniel: don't feel bad about it.
<shangul> I don't understand jokes that they are jokes usually :D
<jackdaniel> shangul: CMUCL's compiler for common lisp is called "Python"
<jackdaniel> of course it is not related to a language you think about
<flip214> jackdaniel: no, we oldtimers understand you - but we've heard that one a few times already, too
<ck_> Let's just feel good about the fact that jokes are even allowed. We're not under Stalin thankfully.
<ck_> [let's see if I got that joke thing figured out]
<aeth> Stalin's a Scheme implementation so that's #scheme or ##lisp
<jackdaniel> flip214: so our community hit the sore point where we have only jaded oldies and not-so-savvy newbies? <;
<ck_> aeth: "that's the joke"
<no-defun-allowed> Seems to use naive Bayes in some places.
* no-defun-allowed changes her nick to no-fun-allowed
<jackdaniel> ck_: good one ,)
<ck_> so let's get back on track here: say somebody had some free time for a couple of weeks. where would they look for CL projects that could use some help?
<jackdaniel> I'm going to hit the finishing nails on selection support for mcclim and get over with this oh-so tiring task (/me winks at loke)
<jackdaniel> ck_: mcclim!
<ck_> I wanted to get in touch with the slime people, but nobody's answering
<jackdaniel> there is #slime channel
manualcrank has quit [Quit: WeeChat 1.9.1]
<ck_> I'm in there
<jackdaniel> (and #clim if you decide on clim)
<jackdaniel> regarding slime people not answering - I can assure you they will answer with throughful peer review if you make a pull request
<ck_> I asked my question in #slime on the first of the month, nobody has talked since
<jackdaniel> so do not take silence of the irc as a sign of lack of activity inside the project
<ck_> my pull request is years old now
<ck_> let me fish for the link
<jackdaniel> either way I'm a casual contributor, I have plenty of things going on in projects where I'm not so casual
<jackdaniel> if you want to contribute to a project I work on actively you may hit ecl or mcclim, I'll do my best as a guide
<ck_> jackdaniel: thank you. I'll take a look over coffee this morning; in case it looks like I could do some work, I'll get back to you
<jackdaniel> thank you, enjoy your coffee
rozenglass has joined #lisp
donotturnoff has joined #lisp
lavaflow_ has quit [Ping timeout: 258 seconds]
lavaflow_ has joined #lisp
crystalball has joined #lisp
nowhere_man has quit [Ping timeout: 272 seconds]
buffergn0me has quit [Ping timeout: 258 seconds]
wigust has joined #lisp
patrixl has joined #lisp
crystalball has quit []
dale has quit [Quit: dale]
scymtym has joined #lisp
ggole has joined #lisp
schweers has joined #lisp
patrixl has quit [Remote host closed the connection]
<LdBeth> Good afternoon
<shka_> LdBeth: hi!
themsay has quit [Read error: Connection reset by peer]
themsay has joined #lisp
orivej has joined #lisp
scymtym has quit [Remote host closed the connection]
hhdave has joined #lisp
pankajgodbole has quit [Ping timeout: 272 seconds]
hhdave has quit [Ping timeout: 268 seconds]
rozenglass has quit [Ping timeout: 252 seconds]
orivej has quit [Ping timeout: 244 seconds]
orivej has joined #lisp
moldybits has quit [Quit: WeeChat 2.4]
froggey has joined #lisp
m00natic has joined #lisp
moldybits has joined #lisp
themsay has quit [Ping timeout: 246 seconds]
* dim refrains from trying to steal interest towards his project(s)
<ck_> just go ahead
* jackdaniel prepares for quick /msg chanserv op #lisp /kickban <whoever> ;-)
<ck_> the channel is archived, who knows what kind of people will read after the fact.
<dim> so if looking for CL projects where help is needed, there's also pgloader, adding the mcclim and ecl
crystalball has joined #lisp
<dim> s/the/to/
crystalball has quit [Client Quit]
themsay has joined #lisp
fivo has joined #lisp
crystalball has joined #lisp
clintm has joined #lisp
crystalball has quit [Client Quit]
mulk has quit [Ping timeout: 248 seconds]
donotturnoff has quit [Ping timeout: 258 seconds]
themsay has quit [Read error: Connection reset by peer]
themsay has joined #lisp
barrenbass has joined #lisp
barrenbass has left #lisp [#lisp]
FreeBirdLjj has quit [Remote host closed the connection]
varjag has joined #lisp
FreeBirdLjj has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
FreeBirdLjj has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
FreeBirdLjj has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
FreeBirdLjj has joined #lisp
FreeBirdLjj has quit [Read error: Connection reset by peer]
FreeBirdLjj has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
atgreen has joined #lisp
dddddd has joined #lisp
<flip214> does someone have the means to re-evaluate https://arxiv.org/abs/1901.10220 for CL code?
<pjb> flip214: you'd have to ask the authors, which is why they put their email on the paper, I guess. Otherwise, there are other papers that you might want to look at, at http://cliki.net/Performance (in the "programmer's performance" section).
<pjb> flip214: 2.2.1 depends on how the commits are made and how good their commit messages are. Perhaps for high-traffic languages and projects (with a consistent team of maintainer and a project manager validing the merges), this is sufficiently uniform. But if you collected the 50 most starred CL projects on github, I'm not sure you'd get a consistent set of commits. For example, most of those projects have probably been gitified
<pjb> after the project was stable.
<pjb> flip214: So I would say you can start using their procedure, but you would probably have to adapt it for CL.
didi has left #lisp ["O bella ciao bella ciao bella ciao, ciao, ciao."]
<flip214> pjb: well, at least a few projects should be available... though I'm not sure whether long-time stable projects like SBCL would be valid to compare here
atgreen has quit [Ping timeout: 248 seconds]
dmiles has quit [Read error: Connection reset by peer]
<dim> do they take in consideration the mean time between bug-report and bug-fix? (ala MTBF for production QoS)
<dim> I found that Common Lisp allows me to deliver bug fixes very quickly in most cases, which I appreciate a lot, and so do the users
<dim> Q: is it possible with flexi-streams to expose a part of an '(unsigned-byte 8) stream that is zip-compressed and known as some encoding as a character stream?
Oladon has joined #lisp
pankajgodbole has joined #lisp
wilfredh has quit [Quit: Connection closed for inactivity]
p9fn has quit [Ping timeout: 252 seconds]
v88m has quit [Ping timeout: 268 seconds]
X-Scale has joined #lisp
Lycurgus has joined #lisp
amerlyq has joined #lisp
dmiles has joined #lisp
karayan has quit [Ping timeout: 256 seconds]
jmercouris has joined #lisp
<jmercouris> how do you guys normally run your deployed Lisp web applications? nohup? how do you give them a file to log any output?
<jmercouris> I've asked this question before, about 4 months ago I think, but I think the conversation had got a bit off-topic, because I had instead asked about how to daemonize a Lisp application instead
<Lycurgus> currently i just run under tmux and detach
<jmercouris> I'm doing screen and detaching as well, but I have to ssh onto the server to deploy a new version
crystalball has joined #lisp
<jmercouris> I want to be able to just push the new code with rsync, launch the program, and have its output going to a file
<pjb> jmercouris: and you'd want to OTA it?
<jmercouris> pjb: what is OTA?
<pjb> Over The Air upgrades.
<jmercouris> Yes
<jmercouris> I can kill and restart the Lisp image, it is fine, but I want to just push them from my local machine via RSYNC
<pjb> Ah, good.
dmiles has quit [Read error: Connection reset by peer]
<pjb> jmercouris: so you need to write a daemon on your server that will detect that a new version is available, shutdown your server process, install the new version, and restart your server program.
<jmercouris> pjb: Yes, that would be the proper way to do it, but I don't mind sending a kill signal to all Lisp processes...
<pjb> You cannot send unix signals to other hosts.
<pjb> Well, you can, IF you have a daemon with an open socket and you close it, so it gets a SIGPIPE.
mulk has joined #lisp
<pjb> And then the daemon can re-listen, and you can reconnect, to reclose it and reset a new SIGPIPE for the next time…
<pjb> jmercouris: go on like this. Asking silly things…
<jmercouris> Really? You cannot just type in 'ssh user@remote 'ls ~''
<pjb> You said you didn't want to ssh!
<jmercouris> Yes, sorry, I mean I don't want to login remotely into an interactive session
<pjb> There's no difference.
<jdz> jmercouris: I run my application using systemd.
<jmercouris> Sure there is, in one case I would type in 'ssh use@remote', type in my password, then type in 'ls ~'
<jmercouris> jdz: I'm on FreeBSD
<pjb> jmercouris: you can manipulate screens in scripts or commands.
<jmercouris> pjb: so you would still suggest screen?
crystalball has quit []
<pjb> jmercouris: I didn't say that.
<dlowe> jmercouris: I use a systemd service to run plexi
<dlowe> ExecStart=/usr/local/bin/sbcl --disable-ldb --lose-on-corruption --disable-debugger --eval "(ql:quickload \"swank\")" --eval "(ql:quickload \"orcabot\")" --eval "(swank:create-server :port 4734 :style :spawn :dont-close t)" --eval "(orcabot:start-orcabot-session #p\"/var/lib/plexi/data/\")"
<White_Flame> jmercouris: tangential, but it's best practice to disable ssh password login and only use key agents
<jmercouris> White_Flame: I only use keys, however, my local key has a password
<pjb> The choice of screen is for lisp process that you may want to debug. You can add code to your lisp program, to replace the debugger by your own, (not debugging, or waiting for a swank connection to debug thru sldb, or whatever you want).
<pjb> So you may not have to use a screen or tmux.
<jmercouris> dlowe: I like the idea of the swank server on port 4734, is that a potential security vulnerability?
<dlowe> kind of. If someone cracks the server they could manipulate the image.
<jdz> Only if said port is exposed to the outside world.
<jdz> You should only allow local connections to that port, and use SSH port forwarding if you want to connect to it remotely.
<jmercouris> so how do you then connect to swank on the remote machine?
<jmercouris> ok
dmiles has joined #lisp
<dlowe> even then, it elevates risk because if some other program is compromised it can be used to expand its control
<jmercouris> I guess it really depends on who is running the Lisp program
<dlowe> but the bot is sandboxed fairly well with its own user so its resources are fairly limited
<jmercouris> and what their privileges are
<xristos> or you know add challenge-response to swank, which is trivial
<xristos> or spend more time and do something even better
<jmercouris> challenge-response?
<xristos> https://en.wikipedia.org/wiki/Challenge–response_authentication
<jmercouris> I don't see how you would add that to swank
<dlowe> proof of a secret without transmitting the secret
<dlowe> simple matter of programming, I'm sure
<jmercouris> I assume you are being sarcastic
<jmercouris> it sounds very non-trivial
<jmercouris> actually it sounds impossible
<White_Flame> it's doable with a simple hashing function, and it's a standard model for logins
<xristos> hint: one way functions / cryptographic hash algorithms
<dlowe> I'm not being sarcastic
<jmercouris> I know about asymmetric cryptography
<jmercouris> perhaps I don't understand what you are saying
<jackdaniel> jmercouris: you tell them: encrypt "hello world" with your private key
<jackdaniel> you recive "asdfasdfk;jsdaf" and decrypt it with theirs public key
<jmercouris> if I give you my public key, and you send me something back (encrypted), is this what you are calling "proof of secret without transmitting the secret"?
<dlowe> you don't even need asymmetric cryptography
<jackdaniel> if it is "hello world" you may assume they have a hold of their private key
<jackdaniel> so they are probably them ;-)
<dlowe> the server has the secret. it picks a nonce and hashes it with the secret, then transmits the nonce to the client
<jmercouris> ah, I was not thinking in that direction
<dlowe> the client takes its secret, hashes it with the nonce, sends it to the server, which compares
<jmercouris> however, it still doesn't seem trivial to implement and integrate this into Swank
<jmercouris> I don't think it's a "five minute project"
<xristos> all you need it a hash function
<dlowe> that's the simple matter of programming part :p
<jackdaniel> are there five minute projects?
<xristos> maybe it's a 10 minute project
<dlowe> depends on how dirty you want to get with it and if you want to prepare it for upstream consumption
<jmercouris> Maybe for someone familiar with the swank codebase, I wouldn't even know where to start, it would be at least 3 minutes to have it cloned onto my machine
<jdz> Slime supports putting stuff into ~/.slime-secret. But looking at the documentation I don't see any mention of this.
<xristos> swank:start-server is where you start
<jmercouris> anyways, that's neither here nor there, I think I'll do the original proposal by dlowe using ssh tunneling to expose the port when necessary to me locally
<White_Flame> (and SSH will do the proof of secret without transmitting the secret for you)
<jmercouris> that too
<dlowe> that wasn't my proposal, but it's solid advice
<dlowe> you could also just not turn on the swank server unless you need it
<schweers> jmercouris: to get back to your original question (logging output): what about using a log daemon? I don’t run web-apps, but I my application runs for a very long time and logs via systemd. I guess FreeBSD must have something similar.
<jmercouris> dlowe: don't need it for 99% of projects, but sometimes errors come up, and I like to look at the stack trace
<dlowe> jmercouris: yeah, the line I pasted will dump the stack trace before it dies
<jmercouris> schweers: I wouldn't know, I'm not a very good BSD user, only been about 4 years now, I will look into it though
<dlowe> obviously you can't really inspect it though
<jmercouris> well yeah, that's the thing I want to do :D
<schweers> If syslog were non-icky, you could use that :D
Lycurgus has quit [Quit: Exeunt]
gxt has quit [Ping timeout: 256 seconds]
ricekrispie2 has joined #lisp
ricekrispie has quit [Ping timeout: 268 seconds]
shixiongfei has joined #lisp
Bike has joined #lisp
dmiles has quit [Read error: Connection reset by peer]
FreeBirdLjj has joined #lisp
shixiongfei has quit [Remote host closed the connection]
FreeBirdLjj has quit [Remote host closed the connection]
wxie has joined #lisp
gareppa has joined #lisp
shixiongfei has joined #lisp
jprajzne has quit [Quit: Leaving.]
LiamH has joined #lisp
orivej has quit [Ping timeout: 248 seconds]
shixiongfei has quit [Remote host closed the connection]
v88m has joined #lisp
cosimone has joined #lisp
atgreen has joined #lisp
Inline has joined #lisp
v88m has quit [Read error: Connection reset by peer]
dmiles has joined #lisp
JohnMS_WORK has quit [Quit: KVIrc 4.2.0 Equilibrium http://www.kvirc.net/]
shka_ has quit [Quit: WeeChat 1.9.1]
dmiles has quit [Read error: Connection reset by peer]
Inline has quit [Ping timeout: 264 seconds]
orivej has joined #lisp
sjl_ has joined #lisp
dmiles has joined #lisp
Lord_of_Life_ has joined #lisp
Lord_of_Life has quit [Ping timeout: 248 seconds]
bjorkintosh has joined #lisp
Lord_of_Life_ is now known as Lord_of_Life
wxie has quit [Quit: wxie]
warweasle has joined #lisp
fivo has quit [Ping timeout: 248 seconds]
fivo has joined #lisp
shifty has quit [Ping timeout: 272 seconds]
dale_ has joined #lisp
dale_ is now known as dale
<jmercouris> can someone explain to me why ssh'ing onto my machine and doing 'sbcl --non-interactive --eval '(asdf:load-asd "/path/to/asd.asd")' works but ssh user@server sbcl --non-interactive --eval '(asdf:load-asd "/path/to/asd.asd")' does not work and says "Badly placed ()'s."?
<Bike> your shell is interpreting nthe (), i guess?
<Bike> or ssh is, or something
<jmercouris> maybe, let me try it in bash
<Bike> 'Badly placed ()' is probably not an error sbcl gives
<Bike> it would be a read-error
<jmercouris> I see
<jmercouris> so I need to probably use double quotes then or something
<Bike> if you google the phrase you get a bunch of people talking about shell scripts and not lisp
<dlowe> using ssh to run remote scripts with arguments will drive you crazy
<dlowe> I highly recommend using a shell script and just running that
<jmercouris> well, I've been working on it since the conversation this morning
<dlowe> with no arguments
<dlowe> you at least need to use -- to separate ssh's arguments from sbcls
<dim> my personal trick is to use Makefile for that kind of things
<jmercouris> I have a Makefile I guess I will invoke the makefile then
<jmercouris> so I don't have to make a separate script
<dim> ssh -l user server make target
<jmercouris> thanks
<dim> I like Makefile(s) better than shell script for composability and error management, and it keeps your target simples and easy to review
<dim> jmercouris: otherwise have a look at https://github.com/lmj/lfarm and manage everything in CL on-top of SSH connections
<jmercouris> I like makefiles because I don't want script files in my projects
gareppa has quit [Quit: Leaving]
<dlowe> I don't like makefiles because they have their own expansion rules on top of the underlying shell
<jmercouris> yes, they do, they are complex beasts, but I also don't like having files :D
<dlowe> just delete all of them.
<jmercouris> that would solve the problem
<dlowe> what good did they ever do you
<jmercouris> a very salient point!
Inline has joined #lisp
* drewc likes `sh -c` or <<'EOF'
<flip214> make is an easy way to keep multiple small functions in a place, and they can be parametrized via KEY=value on the command line. That's hard to beat.
shka_ has joined #lisp
pfdietz has quit [Ping timeout: 256 seconds]
<jmercouris> I'm so close
<jmercouris> for some reason running nohup makefile -f target & is causing problems
<flip214> "-f" expects a filename after it, doesn't it?
<jmercouris> if I don't run the ampersand, all is well, but of course then I have the terminal output stuck on my computer
<jmercouris> yes, sorry, I have a filename specified
<flip214> ah, okay.
<flip214> I guess you'll want "setsid nohup make -f ... target ; disown"
<flip214> in bash
<jmercouris> I'm running csh on the server
<flip214> then no disown
<flip214> systemd in use?
<jmercouris> I'm on freebsd
<dim> if you need a service, write a service, not an interactive hack
<jmercouris> I'm super close to doing it properly
<zhlyg> just put sbcl in passwd
<jmercouris> if I can't get this to work in the next hour I'll actually make a service
<flip214> well, what's the problem actually?
<dim> then just do it properly with an application running as a service and a client command line that you can use in ssh or otherwise?
<dim> for the protocol, http/json is very simple to setup, maybe you want something else though
<jmercouris> flip214: I'm trying to push my latest SBCL caveman code to a server, and then restart SBCL to load the new source
<flip214> I typically use a crontab file for a user, containing "@reboot screen -d -m -c <commandline>"
<flip214> but that might be a GNUism
<flip214> use a signal handler or swank to reload the code
<jmercouris> that still requires something on my part
<dim> there's a systemd way to do that with loginctl enable-linger
<jmercouris> I want it to literally be 'make restart' et voila! running the new code on the remote server
<flip214> nohup csh -c '( ( sbcl --script ... ) & ) &'
<jmercouris> I originally went down that route
<dim> systemd restart caveman
<dim> systemctl I think it is, sorry
<jmercouris> in FreeBSD it would be service x restart
<dim> if you don't have that in FreeBSD you have something much of the same I'm sure, with the old run command API I guess
cosimone has quit [Quit: WeeChat 2.3]
<dim> then make it a FreeBSD service and use `service caveman restart` and be done?
<jmercouris> this is what I have so far
<jmercouris> it is so close...
<dim> it doesn't have to be hackish as hell to feel good
<jmercouris> lol
<dim> you're not doing yourself a favor here, just register a systems service, maybe at the user-level, and use the system tools to manage a registered service
<dim> IOW the problem you're trying to solve has been solved 30+ years ago
<jmercouris> I just didn't want to have to learn this kind of stuff, I'm a developer not a sys admin
<jmercouris> maybe it will come in useful in the future again, might as well learn it :\
m00natic has quit [Remote host closed the connection]
<dim> the dev/sysadmin siloing is dead, you might have heard about devops; you're now tasked to provide a service to users
<dim> plus you're using FreeBSD on your own server, you need to be sysadmin savvy enough for making that an efficient use of your own time
cosimone has joined #lisp
<jmercouris> yeah... I know, I went down that route when Chef and Puppet first came out, and I decided it wasn't for me, but it is an inevitable tidal wave..
<zhlyg> jmercouris: consider shipping an image instead, started by a bourne-shell script, inside a screen.
beach has quit [Ping timeout: 252 seconds]
<dim> it's production-like, make it production grade, use standard tooling, make it easier for anybody to get involved, no surprises, just the usual stuff, service restart caveman
<jmercouris> zhlyg: the image would have to be compiled on the remote machine as an SBCL image compiled on one OS will not necessarily run with the SBCL kernel on another OS, or so I've been told
<aeth> jmercouris: would Docker work?
<jmercouris> nope, it is FreeBSD
<zhlyg> jmercouris: I see. What I'm getting at is that you could have an new image be unstable, and by restart it would default to the old image, until you consider it stable and make a image-rotation.
<jmercouris> Yes, that's possible
<jmercouris> I think in general we need to think about our deployment strategy and how we will provision machines
<jmercouris> currently we just take snapshots of them before doing system upgrades
<jmercouris> but possibly just snapshotting the DB and image would suffice, and be way less heavy than snapshotting the whole machine
<zhlyg> jmercouris: if you want to experiment with screen, it is: screen -d -m -S you_service_name /path/runner.sh
<zhlyg> jmercouris: exactly, that is the carrier way, where as you say, equipment have less cpu/mem.
cosimone has quit [Ping timeout: 248 seconds]
pfdietz has joined #lisp
cosimone has joined #lisp
schweers has quit [Ping timeout: 248 seconds]
manualcrank has joined #lisp
<jmercouris> not sure what carrier way is, but yes, it is much more efficient
<zhlyg> jmercouris: it is when your service has five-nines, and you're hanging more in #erlang ;)
jmercouris has quit [Ping timeout: 248 seconds]
beach has joined #lisp
donotturnoff has joined #lisp
dale has quit [Ping timeout: 248 seconds]
gareppa has joined #lisp
t58 has joined #lisp
q9929t has joined #lisp
luhuaei has joined #lisp
khisanth_ has quit [Ping timeout: 248 seconds]
luhuaei has left #lisp ["ERC (IRC client for Emacs 26.2)"]
dale has joined #lisp
khisanth_ has joined #lisp
v88m has joined #lisp
kajo has quit [Ping timeout: 258 seconds]
gareppa has quit [Quit: Leaving]
cosimone has quit [Quit: WeeChat 2.3]
cosimone has joined #lisp
varjag has quit [Quit: ERC (IRC client for Emacs 25.2.2)]
lemoinem is now known as Guest17980
Guest17980 has quit [Killed (livingstone.freenode.net (Nickname regained by services))]
lemoinem has joined #lisp
leb has joined #lisp
nowhere_man has joined #lisp
uplime has quit [Remote host closed the connection]
moei has joined #lisp
nowhere_man has quit [Ping timeout: 248 seconds]
fivo has quit [Quit: WeeChat 1.9.1]
wigust- has joined #lisp
wigust has quit [Ping timeout: 248 seconds]
varjag has joined #lisp
sjl has quit [Quit: WeeChat 2.2-dev]
kajo has joined #lisp
pankajgodbole has quit [Ping timeout: 245 seconds]
v88m has quit [Quit: Quit]
v88m has joined #lisp
cosimone has quit [Quit: WeeChat 2.3]
cosimone has joined #lisp
dkmueller has joined #lisp
gxt has joined #lisp
ggole has quit [Quit: Leaving]
clothespin_ has joined #lisp
dale has quit [Quit: dale]
<shangul> In Debian is there any packages which adds docs on CL stuff as man pages(as there is for C)?
uplime has joined #lisp
sauvin has quit [Ping timeout: 272 seconds]
clothespin_ has quit [Read error: Connection reset by peer]
dale has joined #lisp
<jackdaniel> shangul: info pages
<jackdaniel> type `info sbcl'
orivej has quit [Ping timeout: 258 seconds]
<xristos> info is very atypical of lisp libraries, almost nobody bothers
clothespin has joined #lisp
<shangul> jackdaniel, When I select "function index" it says that it can't find such node
cosimone has quit [Quit: WeeChat 2.3]
<sjl_> I don't know of anything for man pages. I personally use a little script to open w3m or lynx or whatever on a local copy of the hyperspec for a particular symbol.
mulk has quit [Ping timeout: 246 seconds]
clothespin has quit [Remote host closed the connection]
q3d has joined #lisp
mulk has joined #lisp
ravenous_ has joined #lisp
q9929t has quit [Remote host closed the connection]
q9929t has joined #lisp
shifty has joined #lisp
<pjb> shangul: try: apt-cache search lisp ; apt-cache search cl ; apt-cache search hyperspec
<shangul> pjb, Thanks. found hyperspec with the last one
skidd0 has joined #lisp
<skidd0> hello. Anyone working with MS SQL in their projects? Any library recommendations?
jkordani has joined #lisp
cosimone has joined #lisp
notzmv has joined #lisp
verisimilitude has joined #lisp
<verisimilitude> Hello. I'm having issues contacting shinmera, perhaps on my end. Is shinmera able to be contacted through this IRC channel?
ebrasca has quit [Remote host closed the connection]
izh_ has joined #lisp
izh_ has quit [Client Quit]
rippa has quit [Quit: {#`%${%&`+'${`%&NO CARRIER]
<pjb> verisimilitude: when he's here.
<verisimilitude> He uses the name shinmera here, right?
ym555 has joined #lisp
<verisimilitude> I appreciate your help, pjb.
<verisimilitude> Is there, say, a bot here through which I can leave him a message?
orivej has joined #lisp
<dlowe> verisimilitude: /msg plexi .memo shinmera <msg>
<dlowe> he gets on #lispgames where plexi is watching
<verisimilitude> I appreciate your help, dlowe.
cosimone has quit [Ping timeout: 258 seconds]
<pjb> verisimilitude: minion can remember to send messages.
<pjb> minion: help memo
<minion> To send a memo, say something like ``minion: memo for nick: the memo''. I'll remember the memo for any nick which is the same as the given nick, +/- differences in punctuation, and any nick which is an alias for it, and give it to them when they next speak.
cosimone has joined #lisp
<verisimilitude> I've already used plexi.
<dlowe> I'm sure Colleen will also do it
<dlowe> so many lisp bots
<verisimilitude> Also, jgkamat , I've not worked much on my CL-GOPHER yet, and this is a notice I probably won't return purely to inform you of future progress.
<verisimilitude> This is in regards to what I told you almost three months back.
<verisimilitude> So, I may as well discuss some Lisp before I leave. What have you been working on? I've been wanting to do other things, but have only improved my ACUTE-TERMINAL-CONTROL lately.
femi has quit [Quit: ZNC 1.6.6+deb1ubuntu0.1 - http://znc.in]
donotturnoff has quit [Remote host closed the connection]
leb has quit []
atgreen has quit [Ping timeout: 244 seconds]
buffergn0me has joined #lisp
bjorkintosh has quit [Ping timeout: 248 seconds]
clintm has quit [Remote host closed the connection]
dale has quit [Quit: dale]
nowhere_man has joined #lisp
shka_ has quit [Ping timeout: 248 seconds]
vaartis has joined #lisp
<vaartis> hey it's me the dumb cffi questions guy
<vaartis> a foreign library somehow stops working correctly after image dumping and reloading
<vaartis> a number in a struct that is supposed to be 10 becomes a big negative number
<vaartis> that only happens after image restoring, and only to that exactly library, cl-sdl2-ttf works just fine
<vaartis> CCL says that the struct is a dead pointer after restoring, even though the struct is created after the image is restored
oni-on-ion has joined #lisp
<vaartis>
<vaartis> > (chipmunk:make-space)
<vaartis> 1 > (chipmunk:gravity (chipmunk:make-space))
<vaartis> #<CP-SPACE {#X7F3DA9915DA0}>
<vaartis> > Error: The value #<A Dead Mac Pointer> is not of the expected type MACPTR.
<vaartis> > While executing: AUTOWRAP.LIBFFI:FFI-CALL, in process SDL2 Main Thread(3).
<vaartis> that's the error basically
ravenous_ has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<oni-on-ion> a dead mac ptr..
<vaartis> yeah that happens when you have a pointer and reload the image
<vaartis> the pointer becomes dead
<vaartis> but this pointer is fresh
<vaartis> and yet somehow it's dead
<vaartis> anyway, i hope someone who knows something about this will leave me a memo, since it's getting quiet late
<vaartis> goodnight
<oni-on-ion> hmm. revive it ?
<oni-on-ion> ok
<vaartis> it being dead means that it's invalid
<vaartis> that's basically all
<vaartis> anyway
<vaartis> sleep..
vaartis has left #lisp ["ERC (IRC client for Emacs 26.2)"]
verisimilitude has left #lisp ["ERC (IRC client for Emacs 24.5.1)"]
<Bike> I think we'd have to know more about make-space.
<oni-on-ion> how constructive
<Bike> since calling it doesn't itself cause an error, the library is probably correctly loaded and stuff...
<Xach> skidd0: i used ms sql through clsql's sybase/freetds support.
<Xach> skidd0: it was a long time ago but at the time it worked well enough to do simple querying and build from there.
ym555 has quit [Quit: leaving...]
cosimone has quit [Ping timeout: 246 seconds]
<skidd0> thanks for the info Xach
cosimone has joined #lisp
<skidd0> i just got plain-sdbc to connect after tinkering with unixODBC and FreeTDS
<Xach> cool
clothespin has joined #lisp
dkmueller has quit [Quit: WeeChat 1.6]
LiamH has quit [Quit: Leaving.]
jmercouris has joined #lisp
amerlyq has quit [Quit: amerlyq]
jmercouris has quit [Ping timeout: 272 seconds]
cosimone has quit [Quit: WeeChat 2.3]
jmercouris has joined #lisp
uplime has quit [Quit: ZNC 1.7.3 - https://znc.in]
uplime has joined #lisp
zhlyg has quit [Ping timeout: 245 seconds]
nowhere_man has quit [Ping timeout: 258 seconds]
vlatkoB has quit [Remote host closed the connection]
orivej has quit [Ping timeout: 248 seconds]
Bike has quit []
q3d has quit [Ping timeout: 256 seconds]
troydm has quit [Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset]
atgreen has joined #lisp
varjag has quit [Quit: ERC (IRC client for Emacs 26.1)]
abarbosa has joined #lisp
shifty has quit [Ping timeout: 248 seconds]
moei has quit [Quit: Leaving...]
dale has joined #lisp
troydm has joined #lisp
techquila has quit [Remote host closed the connection]
<nydel> i seek a rogue (like the adventure game) written in commonlisp. searching web i see some results, but is anyone here aware of a particularly good one? preferably one really close to how the original game plays.
<nydel> if anyone thinks of one (especially an original they're willing to share source thereof) thank you kindly. hoping all are well!
karlosz has quit [Quit: karlosz]
karlosz has joined #lisp
karlosz has quit [Client Quit]
karlosz has joined #lisp
<grewal> If you can't get an answer here, reddit.com/r/roguelikes would be a good place to ask
lnostdal has quit [Ping timeout: 244 seconds]
Bike has joined #lisp
makomo has quit [Ping timeout: 244 seconds]
quazimodo has quit [Ping timeout: 248 seconds]
lnostdal has joined #lisp
jmercouris has quit [Remote host closed the connection]
buffergn0me has quit [Remote host closed the connection]
buffergn0me has joined #lisp
_leb has joined #lisp
_leb has quit [Read error: Connection reset by peer]
quazimodo has joined #lisp
sjl_ has quit [Quit: WeeChat 2.3-dev]
torbo has joined #lisp
skidd0 is now known as b0t
b0t has quit [Quit: WeeChat 2.4]
quazimodo has quit [Ping timeout: 272 seconds]