<jmercouris> Shinmera: Have you created a survey?
cgay has joined #lisp
<p_l> Shinmera: projects like portacle are IMO done of the hardest to get such things for
<jmercouris> I basically have never gotten feedback without explictly asking users
<jmercouris> portacle is great btw, I think it's a great concept for new users
<p_l> Many of the more knowledgeable people tend to have their idiosyncratic ways of setting up
<Shinmera> jmercouris: I have not, no. There's currently more pressing matters.
<Shinmera> p_l: Yes. I expect most people to just drop it without a word if they don't like it. That's one of my "fears" about all projects I have.
<Shinmera> For Portacle (and most things, really) I don't even know how many people use it, let alone how many of those are beginners.
<jmercouris> Shinmera: This is not just a "fear" this is a reality, if people don't like a piece of software they'll just loook for another instead of leaving feedback
<Shinmera> I know, what I meant is that I fear most people will react that way, rather than a minority.
<Shinmera> As in, I fear my efforts are going to waste without me knowing about it.
<jmercouris> Ah, maybe they are
<jmercouris> THat's the challenge with any business and/or project
<jmercouris> There's a number of ways to figure out if your efforts are not wasted though
<p_l> Shinmera: I think some work on getting Portacle in front of users is needed, not because of anything you do, but because gigamonkeys.com/book still gets people to look at Lisp in a Box
<jmercouris> you could do a bunch of user studies, individually interviewing programmers to see if there is a need for such a tool, you could do test balloon posts on media platforms and see how people react to them, surveys you submit to a mailing list, etc
prometheus_falli has joined #lisp
<jmercouris> If you believe you've made a good piece of software, and no doubt you have, the second part that is necessary is marketing
<Shinmera> p_l: Yeah. I've also seen a couple of posts on reddit where people suggest some complicated manual setup rather than just linking to Portacle, so it's still obscure even among people already familiar with lisp and willing to help.
<p_l> Right
<p_l> Who owns lisp.com
<p_l> ?
<jmercouris> Shinmera: If your interested in marketing, there's a lot of good resources on /r/startups
<Shinmera> cl foundation, I believe
<Shinmera> jmercouris: I'm not. Marketing is one thing I loathe to think about.
<Shinmera> Generally I don't like to put myself or my things out there.
<jmercouris> Shinmera: Well, like it or not, it is necessary
<jmercouris> it is a shame that you produce so many packages that are not well known, because they are quite useful
<Shinmera> :shrug: it's necessary for some goals.
<Shinmera> Reforming the lisp community or whatnot isn't one of my goals. I made Portacle primarily for myself :^)
<jmercouris> I don't know what your goals are, but I think if you are writing software that you hope other people will find useful, it follows that you'd want as many people as possible to benefit from those pieces of software
<jmercouris> and how can they benefit if they do not know?
<Shinmera> Eh, it's more that I hope if someone finds it they won't tink it's a piece of shit
<Shinmera> *think
<jmercouris> you are not trying to sell them some useless bs, but you can provide tangible value to their lives by informing them of products that you make that they may be interested in
<jmercouris> Shinmera: Well, at least one person thinks your software isn't shit, and that's me
<phoe> (incf *)
<Shinmera> Great to know! :)
safe has joined #lisp
<Shinmera> Anyway, I'm aware marketing and all that can be beneficial for the target audience as well, it's just really not my deal. If someone else wants to do that, I don't mind, as long as I deem the thing being advertised as "ready".
<Shinmera> I'll just continue on my (not so) merry way hammering out software, whether people use it or not.
prometheus_falli has quit [Remote host closed the connection]
prometheus_falli has joined #lisp
<Shinmera> And currently the next step on that way is to snooze. Good night, everyone.
spoken-tales has quit [Remote host closed the connection]
spoken-tales has joined #lisp
mikecheck has joined #lisp
<aeth> How does Portacle differ from Roswell? I use Roswell to test my code on a bunch of implementations I wouldn't otherwise have easy access to
<aeth> Roswell seems to be useful for testing, even automated testing
brendyn has joined #lisp
cgay has quit [Ping timeout: 256 seconds]
<aeth> Ah, it looks like Portacle only has SBCL
cgay has joined #lisp
rumbler31 has joined #lisp
JuanDaugherty has joined #lisp
damke has joined #lisp
damke_ has quit [Ping timeout: 264 seconds]
<mfiano> The difference is Portacle is an Emacs distribution and roswell is an implementation manager. Not much overlap there
pierpa has joined #lisp
smurfrobot has joined #lisp
fikka has quit [Ping timeout: 264 seconds]
smurfrobot has quit [Ping timeout: 256 seconds]
z3t0 has quit [Remote host closed the connection]
spoken-tales has quit [Remote host closed the connection]
spoken-tales has joined #lisp
smurfrobot has joined #lisp
varjag has joined #lisp
z3t0 has joined #lisp
varjag has quit [Remote host closed the connection]
varjag has joined #lisp
conceivably has joined #lisp
brendyn has quit [Ping timeout: 264 seconds]
theBlackDragon has quit [Ping timeout: 264 seconds]
theBlackDragon has joined #lisp
varjag has quit [Ping timeout: 248 seconds]
z3t0 has quit [Remote host closed the connection]
igemnace has joined #lisp
theBlackDragon has quit [Ping timeout: 240 seconds]
lololol has joined #lisp
z3t0 has joined #lisp
z3t0 has quit [Remote host closed the connection]
z3t0 has joined #lisp
theBlackDragon has joined #lisp
lololol has quit [Client Quit]
conceiva` has joined #lisp
conceivably has quit [Ping timeout: 260 seconds]
dxtr has quit [Ping timeout: 276 seconds]
lxpz has quit [Ping timeout: 240 seconds]
dxtr_ has joined #lisp
dxtr_ has quit [Changing host]
dxtr_ has joined #lisp
conceiva` has quit [Remote host closed the connection]
lxpz has joined #lisp
smurfrobot has quit [Remote host closed the connection]
spacepluk has quit [Ping timeout: 260 seconds]
zotan_ has quit [Ping timeout: 260 seconds]
zotan has joined #lisp
spacepluk has joined #lisp
smurfrobot has joined #lisp
brendyn has joined #lisp
smurfrobot has quit [Ping timeout: 248 seconds]
smurfrobot has joined #lisp
makomo has quit [Ping timeout: 268 seconds]
smurfrobot has quit [Ping timeout: 240 seconds]
markong has quit [Ping timeout: 264 seconds]
spoken-tales has quit [Remote host closed the connection]
spoken-tales has joined #lisp
spoken-tales has quit [Remote host closed the connection]
spoken-tales has joined #lisp
smurfrobot has joined #lisp
rme has joined #lisp
FreeBirdLjj has joined #lisp
smurfrobot has quit [Remote host closed the connection]
z3t0 has quit [Remote host closed the connection]
z3t0 has joined #lisp
safe has quit [Quit: Leaving]
stee_3 has quit [Quit: stee_3]
d4ryus1 has joined #lisp
d4ryus has quit [Ping timeout: 256 seconds]
stee has joined #lisp
Arcaelyx_ has joined #lisp
stee is now known as stee_
Arcaelyx has quit [Ping timeout: 255 seconds]
z3t0 has quit [Remote host closed the connection]
stee_ is now known as stee_3
z3t0 has joined #lisp
z3t0 has quit [Ping timeout: 256 seconds]
fikka has joined #lisp
hexfive has quit [Quit: WeeChat 1.9.1]
fikka has quit [Ping timeout: 260 seconds]
asarch has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
jamtho_ has quit [Quit: Leaving]
FreeBirdLjj has joined #lisp
shifty has joined #lisp
FreeBirdLjj has quit [Ping timeout: 248 seconds]
FreeBirdLjj has joined #lisp
damke_ has joined #lisp
damke has quit [Ping timeout: 264 seconds]
z3t0 has joined #lisp
jmercouris has quit [Remote host closed the connection]
z3t0 has quit [Ping timeout: 240 seconds]
slyrus has quit [Ping timeout: 240 seconds]
jmercouris has joined #lisp
<jmercouris> I'm using cl-webkit, and I want to pass a function to the callback, but apparently you are supposed to pass a SYSTEM-AREA-POINTER : https://gist.github.com/91d471ea63c8f601178bdfb2a1955493
<jmercouris> any ideas on what this is?
<jmercouris> I've never heard of such a thin
<rpg> Is that the thing SBCL uses as a pointer?
<jmercouris> that's what googling yielded, yea
<rpg> Honestly, I read a bunch of stuff about SAPs, but never knew what it stood for!
<jmercouris> pillton: That looks promising, let me try putting that in that place
ahungry has joined #lisp
<jmercouris> the defcallback doesn't have to be a top level form does it?
<pillton> I don't know. I only know of it. I have never used it.
fikka has joined #lisp
throwprans has joined #lisp
<throwprans> Hello
<throwprans> Is PCL open source?
<throwprans> Can you suggest improvements?
<jmercouris> PCL is a book, did you try contacting the author?
<throwprans> Well, there is many a book that are "authored" out in the wild.
<rpg> why would a web package need a SAP?
<throwprans> Full with "web based" source control and what not.
<jmercouris> rpg: javascript is executed asynchronously and upon completion a callback is fired, the webkit api is in C
<jmercouris> or rather the WebkitGTK+ API is in C
<rpg> jmercouris: Oh, that makes sense.
<throwprans> rpg: example https://github.com/realworldocaml/book
<jmercouris> So this is my first time touching any CFFI stuff, and I'm having a right challenge with it
<rpg> jmercouris: Seems like that's just the sort of thing that a CL library should wrap up and hide away from you!
<jmercouris> rpg: Seems like, but this, like cl-cffi-gtk is as thin of a layer as possible
<jmercouris> the author does provide a macro called define-g-async-ready-callback, not sure what to does, could be what I need though
<rpg> jmercouris: I'm a big fan of as thick a layer as possible! ;-)
<jmercouris> s/to/that
<jmercouris> rpg: Me too, I've developed a healthy distaste for gtk implementation details :D
<rpg> I understand why it's so, but I'm not excited about libraries that are usable ... if only you know how to use the original C++, C, or Objective C API!1
fikka has quit [Ping timeout: 248 seconds]
quazimodo has joined #lisp
<throwprans> All abstractions are leaky.
<throwprans> But a good fat layer on top always helps, still.
z3t0 has joined #lisp
<rpg> I mean, to be fair, we're a small community, which means we don't have the cycles to support lots of thick APIs.
<rpg> I do understand that, and don't mean to insult the people doing the good work. Just wishing....
<jmercouris> It is what it is, I just wish I was a better C Programmer
<throwprans> on another topic, reading PCL, it goes "At least one of Common Lisp's original designers hated it. LOOP's detractors complain that its syntax is totally un-Lispy (in other words, not enough parentheses)"
<throwprans> (lol "not enough parentheses")
z3t0 has quit [Ping timeout: 248 seconds]
<rpg> throwprans: You triggered the trap! This is where I start ranting about how much better it is to use ITERATE than LOOP! ;-)
<throwprans> So you're going to iterate that idea in a never ending loop?
<rpg> seriously, for a number of reasons, I encourage people to use ITERATE. It's not just that "it's more lispy," LOOP is a not-so-good domain specific language. ITERATE gives you all the power, but in a way that fits better.
<throwprans> I am only learning. So I keep what you said in mind.
<throwprans> Until I learn to use Iterate and see how I feel about the whole thing.
<throwprans> So far I really dig the "lisp-way" there is defs something to it.
<rpg> throwprans: You should probably just leave LOOP and ITERATE alone for a while, and stick to the core of the language.
<throwprans> Well, learning about Macros, it says it is important to understand loops and other control structures.
<throwprans> Or so PCL claims.
<jmercouris> Eventually you'll come across other code, and lot of people use Loop, so you should understand it
<rpg> jmercouris is right, but still not a fan. We turned into an ITERATE shop. Once you've read a couple of LOOPs with IF-THEN-ELSE-ENDIF in them, you'll know why!
al-damiri has quit [Quit: Connection closed for inactivity]
pjb has joined #lisp
<throwprans> But this is a thing of beauty though: (loop for x from 1 to 10 summing (expt x 2)) ==> 385
<throwprans> Show me that with a do or iterate please :)
<jmercouris> This is the macro I was saying I found https://gist.github.com/35966c2230d4683174aa1a3605319c42
<aeth> throwprans: that's actually not efficient. You want something like series, which will ideally use the mathematical identity instead of actually doing the unnecessary loop
<throwprans> Judging from what I know so far, I think I am gonna like loop, I am very much a man of pragmatism, dogma is no good.
<rpg> throwprans: (iter (for x from 1 to 10) (summing (expt x 2)))
<pierpa> I have almost never seen DO in real code
<aeth> Actually is there a macro that knows the identity?
<throwprans> rpg: That is actually nice.
<throwprans> I like it as much as the do example.
<aeth> pierpa: DO is literally just LET where the bindings have an optional increment, and then with a termination step before the body.
<rpg> throwprans: The person who did ITERATE wanted to keep all the power of LOOP, only without the totally different syntax.
<pierpa> I know what it is, still nobody uses it.
<throwprans> rpg: is it part of ANSI Lisp?
<aeth> A lot of people can't even read it, which is strange, because they probably can read let
<throwprans> ANSI Common Lisp, that is.
<rpg> throwprans: No, it's a library.
<jmercouris> Apparently, defcallback should be a top level form
<jmercouris> Interesting
<throwprans> rpg: If it is so bloody good, why isn't standardized?
<rpg> aeth: I find DO very hard to read -- there isn't enough structure to it for me to easily extract the return values, in particular.
<pierpa> because it was written after the standard
<rpg> throwprans: the CL standard is, alas, dead, and will never be revised. There's lots of history about why that is the case.
<throwprans> So, CL as a portable language is frozen?
<aeth> rpg: yeah, do probably would have been better with three clauses, since it sticks in the return value(s) in the same section as the terminating condition, but then that adds an extra thing that's not always used
<jmercouris> rpg: Never say never https://www.youtube.com/watch?v=_Z5-P9v3F8w
<aeth> throwprans: (1) The standard is never going to be updated even though it's incomplete. (2) Don't put in the standard what can be put in a library.
cibs has quit [Remote host closed the connection]
<throwprans> How is the things in Scheme in regards to DO/LOOP/ITER?
FreeBirdLjj has quit [Remote host closed the connection]
<aeth> Even loop probably shouldn't be in the language. You can already do everything loop can do without loop, although it might not be as clean, especially collect
<throwprans> aeth: 2 No.
<throwprans> aeth: I strongly believe a powerful language has a complete "standard library" even if the language is light.
<throwprans> But then again, is the standard library covered in ANSI Common Lisp Standard?
<throwprans> With that being said, I don't know enough lisp to make a fair judgement.
<throwprans> So I will go back to studying.
<throwprans> It was a helpful conversation though. :)
<aeth> throwprans: The de facto standard is the Common Lisp Hyperspec, a web version of the ANSI Standard that looks like it was released with web 0.4
sonologico has quit [Ping timeout: 256 seconds]
<jmercouris> I have this terrible bug in nEXT, I can kill a tab with youtube, and it will keep playing the song
<jmercouris> somehow it doesn't want to release the resource, so now I'm stuck listening to this justin bieber song :\
<throwprans> Okay... just reading some more, loop seems to be it's own language.
<throwprans> So I can see why it doesn't belong in lisp.
<throwprans> (loop for i below 10 and a = 0 then b and b = 1 then (+ b a) finally (return a))
<throwprans> That doesn't read like lisp to me at all.
<aeth> Loop is essentially a mix between a mini ALGOL-style language and list comprehensions
<throwprans> still a handy "macro", if it was one.
<jmercouris> It just started a new justin bieber song :'( what did I do to deserve this
<aeth> (loop for i from 0 below 10 collect i)
<throwprans> But I think the criticism is fair.
<aeth> Simple loops are readable, although you might need to look some stuff up
<aeth> The loops some people put together though... might as well be regular expressions
<throwprans> loop isn't lispy enough. The PCL is unfair in making it an issue with "parentheses" joke.
<throwprans> rpg: So would like to join the club. How do I install this iter library?
<throwprans> Speaking of which, how do you manage deps in lisp?
<jmercouris> throwprans: dependencies are usually managed by a system definition file (asd)
<jmercouris> throwprans: https://common-lisp.net/project/asdf/
<aeth> throwprans: There are three layers. CL itself comes with packages. These are essentially just namespaces for symbols. There are third party systems built on top of this. The overwhelming winner is ASDF, which has a concept called systems, defined in .asd files.
<rpg> throwprans: Sorry -- I have to go AFK right now. The system definition capability that jmercouris refers to is ASDF, and the easiest way for now to install libraries is to grab Quicklisp.
<rpg> I'll probably be around tomorrow...
<aeth> Dependencies are then managed through a "package manager" (although that name is inaccurate because it's a system manager) called Quicklisp, which works on projects, which are basically a set of systems
<throwprans> I know of quicklisp, I had to install it to get vlime (vim + sbcl integration) working.
<throwprans> So I will have a good look.
<throwprans> rpg: catch you around.
<throwprans> jmercouris: Thanks. reading through.
<jmercouris> throwprans: Here's a trivial example: https://github.com/nEXT-Browser/nEXT/blob/master/next/next.asd
<jmercouris> You see I define a system called :next
<jmercouris> if I say something like (ql:quickload :next), and this system definition file is located within my local projects dir, it will load all dependencies listed
<jmercouris> so it will quickload :cl-strings, :cl-string-match, etc, which are also defined with ASD files, and so on and so forth until your dependencies are resolved
<throwprans> I see.
<throwprans> I think I will have to play around with for a bit before I grok it.
<jmercouris> Yeah, but once you do, you'll see that you don't need to tuoch 99% of the spec, so try not to feel too overwhelmed
<aeth> Packages do not necessarily have to correspond to systems, but they probably should to keep things simple.
<aeth> Or, at the very least, there should be a main package with the same name as the system, even if you have other ones
<jmercouris> throwprans: Packages are defined using defpackage http://www.lispworks.com/documentation/HyperSpec/Body/m_defpkg.htm
<throwprans> Anyone from gigamonkeys.com/ around? PCL book could really use some padding.
<jmercouris> throwprans: You won't find the author here, it is not an open source project
<jmercouris> just contact them with any suggestions you may have
<throwprans> jmercouris: Alright, will do.
<throwprans> For now, a userscript should do.
<rme> PCL is a book first and a website second.
<aeth> There are two styles for defining packages. The majority style is to have a package.lisp per directory (so usually just one, if it's just in one src directory or just all at the top level directory). The minority style is to have a package definition at the top of every file, and have one package per file.
z3t0 has joined #lisp
<aeth> The latter makes things look a lot like Python or Java.
<jmercouris> aeth: I've never seen a one package per file definition, why would someone do that?
<aeth> jmercouris: It's an easy way to avoid name conflicts, for one
<aeth> Frequently, you can only safely :use one thing other than :cl before you hit a name conflict
<jmercouris> Hm, that's true, I prefer to have the full name though package-name:function because it allows me to identify code not native to my package
<jmercouris> I might forget which functions I've written/have not written
z3t0 has quit [Ping timeout: 260 seconds]
<aeth> I only use prefixes for huge packages that are clearly designed to be used that way, like cl-opengl (in that case, the gl: or %gl: prefix)
<jmercouris> Can someone explain the warnings I hget when I define a cffi callback: https://gist.github.com/f44d31f5b2195018cd23319eaa4d4675
<jmercouris> it doesn't make sense that I get undefined variable: CALLYBACKY, when I've literally just defined it above
<jmercouris> When I eval it via slime-eval-region it'll show callybacky in the message buffer, so it must be fine, but then it says "callybacky" unbound, YET it autocompletes within slime-company, what is going on here
FreeBirdLjj has joined #lisp
malice has quit [Remote host closed the connection]
Karl_Dscc has quit [Remote host closed the connection]
spoken-tales has quit [Remote host closed the connection]
scymtym has joined #lisp
spoken-tales has joined #lisp
throwprans has quit [Quit: Page closed]
<jmercouris> apparently you have to say (cffi:get-callback 'symbol)
spoken-tales has left #lisp [#lisp]
<jmercouris> I somehow didn't realize that from the example here: https://common-lisp.net/project/cffi/manual/html_node/defcallback.html
<jmercouris> IT WORKED! Sure it crashes because my callback has the wrong args or something, but my callback was invoked!
<jmercouris> We need a celebration bot on this channel
nika has joined #lisp
ahungry has quit [Remote host closed the connection]
<jmercouris> I've gone through so many minion advice, and none of them are even slightly positive, I feel like I should program a new one called "friendly minion" that says friendly and nice things
dddddd has quit [Remote host closed the connection]
<beach> Good morning everyone!
test1600 has joined #lisp
<jmercouris> good morning
FreeBirdLjj has quit [Ping timeout: 260 seconds]
z3t0 has joined #lisp
FreeBirdLjj has joined #lisp
z3t0 has quit [Ping timeout: 240 seconds]
schoppenhauer has quit [Ping timeout: 272 seconds]
schoppenhauer has joined #lisp
pierpa has quit [Quit: Page closed]
zacts has quit [Quit: WeeChat 1.9.1]
zacts has joined #lisp
<sigjuice> morning!
nowhere_man has quit [Remote host closed the connection]
nowhere_man has joined #lisp
shka has joined #lisp
ninegrid has joined #lisp
fikka has joined #lisp
smurfrobot has joined #lisp
fikka has quit [Ping timeout: 248 seconds]
turkja has joined #lisp
smurfrobot has quit [Ping timeout: 260 seconds]
gravicappa has joined #lisp
z3t0 has joined #lisp
mikecheck has left #lisp ["part"]
safe has joined #lisp
z3t0 has quit [Ping timeout: 248 seconds]
z3t0 has joined #lisp
z3t0 has quit [Ping timeout: 252 seconds]
sonologico has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
FreeBirdLjj has joined #lisp
<jmercouris> Is any of the ASDF metadata like author or license used anywhere?
jmercouris has quit [Ping timeout: 260 seconds]
milanj has quit [Quit: This computer has gone to sleep]
smurfrobot has joined #lisp
damke has joined #lisp
damke_ has quit [Ping timeout: 265 seconds]
FreeBirdLjj has quit [Read error: Connection timed out]
knobo has joined #lisp
smurfrobot has quit [Ping timeout: 264 seconds]
FreeBirdLjj has joined #lisp
rpg has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
smurfrobot has joined #lisp
z3t0 has joined #lisp
orivej has joined #lisp
<Zhivago> There are some sites which crawl projects -- I presume it might be used by those.
smurfrobot has quit [Ping timeout: 240 seconds]
z3t0 has quit [Ping timeout: 252 seconds]
rumbler31 has quit [Ping timeout: 248 seconds]
FreeBirdLjj has quit [Ping timeout: 260 seconds]
cibs has joined #lisp
FreeBirdLjj has joined #lisp
z3t0 has joined #lisp
smurfrobot has joined #lisp
FreeBirdLjj has quit [Ping timeout: 240 seconds]
LocaMocha has joined #lisp
igemnace has quit [Quit: WeeChat 2.0.1]
orivej has quit [Ping timeout: 240 seconds]
smurfrobot has quit [Ping timeout: 248 seconds]
vtomole has joined #lisp
mlau has quit [Ping timeout: 248 seconds]
z3t0 has quit [Remote host closed the connection]
igemnace has joined #lisp
smokeink has joined #lisp
mishoo has joined #lisp
knobo has quit [Ping timeout: 240 seconds]
mlau has joined #lisp
fikka has joined #lisp
hiroaki has joined #lisp
fikka has quit [Ping timeout: 252 seconds]
scymtym has quit [Ping timeout: 252 seconds]
asarch has quit [Quit: Leaving]
pfdietz has quit []
dec0n has joined #lisp
FreeBirdLjj has joined #lisp
mlau has quit [Quit: Lost terminal]
hajovonta has joined #lisp
ryanbw has joined #lisp
vtomole has quit [Ping timeout: 260 seconds]
hajovonta has quit [Quit: hajovonta]
hajovonta has joined #lisp
JuanDaugherty has quit [Quit: Ex Chat]
knobo has joined #lisp
FreeBirdLjj has quit [Ping timeout: 252 seconds]
FreeBirdLjj has joined #lisp
mishoo has quit [Ping timeout: 256 seconds]
orivej has joined #lisp
damke_ has joined #lisp
milanj has joined #lisp
damke has quit [Ping timeout: 264 seconds]
rippa has joined #lisp
varjag has joined #lisp
FreeBirdLjj has quit [Read error: Connection timed out]
fikka has joined #lisp
no_bobby has joined #lisp
hyero has quit [Ping timeout: 240 seconds]
mint has quit [Read error: Connection reset by peer]
orivej has quit [Ping timeout: 264 seconds]
<jackdaniel> license is useful when you traverse dependency tree and see, what is a combined work license
FreeBirdLjj has joined #lisp
Cymew has joined #lisp
fikka has quit [Ping timeout: 252 seconds]
mishoo has joined #lisp
damke_ has quit [Ping timeout: 264 seconds]
damke_ has joined #lisp
damke has joined #lisp
mishoo has quit [Ping timeout: 248 seconds]
FreeBirdLjj has quit [Ping timeout: 248 seconds]
damke_ has quit [Ping timeout: 264 seconds]
python476 has joined #lisp
FreeBirdLjj has joined #lisp
orivej has joined #lisp
damke_ has joined #lisp
damke has quit [Ping timeout: 264 seconds]
damke has joined #lisp
scymtym has joined #lisp
python476 has quit [Read error: Connection reset by peer]
damke_ has quit [Ping timeout: 246 seconds]
dddddd has joined #lisp
damke_ has joined #lisp
FreeBirdLjj has quit [Ping timeout: 240 seconds]
damke has quit [Ping timeout: 264 seconds]
damke has joined #lisp
SqREL has joined #lisp
smurfrobot has joined #lisp
rumbler31 has joined #lisp
fikka has joined #lisp
damke_ has quit [Ping timeout: 264 seconds]
quazimodo has quit [Ping timeout: 240 seconds]
JuanDaugherty has joined #lisp
shka has quit [Ping timeout: 248 seconds]
<sigjuice> is there a package that provides a portable getenv function?
<Shinmera> uiop
<sigjuice> Shinmera thanks!
damke has quit [Ping timeout: 264 seconds]
smurfrobot has quit [Ping timeout: 248 seconds]
<sigjuice> hey I was just checkout out Portacle a couple of hours ago. I noticed there were a couple of .git directories in the distribution. Is that intentional?
FreeBirdLjj has joined #lisp
mishoo has joined #lisp
damke has joined #lisp
fikka has quit [Ping timeout: 240 seconds]
damke_ has joined #lisp
safe has quit [Read error: Connection reset by peer]
JonSmith has quit [Remote host closed the connection]
fikka has joined #lisp
damke has quit [Ping timeout: 264 seconds]
mishoo has quit [Ping timeout: 248 seconds]
<Shinmera> Yes
<Shinmera> It's how I deliver updates that aren't binary.
orivej has quit [Ping timeout: 252 seconds]
<Shinmera> Binary upgrades are another feature currently missing from Portacle
<sigjuice> binary updates is probably a tough problem
<Shinmera> The basic idea is just to download the latest archive from github and automatically extract it over the existing installation.
<Shinmera> Things get a bit complicated when you consider Windows though since you can't overwrite a running binary there, so
orivej has joined #lisp
<sigjuice> Updating binaries that are being used: this is something I never really understood. I have seen really weird inexplicable stuff even on Linux.
<Shinmera> Well, something has to be running the update process, you know
damke has joined #lisp
FreeBirdLjj has quit [Ping timeout: 268 seconds]
damke_ has quit [Ping timeout: 264 seconds]
quazimodo has joined #lisp
damke_ has joined #lisp
damke has quit [Ping timeout: 264 seconds]
hhdave has joined #lisp
z0d has quit [Remote host closed the connection]
makomo has joined #lisp
mishoo has joined #lisp
d4ryus1 is now known as d4ryus
aeth has quit [Ping timeout: 248 seconds]
rumbler31 has quit [Ping timeout: 264 seconds]
z0d has joined #lisp
FreeBirdLjj has joined #lisp
rumbler31 has joined #lisp
aeth has joined #lisp
Murii has joined #lisp
damke_ has quit [Read error: Connection reset by peer]
<osune_> do i understand it correct that cl:decode-universal-time returns the timezone UTC offset inversed (multiplicated with -1)? E.g. I'm in UTC+1 , but the function returns -1 . If so, does somebody know the reasoning behind that? And while we are at it, what is the prefered / recommended calendar library for cl?
damke_ has joined #lisp
<Shinmera> clhs glossary/time zone
<Shinmera> As for libs, local-time is about the best you'll get.
rumbler31 has quit [Ping timeout: 265 seconds]
<osune_> thx I took a look at http://www.lispworks.com/documentation/HyperSpec/Body/25_ad.htm but missed to look at the glossary
<osune_> Shinmera: but the glossary just states "that's how it is" , is there a known reason `why` that is? I mean it seems counter intuitive for the use cases I can think of.
rumbler31 has joined #lisp
<Shinmera> Probably previous implementations' behaviour
<Shinmera> Or rather, CL predecessors' behaviour
<Shinmera> There's nothing about the direction of the TZ value in the issues, so that's the best guess I have.
JonSmith has joined #lisp
<osune_> hm, I would lie saying that this is an answer that satisfies me. But I guess it has to. Thanks
smokeink has quit [Ping timeout: 264 seconds]
Arcaelyx_ has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
FreeBirdLjj has quit [Ping timeout: 268 seconds]
hiroaki has quit [Ping timeout: 255 seconds]
<Shinmera> Another way to look at it is that the TZ is the difference between local time and UTC.
hhdave has quit [Ping timeout: 256 seconds]
JonSmith has quit [Ping timeout: 250 seconds]
rumbler31 has quit [Ping timeout: 260 seconds]
rumbler31 has joined #lisp
FreeBirdLjj has joined #lisp
<osune_> I guess you can look at it that way, and maybe I didn't had enough exposure to TZ problems to appreciate it. But apart from your guess (inheritance) there seems no valid reason why one would choose to implement it that way, or at least expose this implementation detail it to the user
<Shinmera> What do you mean, "expose that detail"
<Zhivago> Is it describing what it did to a local time to produce a universal time?
smurfrobot has joined #lisp
<osune_> I mean: assuming that there is no benefit for solving specific problems by working with (- TZ), I assume that there are other reasons to use (- TZ) internaly. But as there are no specific problems which benefit from (- TZ) it doesn't make sense to expose this detail to the user. (decode-universal-time) could just return (- (- TZ)) and work with (- TZ) internal.
<osune_> Zhivago: I'm not sure what you are asking ?
<Shinmera> When you need to be compatible with existing systems you don't have a choice.
<Shinmera> A lot of things in CL aren't there because that's what they thought was cool and great to have, but it's there because of the constraints under which CL was formed.
gravicappa has quit [Ping timeout: 268 seconds]
<osune_> Shinmera: sure that's a valid reason, which I'm not arguing. That's why I said "I take it as an answer". But this just propagates the question to "why did one existing system initially choose to behave like that"
smurfrobot has quit [Ping timeout: 264 seconds]
<Shinmera> You're going to have to hit the history books for that.
<Shinmera> Either way, as I said, seeing the TZ as the difference between local time and UTC (thus being "inverted") seems like a reasonable way to do things to me.
<osune_> Hoped I could cheat this time ;)
rumbler31 has quit [Ping timeout: 250 seconds]
FreeBirdLjj has quit [Ping timeout: 260 seconds]
FreeBirdLjj has joined #lisp
<beach> I vividly remember having a hard time getting used to the current convention.
<osune_> beach: can you expand on that?
<beach> At the time, I just thought that east of UTC should be negative.
<beach> It is just a convention, after all.
<Shinmera> Just a matter of whether you think of things going from UTC or to UTC.
<beach> It is not "intuitive" either way. It is all about being used to one or the other.
<osune_> Sure it is just that. But I was not aware that "East to UTC is negative" was ever a wide spread convention.
<beach> Possibly. But it is possible that there didn't used to be a convention at all, so Lisp implementers had to pick one.
dddddd has quit [Remote host closed the connection]
smurfrobot has joined #lisp
FreeBirdLjj has quit [Ping timeout: 240 seconds]
<osune_> I'm reading up on the history of time zones atm and acording to wikipedia "By 1929, most major countries had adopted hourly time zones [with reference to GMT]. Nepal was the last country to adopt a standard offset , shifting slightly to UTC+5:45 in 1986" https://en.wikipedia.org/wiki/Time_zone#Worldwide_time_zones Currently I'm looking through the different ISO standards for time zones and dates / time
smurfrobot has quit [Ping timeout: 248 seconds]
<beach> You might try to look at the Maclisp manual and see whether the convention was the same as in Common Lisp. If so, Shinmera is very likely right in that the Lisp function existed before the current convention was established.
vlatkoB has joined #lisp
<osune_> beach: thanks i'll have a look. It seems the first standard regarding representation of local time differentials was ISO4031 from 1978 , which was superseeded in 1988 by ISO8601. Unfortunately I don't find a public version of ISO4031. So it seems Shinmera is right with his guess.
nika has quit []
damke has joined #lisp
damke_ has quit [Ping timeout: 264 seconds]
<osune_> The MacLisp Reference Manual by Moon (1974) doesn't seem to even know about time zones :/
smurfrobot has joined #lisp
<Shinmera> More innocent times :)
FreeBirdLjj has joined #lisp
_cosmonaut_ has joined #lisp
<osune_> I have a friend searching for the ISO 4031 standard, maybe I'll find the "horrible" truth there :D
SqREL has quit [Ping timeout: 264 seconds]
<aeth> ISO 8601, one of the best standards, and the only one I know by number.
SqREL has joined #lisp
smurfrobot has quit [Ping timeout: 256 seconds]
FreeBirdLjj has quit [Ping timeout: 255 seconds]
smurfrobot has joined #lisp
<aeth> It's not just the negation, the actual timezone information itself is different iirc. ISO 8601 encodes DST directly in its UTC offset. CL can thus given a different UTC offest than Unix's (or is it just GNU's?) "date -Isecond"
nicdev has quit [Remote host closed the connection]
<aeth> e.g. NYC is -04:00 during DST in ISO 8601 and is always +5 in CL afaik
fikka has quit [Ping timeout: 248 seconds]
<aeth> If I converted it correctly: (- (- hour-offset (if dstp 1 0)))
<Shinmera> I really hate the thing about changing TZs with the DST, so I prefer CL in that regard
smurfrobot has quit [Ping timeout: 256 seconds]
gravicappa has joined #lisp
rumbler31 has joined #lisp
<osune_> yep that is a nice touch
FreeBirdLjj has joined #lisp
Jarwin has joined #lisp
Jarwin is now known as Jarwin
Jarwin has quit [Client Quit]
Jarwin has joined #lisp
test1600 has quit [Quit: Leaving]
Jarwin is now known as Jarwin
<osune_> Well no luck: my friend says the truth hidden in ISO 4031 is so horrible that he has no access via the university he is working at. I'm assuming it contains eldritch type horrors which are better left untouched.
<aeth> Turns out that that conspiracy theory about someone just making up hundreds of years of history was true and is incoded in ISO 4031? Incredible!
orivej has quit [Ping timeout: 246 seconds]
<aeth> s/incoded/encoded/
naturalog has quit [Remote host closed the connection]
<osune_> Illig was right all the time !
orivej has joined #lisp
damke_ has joined #lisp
oleo has quit [Remote host closed the connection]
damke has quit [Ping timeout: 264 seconds]
oleo has joined #lisp
ykoda has joined #lisp
orivej has quit [Ping timeout: 260 seconds]
fikka has joined #lisp
orivej has joined #lisp
rumbler31 has quit [Ping timeout: 248 seconds]
angavrilov has joined #lisp
m00natic has joined #lisp
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #lisp
<osune_> aeth: wait a sec . You said "Its not just the negation". I didn't read ISO 8601 , but your sentence implies that there it is stated something like "as it is known, in the west of Greenwhich the offset is positive in the east it's negative. But for what ever reason we negate the offset". Or do I missunderstood ?
<osune_> s/do/did
<osune_> or did your statement refer to the differences between CL and the standard?
quazimodo has quit [Ping timeout: 264 seconds]
orivej has quit [Ping timeout: 240 seconds]
versatile has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
FreeBirdLjj has joined #lisp
Murii has quit [Quit: WeeChat 1.4]
versatile is now known as Murii
JonSmith has joined #lisp
smurfrobot has joined #lisp
JonSmith has quit [Ping timeout: 246 seconds]
markong has joined #lisp
smurfrobot has quit [Ping timeout: 255 seconds]
wxie has joined #lisp
Kevslinger has quit [Quit: Connection closed for inactivity]
smurfrobot has joined #lisp
<pjb> aeth: (- (- a b)) = (- b a)
wxie has quit [Client Quit]
spacepluk has quit [Quit: ZNC - http://znc.in]
vlatkoB has quit [Remote host closed the connection]
rumbler31 has joined #lisp
vlatkoB has joined #lisp
spacepluk has joined #lisp
Murii has quit [Ping timeout: 248 seconds]
jfb4 has quit [Ping timeout: 240 seconds]
davsebamse has quit [Ping timeout: 240 seconds]
rumbler3_ has joined #lisp
jfb4 has joined #lisp
rumbler31 has quit [Ping timeout: 268 seconds]
mishoo has quit [Quit: (save-lisp-and-die)]
davsebamse has joined #lisp
smurfrobot has quit [Remote host closed the connection]
mishoo has joined #lisp
smurfrobot has joined #lisp
Karl_Dscc has joined #lisp
fortitude has quit [Ping timeout: 248 seconds]
Kevslinger has joined #lisp
random-nick has joined #lisp
makomo_ has joined #lisp
Jarwin has quit [Quit: WeeChat 1.9.1]
makomo has quit [Ping timeout: 240 seconds]
marcux has joined #lisp
smokeink has joined #lisp
aoh_ is now known as aoh
eviltofu has joined #lisp
aoh has quit [Changing host]
aoh has joined #lisp
<eviltofu> Heyo! How does one invoke the debugger in emacs for SBCL?
<eviltofu> I would like to see the state of some variables.
nirved has joined #lisp
<Shinmera> clhs break
smurfrobot has quit [Remote host closed the connection]
Tobbi has joined #lisp
ikki has joined #lisp
no_bobby has quit [Ping timeout: 240 seconds]
rpg has joined #lisp
igemnace has quit [Ping timeout: 265 seconds]
random-nick has quit [Remote host closed the connection]
wxie has joined #lisp
myrkraverk has quit [Ping timeout: 264 seconds]
random-nick has joined #lisp
<pjb> eviltofu: the function to see to see the state of some variables is: PRINT
<hajovonta> or just type the variable name in the repl
<Shinmera> hajovonta: I presume he meant lexical variables.
<hajovonta> yeah and it may not invoke the debugger. except when it's undefined
<Shinmera> "it"?
<p_l> if someone has L-bus Symbolics in need of parts, there are boards for $200 on sale https://www.ebay.com/sch/71271.1417/m.html?_nkw=&_armrs=1&_ipg=&_from=
igemnace has joined #lisp
kajo has quit [Ping timeout: 265 seconds]
smurfrobot has joined #lisp
no_bobby has joined #lisp
wxie has quit [Remote host closed the connection]
zooey has quit [Remote host closed the connection]
prometheus_falli has quit [Read error: Connection reset by peer]
no_bobby has quit [Ping timeout: 252 seconds]
zooey has joined #lisp
shifty has quit [Ping timeout: 248 seconds]
prometheus_falli has joined #lisp
raynold has quit [Quit: Connection closed for inactivity]
smokeink has quit [Remote host closed the connection]
<eviltofu> So when I insert a (break) into my code, I run it; when the debugger shows up. I type print "var name"?
marcux has quit [Ping timeout: 260 seconds]
<Shinmera> You can just hit return on the stack frame and it'll show you the lexical variables it knows about
<Shinmera> ones it does not show won't be available anyway because they've been compiled away.
smurfrobot has quit [Remote host closed the connection]
brendyn has quit [Ping timeout: 240 seconds]
<Shinmera> In other news, Colleen can now provide lookup similar to specbot for most of my libraries and projects.
<Shinmera> Colleen: look up 3d-vectors vunit
<Colleen> Function 3d-vectors:vunit https://shinmera.github.io/3d-vectors#FUNCTION%203D-VECTORS%3AVUNIT
<Shinmera> Colleen: radiance 2.5
<Colleen> Unknown command. Possible matches: 8, say, roll, set, mop, get, reload, ramble, login, grant,
<Shinmera> Colleen: look up radiance 2.5
<Colleen> 2.5 database https://shirakumo.github.io/radiance#2.5_database
<Shinmera> There we go.
smokeink has joined #lisp
orivej has joined #lisp
nowhere_man has quit [Ping timeout: 240 seconds]
myrkraverk has joined #lisp
Murii has joined #lisp
smurfrobot has joined #lisp
oystewh has quit [Read error: Connection reset by peer]
<eviltofu> what is the stack frame?
Bike has joined #lisp
<Shinmera> The backtrace in sldb is composed of stack frames
<beach> eviltofu: Are you using SLIME?
<beach> eviltofu: When the execution stops because of the BREAK, you will see a window with one line for each currently active stack frame. If you put your cursor at the beginning of such a line and hit return, you should see the lexical variables that are still live.
<beach> eviltofu: All that assumes that you compiled your program with a high value for DEBUG.
<Shinmera> Or just the unit that you're breaking in. You can use C-u C-c C-c to compile a block with high debug.
<eviltofu> I see restarts and backtrace
<beach> The backtrace is the list of stack frames.
sigjuice has quit [Ping timeout: 272 seconds]
<eviltofu> ok so I highlight it and hit return
<beach> You just put the Emacs point at the beginning of the line and hit return.
<eviltofu> Thank you I see it now
<beach> No hightlight.
<beach> highlight.
smokeink has quit [Ping timeout: 240 seconds]
<eviltofu> ok I can see my object, the hash table inside it
<eviltofu> thats great
sigjuice has joined #lisp
<eviltofu> Thanks
<Shinmera> You can also inspect the values by clicking on them or moving the cursor to them and hitting return
<Shinmera> (just clicking on a frame will also expand it btw)
<eviltofu> Yes this is much better than printing the object
<Shinmera> For values on the repl you can also easily inspect the last one with slime using M-x slime-inspect * RET
<Shinmera> (you can substitute any other form the value of which to inspect for *, too)
<eviltofu> C-c C-v tab
makomo_ is now known as makomo
<eviltofu> ok so unrelated emacs question: can I ask here?
poly has joined #lisp
poly has left #lisp [#lisp]
hjudt_ has left #lisp [#lisp]
ikki has quit [Ping timeout: 260 seconds]
JonSmith has joined #lisp
<Xach> No
<Xach> This is a channel for Common Lisp
varjagg has joined #lisp
kolko has quit [Ping timeout: 272 seconds]
JonSmith has quit [Ping timeout: 264 seconds]
asarch has joined #lisp
eviltofu has quit [Quit: Page closed]
smurfrobot has quit [Remote host closed the connection]
hjudt has joined #lisp
rumbler3_ has quit [Remote host closed the connection]
fikka has quit [Ping timeout: 252 seconds]
eviltofu has joined #lisp
LiamH has joined #lisp
smurfrobot has joined #lisp
<jackdaniel> eviltofu: try on #emacs
pjb has quit [Remote host closed the connection]
Karl_Dscc has quit [Remote host closed the connection]
smurfrobot has quit [Ping timeout: 252 seconds]
knobo has quit [Ping timeout: 248 seconds]
malice has joined #lisp
smurfrobot has joined #lisp
eviltofu has quit [Ping timeout: 260 seconds]
fikka has joined #lisp
varjagg has quit [Ping timeout: 265 seconds]
markong has quit [Quit: Konversation terminated!]
markong has joined #lisp
fikka has quit [Ping timeout: 252 seconds]
rpg has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
lroca has joined #lisp
scymtym has quit [Ping timeout: 240 seconds]
<malice> Anyone knows drakma? Can I somehow check headers of the request sent by http-request? I'm interested in headers created when using cookies.
<Shinmera> I believe the manual shows a way that prints the sent data
<malice> I'll check that. Thanks!
fikka has joined #lisp
<Xach> malice: sometimes i use nc on localhost to see.
dddddd has joined #lisp
hajovonta has quit [Remote host closed the connection]
rumbler31 has joined #lisp
mishoo has quit [Ping timeout: 263 seconds]
JonSmith has joined #lisp
python476 has joined #lisp
dec0n has quit [Read error: Connection reset by peer]
smurfrobot has quit [Remote host closed the connection]
Cymew has quit [Remote host closed the connection]
rpg has joined #lisp
Cymew has joined #lisp
smurfrobot has joined #lisp
Achylles has joined #lisp
KZiemian has joined #lisp
Cymew has quit [Ping timeout: 265 seconds]
rpg has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
Cymew has joined #lisp
rpg has joined #lisp
smurfrobot has quit [Remote host closed the connection]
smurfrobot has joined #lisp
Cymew has quit [Ping timeout: 252 seconds]
python476 has quit [Remote host closed the connection]
Cymew has joined #lisp
hhdave has joined #lisp
<malice> Xach: I will check that out too
<malice> Though now I leave. Thanks Shinmera, it was in manual after all
malice has quit [Remote host closed the connection]
Cymew has quit [Ping timeout: 248 seconds]
smurfrobot has quit [Remote host closed the connection]
smurfrobot has joined #lisp
SaganMan has joined #lisp
mishoo has joined #lisp
pjb` has joined #lisp
ikki has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
dieggsy has joined #lisp
FreeBirdLjj has joined #lisp
knobo has joined #lisp
hexfive has joined #lisp
SqREL has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
damke has joined #lisp
pjb`` has joined #lisp
FreeBirdLjj has quit [Ping timeout: 268 seconds]
KZiemian has quit [Quit: Page closed]
pjb` has quit [Ping timeout: 255 seconds]
damke_ has quit [Ping timeout: 265 seconds]
smurfrobot has quit [Remote host closed the connection]
pjb`` has quit [Ping timeout: 246 seconds]
Jesin has joined #lisp
smurfrobot has joined #lisp
zooey has quit [Remote host closed the connection]
scymtym has joined #lisp
zooey has joined #lisp
pjb`` has joined #lisp
turkja has quit [Ping timeout: 260 seconds]
smurfrobot has quit [Ping timeout: 240 seconds]
pjb`` has quit [Ping timeout: 240 seconds]
dieggsy has quit [Remote host closed the connection]
fikka has quit [Ping timeout: 256 seconds]
Arcaelyx has joined #lisp
nowhere_man has joined #lisp
dieggsy has joined #lisp
smurfrobot has joined #lisp
pjb`` has joined #lisp
pjb`` has quit [Ping timeout: 276 seconds]
damke_ has joined #lisp
smurfrobot has quit [Ping timeout: 240 seconds]
pjb`` has joined #lisp
damke has quit [Ping timeout: 264 seconds]
fikka has joined #lisp
pjb`` has quit [Ping timeout: 255 seconds]
pjb`` has joined #lisp
warweasle has joined #lisp
pjb`` has quit [Ping timeout: 240 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]
Tobbi has quit [Remote host closed the connection]
dieggsy has quit [Remote host closed the connection]
eviltofu has joined #lisp
Tobbi has joined #lisp
pjb`` has joined #lisp
eviltofu has quit [Client Quit]
gravicappa has quit [Ping timeout: 240 seconds]
pjb`` has quit [Ping timeout: 255 seconds]
troydm has joined #lisp
zooey has quit [Remote host closed the connection]
fikka has quit [Ping timeout: 248 seconds]
SqREL has joined #lisp
SqREL has quit [Client Quit]
m00natic has quit [Remote host closed the connection]
pjb`` has joined #lisp
rpg has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
hhdave has quit [Ping timeout: 248 seconds]
zooey has joined #lisp
rpg has joined #lisp
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #lisp
pjb`` has quit [Remote host closed the connection]
Tobbi has quit [Remote host closed the connection]
Tobbi has joined #lisp
smurfrobot has joined #lisp
smurfrobot has quit [Remote host closed the connection]
FreeBirdLjj has joined #lisp
alandipert has quit [Quit: Ping timeout (120 seconds)]
pjb`` has joined #lisp
knobo has quit [Ping timeout: 268 seconds]
alandipert has joined #lisp
knobo has joined #lisp
shka has joined #lisp
Tobbi has quit [Remote host closed the connection]
junxit has joined #lisp
pjb`` has quit [Remote host closed the connection]
Tobbi has joined #lisp
<junxit> I'm using drakma to connect to several APIs, and one of them is coming back with "error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version" ... I have a call that works in curl from the command line (MacOSX), but doesn't work from drakma ...other API calls to different sites work fine. I'm not sure what the next step in troubleshooting is, any suggestions?
pjb`` has joined #lisp
lroca has quit [Ping timeout: 248 seconds]
SaganMan has quit [Quit: oyasumi]
_cosmonaut_ has quit [Ping timeout: 256 seconds]
pjb`` has quit [Remote host closed the connection]
EvW has joined #lisp
pjb`` has joined #lisp
<razzy> does anyone know about #ocp-storage open computing project?
<razzy> sorry moving to lispcafe :]
raynold has joined #lisp
pjb`` has quit [Ping timeout: 255 seconds]
FreeBirdLjj has quit [Ping timeout: 260 seconds]
smurfrobot has joined #lisp
smurfrobot has quit [Remote host closed the connection]
<rpg> junxit: Just from reading that, I wonder if Drakma is doing the authentication wrong. It looks like maybe you're using TLS and you have the wrong version?
* rpg knows nothing about TLS or its versions
<junxit> yeah, but I'm not finding how to change/force that ... it's weird that it is only the one site that does it.
<junxit> I tested it on a remote linux box, and it works. It also has always worked in the past *sigh*
varjagg has joined #lisp
<rpg> junxit: You probably need to figure out first if it's an error in Drakma, or an error in the remote site.
<junxit> I tested the same call using curl from the command line (outside of lisp) and it works.
<Xach> junxit: does it work if you use dexador? that's an alternative to drakma
<Xach> I'm just curious - feel free not to try
lroca has joined #lisp
<junxit> but drakma is working for other sites .. I'll give it a try
<rpg> junxit: All the run with curl tells you is that curl and the remote site are compatible. Unless you know how curl's behavior differs from Drakma's behavior, you are not much further along (except that you know that the remote site isn't just plain broken).
FreeBirdLjj has joined #lisp
cibs has quit [Quit: Lost terminal]
<rpg> A good start in debugging might be to look at curl's command-line options and see if there's some auth setting that will make curl *also* break. That might help narrow things down. Or you get into Drakma and start tracing things. Or both
lroca has quit [Remote host closed the connection]
damke has joined #lisp
lroca has joined #lisp
<junxit> hmm ... dexador throws the same cl+ssl error
<asarch> Is there any extension to Common Lisp to do presentations a la Racket?
damke_ has quit [Ping timeout: 264 seconds]
tomlukeywood has joined #lisp
<tomlukeywood> how would i initialise all the elements of an array with a value in common lisp?
<rumbler31> junxit: are the problematic apis public?
lroca has quit [Quit: lroca]
<junxit> yeah, they're Jira APIs and it seems to be a problem with my laptop as it works on a remote linux box
<junxit> maybe cl+ssl issue on macos or something
pjb`` has joined #lisp
<junxit> both drakma and dexador throw the same SSL error `A failure in the SSL library occurred on handle #<A Foreign Pointer #x1506150> (return code: 1).
<junxit> SSL error queue:
<junxit> error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version`
lroca has joined #lisp
<rumbler31> junxit: looks like you're not the only one
<rumbler31> is your curl from macports/homebrew?
dieggsy has joined #lisp
orivej has quit [Ping timeout: 255 seconds]
<junxit> @tomlukeywood use :initial-element or :initial-contents ... :initial-element sets all elements to the same value, :initial-contents you have to specify a value for every element in the array
<tomlukeywood> thanks
dieggsy has quit [Remote host closed the connection]
FreeBirdLjj has quit [Ping timeout: 268 seconds]
arbv has quit [Ping timeout: 268 seconds]
orivej has joined #lisp
<junxit> @rumbler31 new laptop, so not using macports/homebrew .. openssl and curl seem to be stock
arbv has joined #lisp
<junxit> openssl version -> OpenSSL 0.9.8zh 14 Jan 2016
<junxit>
warweasle has quit [Quit: If I do some work I might not be bored.]
lroca is now known as _roca
pjb`` has quit [Remote host closed the connection]
pjb``` has joined #lisp
<rumbler31> can you replicate the error with the method in the issue?
domovod has joined #lisp
<junxit> yep, 1795:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-64.50.7/src/ssl/s23_lib.c:185:
<junxit> well, not exactly the same error, but seems close enough
<junxit> I've been putting off an update to Xcode, I'll update and see. If not, I'll install the homebrew version of openssl
pjb```` has joined #lisp
norserob has quit [Read error: Connection reset by peer]
<junxit> also, the same openssl command connects to the other sites that *are* working. I'm going to guess that they updated the Jira server over the holiday, and it introduced an incompatibility
norserob has joined #lisp
pjb``` has quit [Ping timeout: 250 seconds]
<junxit> thanks much, @rpg @rumbler31 and @Xach
<rumbler31> gl!
<tomlukeywood> i am trying to give constants as parameters to (make-array) however i get an error when doing so. what is the correct way?
pjb```` has quit [Remote host closed the connection]
orivej has quit [Ping timeout: 255 seconds]
pjb````` has joined #lisp
<Xach> tomlukeywood: '(foo bar) evaluates is a list of two symbols. (list foo bar) will evaluate to a list of the value of two variables, FOO and BAR.
<Xach> You want the latter.
<tomlukeywood> thanks
<junxit> ^^ that ... beat me to it
<Xach> tomlukeywood: also, it's good to syntactically mark constants so they don't clash with other bindings.
<tomlukeywood> what do you mean like myprogram-rows?
<Xach> tomlukeywood: In CL I often see constants marked with crosses, like +rows+ and +columns+
<tomlukeywood> ok will do
fikka has joined #lisp
pjb````` has quit [Remote host closed the connection]
<rpg> I think Robert Strandh has a lisp style guide somewhere on the web that covers this sort of thing. It was very good, I thought.
orivej has joined #lisp
<rpg> No: I was talking about a style manual, not a language manual.
nipav has joined #lisp
fikka has quit [Ping timeout: 248 seconds]
<rpg> Google's is here https://google.github.io/styleguide/lispguide.xml (haven't read it)
<rpg> maybe I'm mis-remembering.
pjb````` has joined #lisp
rpg_ has joined #lisp
<rpg_> Actually, Robert Strandh's style guide is a PDF.
nipav has quit [Quit: leaving]
LocaMocha has quit [Ping timeout: 240 seconds]
rpg has quit [Ping timeout: 252 seconds]
<rpg_> I can't find it any more. If he's around, and doesn't object, I'd be happy to share it.
rpg_ is now known as rpg
megalography has quit [Ping timeout: 240 seconds]
random-nick has quit [Remote host closed the connection]
<shka> rpg: there are latex pdfs
<shka> *sources
<rpg> shka: Oh, where are they?
<shka> one second!
python476 has joined #lisp
<shka> rpg: i can't find it, i can swear it used to be in the SICL, though…
Kaisyu has quit [Quit: Connection closed for inactivity]
<shka> i will check git history
<shka> yeah
<shka> rpg: \chapter{General \commonlisp{} style guide}
Achylles has quit [Remote host closed the connection]
<phoe> github should auto-render TeX files in its preview, or at least offer it as an option.
<fiddlerwoaroof> loop is lispy because a lisp is fundamentally just a way to write a bunch of domain specific languages to solve your problems in :)
<phoe> LISP actually stands for Language Idiom Subdomain Protocol, which is a set of rules for developing custom DSLs to resolve particular classes of problems.
<phoe> </lispcafe>
warweasle has joined #lisp
damke_ has joined #lisp
nowhereman has joined #lisp
nowhere_man has quit [Ping timeout: 248 seconds]
asarch has quit [Quit: Leaving]
damke has quit [Ping timeout: 264 seconds]
jmercouris has joined #lisp
<phoe> gah, I want to sit down and work on the UltraSpec. real life knows different though and keeps on throwing health/family/various other real life issues at me. I don't expect to be able to sit down and focus on it for the next 2+ months.
<phoe> and I God damn want to lead this projet to a successful end.
<jmercouris> phoe: It's okay, it isn't urgent
pjb````` has quit [Remote host closed the connection]
<jmercouris> Whether it gets down now, or never, is okay, don't stress out about it
<Shinmera> I don't think he thinks it's urgent, he just wants to work on it.
<Shinmera> Similar to how I want to do pretty much anything except study for upcoming exams
<jmercouris> Ah, I know that feeling
<phoe> jmercouris: I'm just freaking sorry to let down all the people who offer me support at the moment and tell them that I'm not yet ready to lead the way.
<jmercouris> phoe: Yeah, I can understand that, but it's okay, we are all human, with likely similar issues
<jmercouris> phoe: If they are good people, they will understand
<jmercouris> If they are not, then fuck them
<phoe> I did a crapload of work converting things to DokuWiki and this work is right now pretty much useless for further work because I'm the only person around here right now who knows the details of DokuWiki format that I chose and the kinks and culprits of the current files.
<phoe> I screwed up by that, I should have started from the beginning with distributed knowledge instead of knowledge that's stuck in my head and I have no time to sit down and utilize it.
<jmercouris> Next time you'll do better
<phoe> well, shit. the only excuse I have is, all things take their time in the land of Lisp.
<jmercouris> I think it's a good thing to share your experience, because maybe someone reading this channel log will avoid the same
<jmercouris> All things take time in life, it is not a race
random-nick has joined #lisp
<rpg> Is there anything like a PATHNAME-DESIGNATOR-P function? Kind of hate to keep writing (or (stringp x) (pathnamep x))
<Shinmera> Why would you need to do that anyway
<jasom> can't pandoc output DokuWiki?
<Shinmera> All pathname functions take designators already so if something falls outside of that it'll error.
<jmercouris> I didn't think try-catch was a lispy way of doing things
<rpg> Shinmera: I have something like the case in CFFI -- I want to be able to supply an s-expression that evaluates to a pathname, in place of a pathname.
<phoe> rpg: define your custom type PATHNAME-DESIGNATOR and use this.
<jasom> jmercouris: handler-case is perfectly lispy
<Shinmera> rpg: I don't understand
<rpg> So it's (if (typep x '(or string pathname)) x (eval x))
<phoe> rpg: it's pointless
<phoe> this is equivalent to X
<rpg> phoe: not if X is quoted
<phoe> suh I mean, (eval X)
<Shinmera> Strings and pathnames evaluate to themselves
<phoe> ^
<rpg> OK, good point.
<jmercouris> jasom: Hey jasom, I was wondering, would you like to be mentioned in the release credits?
<Shinmera> And the next question is: why are you using eval?
<jasom> jmercouris: doesn't matter either way to me
<jmercouris> Ok, cool, then I will probably mention you
<jasom> jmercouris: thanks
<rpg> Shinmera: I'm running experiments, and I want to dump a *portable* file designator into the output. E.g., I want the experiment file to report that the data was in (asdf:system-relative-pathname "experiments" "datafile1")
pjb````` has joined #lisp
pjb````` has quit [Remote host closed the connection]
<rpg> So I have a table of file designators that are s-expressions that can be printed into the script and then get evaluated to point to real files.
<Shinmera> That tells me nothing about why you think you need to use eval?
<shka> you shall not use eval!
<shka> protect him from evil!
<rpg> Shinmera: those expressions are quoted (so they can be echoed).
<_death> and live apply ever after
<shka> :D
<rpg> The quoted s-expressions are portable designators. Namestrings are not
<shka> rpg: why not program custom writer and reader?
<rpg> This isn't a reader/writer problem.
<Shinmera> rpg: Use a macro that emits a quoted and unquoted version. One for printing, the other for the value.
<Shinmera> rpg: I still don't quite understand though-- what pathname do you want to output? The one in which your experiment resides or?
<rpg> Shinmera: that just moves the EVAL somewhere else!
<Shinmera> No?
<jmercouris> Can anyone please help with a CFFI issue I'm having, getting the return back from a function: https://gist.github.com/875972985687a4d9d0f4afb80cb77975
<jmercouris> I'm simply trying to print it to console
<rpg> Shinmera: I want to emit into a transcript file the *portable* file designator (the asdf:system-relative-pathname expression), so that the experiments can be replicated, but I need to evaluate them to actually get the data to process.
<rpg> I could spend an hour futzing around or type "EVAL".
<jmercouris> Within my callback, "callbacky" I'm trying to get the value of: webkit-javascript-result-get-value
<Shinmera> (defmacro foo (expr) `(list :value ,expr :expr ',expr)) ; (foo (make-pathname :name "a")) => (:value "a" :expr (make-pathname :name "a"))
<Xach> rpg: If it were me, I'd store the arguments to asdf:system-relative-pathname and apply them later. I would not use eval.
<Shinmera> Err, :value #p"a", but you get the idea
<rpg> If this was more than a one off, I think you two would be right, but since it's a one off -- and not exposed to anyone to be a security threat -- these solutions smell like over-thinking.
ykoda has quit [Remote host closed the connection]
<Shinmera> It's more about learning how to think properly.
<Xach> but then what's the fun of irc :~(
<jasom> jmercouris: that's printing a pointer
<rpg> Shinmera: I know how to do this if I'm going to do it right, but there's also an issue of knowing what's the proper cost-benefit tradeoff.
<Shinmera> I've yet to encounter a problem that I could solve significantly faster with eval.
<shka> hehe
<jasom> jmercouris: also if you named it scratchy.lisp instead of scratch.txt gist would syntax highlight it
<shka> i will remember this quote "It's more about learning how to think properly."
<shka> i will use in some dystopian s-f novel :D
<Shinmera> shka: I'll want at least 90% of the profits off of that novel as royalties for that sentence.
<jasom> jmercouris: reading the webkit docs, you get a pointer to a JSValue, the address of that pointer appears to be #X7FFFF002C830
<Shinmera> shka: Just to keep things nicely meta-dystopian
<shka> will do
<jmercouris> jasom: I'll name em better in the future :D
<jmercouris> I didn't know that
<jmercouris> jasom: Right, but given that pointer, how do I get that value at that pointer in lisp?
<jmercouris> can I not just pass it to cffi:convert-from-foreign?
<jasom> jmercouris: no, because you don't know what it is yet
<jasom> you need to do the equivalent of the C code at the link I just posted
<jasom> that decodes it as a string or prints a warning
<jasom> if you don't know the type then you'll have to handle all the possible JS values
<jasom> it's probably worthwhile to write a function to convert a JSValueRef to a lisp value, but you need to deal with NaN and Infinity that don't exist in lisp
<jmercouris> But if you look on line number 19 you'll see webkit-javascript-result-get-value
<jasom> jmercouris: that gives you a JSValueRef
<jasom> it could be an array an object a string &ct.
<Bike> most implementations use ieee floats i think, yhou just don't usually get a hold of them
<jasom> any value representable in javascript
z3t0 has joined #lisp
<rpg> Xach, Shinmera: I think there's a temptation to try to always to The Right Thing, but it's important also not to confuse production code with a utility script.
<Shinmera> rpg: You can do whatever you want, naturally, but I can also criticise you for it. Your choice whether you want to let that bother you :)
<jmercouris> jasom: So I need to make a JSValueRef?
<jmercouris> This is really confusing me trying to go back and forth between the languages
<jasom> jmercouris: no, result-get-value gives you a JSValueRef
jstypo has quit [Ping timeout: 264 seconds]
<Bike> jmercouris: the c code here checks whether value (the result from webkit_javascript_result_get_value) is a javascript string, and if it is, makes a c string with its data. you'd have to do similarly.
<jasom> jmercouris: you now need to decode that into something lisp can use
<rpg> Shinmera: I concede that you are correct in the general principle.
<jmercouris> Bike: So in my code example I posted, I just want to assume for now that the result is a string
<jmercouris> Obviously I should check to see that it is an error and not a string
<Bike> you still have to do JSValueToStringCopy or whatever, apparently
<jmercouris> but why would cffi:convert-from-foreign not work?
<Bike> because JSValueRefs are not strings
<Bike> they are JSValueRefs
<jmercouris> Ah shit, I didn't see that
<Bike> any javascript value
<Shinmera> IF you don't need to keep value identity you could just serialise to JSON and parse that lisp native, and back.
<jasom> and JSValueRefs might *hold* strings but they aren't strings themselves
jstypo has joined #lisp
<jmercouris> jasom: that's the key part I was missing in my head
<jmercouris> What an absolutely insane API
<jmercouris> let me give it a try now
<jmercouris> Thanks for catching that
<phoe> my instincts tell me that if something is named *Ref, then it is a reference
<Bike> how else would it work? if it can return any javascript value there has to be some kind of type information, it couldn't just be a c string
<phoe> so you need to somehow get the object that it references
<phoe> dereference it, in other words
<jmercouris> Bike: It should ALWAYS return a string, because all javascript values may be represented by JSON
<Shinmera> Not true, actually
<jasom> jmercouris: no they can't
<jasom> jmercouris: functions can't
<Bike> that's like having a lisp system where everything was printed to string before being passed around
<Bike> i'm not a fan
<jmercouris> Okay, but how would one even use a javascript function returned in C?
<Bike> call it, presumably
<Shinmera> Or pass it as an argument somewhere
<Bike> and what if it was a number? you want to parse it again?
<jmercouris> How could you invoke from a C context?
<jasom> jmercouris: you would pass it in as an argument to a function
<Bike> some kind of JSCallFunction function, i guess
<jmercouris> Okay, that's a use case, I concede :D
<jmercouris> The Cocoa API is just so different I expect only a string
<jasom> I *cannot* find the docs for JSValueRef anywhere
<jasom> I found the apple version in ObjC though ....
pjb````` has joined #lisp
<jasom> I'm guessing the interface is similar
z3t0 has quit [Quit: Leaving...]
python476 has quit [Read error: Connection reset by peer]
ryanbw has quit [Ping timeout: 264 seconds]
* jasom just asked on #webkitgtk+
<jmercouris> Ok, great
pjb````` has quit [Remote host closed the connection]
<jmercouris> I'm looking through cl-webkit as well
pjb````` has joined #lisp
warweasle has quit [Quit: Fly, you fools...but come grab me first!]
osune has joined #lisp
<jmercouris> Is there some sort of thing like sldb-eval-with-break, so I don't have to change the function and re-eval it with a break inside?
<Bike> what would that do?
<jmercouris> Better yet, is there a good guide someone may reccomend for debugging with slime?
<jmercouris> Bike: I want to start a function and go through it form by form
<jmercouris> examining values of things
<aeth> osune_: I was refering to the difference between CL and ISO 8601.
<Bike> oh, stepping then.
<Bike> (i have no advice on that)
<jasom> jmercouris: sbcl does have a stepper, I think you need to compile with a high level of debug for it to be useful though
* jasom hasn't really used it
<jmercouris> Hmm, okay, I see, yeah, debugging style isn't a very lispy way of dev I guess
<jmercouris> There seem to be few faculties for support it and they are implementation dependent
<jasom> jmercouris: it is, it's just stepping isn't that common
<jmercouris> That's what I mean, like step through debugging
<jasom> debugging in C is implementation dependent as well ;)
<Shinmera> clhs step
Karl_Dscc has joined #lisp
<Shinmera> SBCL's trace can also cause a break
<Shinmera> so you can use that to avoid recompiling the function
QualityAddict has quit [Remote host closed the connection]
<jmercouris> Okay, thank you
QualityAddict has joined #lisp
orivej has quit [Ping timeout: 264 seconds]
<aeth> jasom: on the other hand, debugging in languages that only have one implementation is portable across all implementations
omilu has quit [Ping timeout: 260 seconds]
<phoe> aeth: ...by definition, yeah
<jmercouris> jasom: So if you look in the C code you'll see I need to invoke JSValueToStringCopy, but this isn't provided by cl-webkit, how might I go about calling it? Do I have to do something like (cffi:defcfun "JSValueToStringCopy" :string) string-result (context JSGlobalContextRef) (value :pointer) ())?
<jmercouris> How do I even know which library provides JSValueToStringCopy as in their example?
fikka has joined #lisp
JuanDaugherty has quit [Quit: Ex Chat]
dxtr_ is now known as dxtr
pjb````` has quit [Read error: Connection reset by peer]
fikka has quit [Ping timeout: 240 seconds]
orivej has joined #lisp
fikka has joined #lisp
<rpg> Stepping is definitely available in Allegro, but only for code that's interpreted, not compiled, IIRC (may have improved -- don't use it much)
vlatkoB has quit [Remote host closed the connection]
pjb````` has joined #lisp
fikka has quit [Ping timeout: 252 seconds]
tomlukeywood has quit [Quit: Leaving.]
pjb````` has quit [Ping timeout: 276 seconds]
rpg has quit [Ping timeout: 268 seconds]
orivej has quit [Ping timeout: 252 seconds]
pjb````` has joined #lisp
fikka has joined #lisp
pjb````` has quit [Ping timeout: 240 seconds]
junxit has quit [Remote host closed the connection]
<jasom> jmercouris: the defcfun ought to work, assuming it's linked in somewhere; I haven't heard back yet from the webkit gtk channel yet
orivej has joined #lisp
rippa has quit [Quit: {#`%${%&`+'${`%&NO CARRIER]
pjb````` has joined #lisp
shka has quit [Ping timeout: 248 seconds]
shifty779 has joined #lisp
Murii has quit [Quit: WeeChat 1.4]
pjb````` has quit [Ping timeout: 246 seconds]
nowhereman has quit [Ping timeout: 240 seconds]
nowhereman has joined #lisp
<osune> I do (funcall fn arg) but fn can have [0-n] arguments what is the idomatic way to declare a fn with zero arguments? I'm undecided between &rest and a declare / ignore
damke_ has quit [Ping timeout: 264 seconds]
<osune> s/idomatic/idiomatic/
<Bike> declare?
<Bike> you just give it a nil lambda list. (defun foo () ...)
<Bike> (funcall fn)
orivej has quit [Ping timeout: 248 seconds]
<phoe> wait, [0-n] arguments? what do you mean?
<phoe> you don't know the arity of the function that you receive? the FN?
<osune> yes
<phoe> then how are you going to call it?
<Bike> so what are you "declaring"?
<phoe> you can't call a function whose arity you don't know
<phoe> because you don't know how many arguments it will need.
<phoe> I mean, you can always try, but Lisp is going to throw errors at you every time your Russian roulette doesn't work your way.
mint has joined #lisp
<osune> ok let me backpaddle a bit, because maybe i ask the wrong question and my problem is more my design
rpg has joined #lisp
<Shinmera> phoe: ;) (defun call-anything (fn) (let (a) (loop (ignore-errors (return (apply fn a))) (push 0 a))))
<phoe> Shinmera: ...I thought that not using IGNORE-ERRORS was implied
<Shinmera> The ridiculous part of this isn't the ignore-errors
<phoe> yes, correct
<phoe> but there's more than one ridiculous part in it anyway
<phoe> you just go (fn) (fn 0) (fn 0 0) ... until you hopefully get a result
<phoe> which you won't if FN wants a string for example
<phoe> you'll just loop until you hit CALL-ARGUMENTS-LIMIT or you run out of memory
<osune> I parse user input for a chatbot via cl-pprce. assume the commands "/echo foo" and "/ping". One takes a parameter the other doesn't. I split the string into the command and the argument parts. So i have a special case that my functions only take zero or one parameter. The function itself tries to parse the complete argument string.
<phoe> so your function accepts exactly one argument, the complete argument string.
<phoe> so you know the arity of your function.
brendyn has joined #lisp
pjb````` has joined #lisp
<phoe> in one case you have ("/echo" "foo"), in the other case ("/ping" "") or ("/ping" NIL) depending on how you want to put it.
<phoe> I wouldn't define functions with DEFUN for this though. my style, at least, would be to make an EQUAL-tested hash-table, and (setf (gethash "echo" hash-table) (lambda (arg-string) ...))
<osune> yes. thats exactly my result after the first parse. Now i could do a (if arg (funcall fn arg) (funcall fn))
<phoe> I wouldn't do this.
<phoe> I'd rather do, for PING, an explicit (declare (ignore arg)).
<phoe> this way, all of your functions are of arity 1, which simplifies things.
<phoe> or rather, if you want PING to explicitly NOT want an argument, you can (lambda (arg) (when arg (error ...)) ...)
<osune> I can see why lambda is a question of style and viable but having a named function helps a bit with debugging
pjb````` has quit [Remote host closed the connection]
<phoe> or something else. so PING returns "wrong syntax: use /PING without an argument" or something.
<phoe> yes, that is correct. again, this would be just my style.
<osune> well exactly what you are suggesting is what I'm doing currently: (defun ping (arg) (declare (ignore arg) "pong"))
<phoe> yep, that is how I'd do it.
<phoe> but then again, other people might have more valuable insight on the matter, so don't limit yourself to just my ideas.
pjb````` has joined #lisp
<Shinmera> What I would do is handle the arglist parsing in a common place, define each command as a native lisp function, and then just apply the function to the arglist, reporting errors to the user.
<Shinmera> Though actually what i would do is use an existing library like Maiden to do all of that for me :^)
<osune> so I wondered if (defun ping (&rest) "pong) would be more idiomatic
<osune> Shinmera: I heartly accept the shameless plug ;)
<osune> But this is kinda a pet project to prepare myself for a reimplementation of a scheme midi sequencer , so I'll tinker a bit more and then take a look at it
<osune> s/sequencer/controller/
<Shinmera> osune: Anyway, something like this is what I would do: (defun ping () (reply "pong")) (defun handle-command (string) (let ((args (split string " "))) (apply (find-symbol (string-upcase (first args))) (rest args))))
<osune> and as long I as cannot wrap my head around CFFI (libevdev/jack) I keep myself busy and keep learning
<Shinmera> I say "something" since you probably want to throw your command functions either into a separate namespace entirely (preferable) or into their own package
<phoe> osune: lone (&rest) in lambda list isn't valid
Arcaelyx_ has joined #lisp
orivej has joined #lisp
<osune> phoe: sorry meant (&rest r)
<phoe> osune: then you need to ignore R
<phoe> and we're back at the beginning
pjb````` has quit [Remote host closed the connection]
<phoe> except now your function accepts any arguments and ignores them
Arcaelyx has quit [Ping timeout: 276 seconds]
wxie has joined #lisp
<osune> phoe: but is this better? for a function which doesn't know how it will be called?
<osune> Shinmera: hm never played with find-symbol. I use a hash-table with :test 'equal to store the functions
<phoe> osune: I would call it bad design to unnecessarily create functions that don't know how many arguments they will accept
<Shinmera> osune: That works too
<osune> so now I'm at the beginning it seems :D
<phoe> but then again, depends on if you want things like "/ping foo bar baz quux fred" to work just like "/ping" would
<makomo> Shinmera: what do you think about CLON for argparsing?
<makomo> or Clon* perhaps
<osune> well I think that is the real question ... should study maiden sooner than thought
omilu has joined #lisp
<Shinmera> makomo: I've never used it, but it looked overly complicated to me and like it tried to do too much. When I needed command line arg parsing I used Fare's command-line-arguments lib
<phoe> CLON is a mammoth. Which has its upsides and downsides. I settled for Fare's command-line-arguments instead.
<makomo> hah
<makomo> it does look complicated i guess, but that's only because argparsing is complicated imo :-)
<Shinmera> makomo: Why are you asking me in specific, though?
<Shinmera> I'm not in the habit of writing command line programs
<osune> are both pure CL implementations ?
<jmercouris> jasom: That's the challenge I guess :D
<makomo> Shinmera: oh, only because i saw you talking about argparsing and mentioning libraries
<makomo> osune: Clon is
<Shinmera> makomo: What we were talking about is for a different kind of argparsing
<makomo> fare's is as well i guess
<osune> so can I throw unix-opts in the ring?
<phoe> makomo: this discussion with osune is more about parsing function args inside Lisp, not on the boundary between Lisp and the OS
attila_lendvai has joined #lisp
attila_lendvai has joined #lisp
<Xach> there are at least 6 libraries for the purpose
<makomo> Shinmera: oh lol, i haven't read the whole thing actually, only your last couple of posts
<makomo> ahhh
<makomo> nevermind then :-)
<Shinmera> Arg parsing in Maiden is handled by this lil' piece of beauty: https://github.com/Shirakumo/maiden/blob/master/agents/commands/parsing.lisp
<makomo> > ;; Remove inner cones
<makomo> is cones a plural of cons :D
<osune> Ok lets say "/ping foo" is a no go. An error will be generated and returned to the user. What's the lisp way to call my two functions with stepping the least toes of good Common Lisp style ? *takes a look at the link
<Shinmera> makomo: Typos are a thing
<makomo> Shinmera: shame, i thought you made it up :-)
<Shinmera> osune: Calling a function with the wrong number of arguments causes an error. Your function may also error for other intended or unintended reasons. Therefore you need to catch all errors to report to the user anyway.
attila_lendvai has quit [Ping timeout: 272 seconds]
<osune> Shinmera: that's why I came up with (declare (ignore ...)) in the first place
<Shinmera> I don't follow
megalography has joined #lisp
<osune> I'll be back with a gist
LiamH has quit [Quit: Leaving.]
<osune> I see currently these options and I'm unsure which is the "best" or if I'm completely wrong: https://gist.github.com/osune/88f900b70c8083457816d3ca834b2cf3
<jmercouris> jasom: The only thing I can find is that same JS core stuff by apple like you found; https://developer.apple.com/documentation/javascriptcore
rumbler31 has quit [Ping timeout: 264 seconds]
random-nick has quit [Remote host closed the connection]
wxie has quit [Remote host closed the connection]
<jmercouris> jasom: There's like nobody on #WebkitGTK+
knobo has quit [Ping timeout: 268 seconds]
random-nick has joined #lisp
pjb````` has joined #lisp
mejja has joined #lisp
junxit has joined #lisp
<Shinmera> osune: Here's what I would propose: https://plaster.tymoon.eu/view/690#690
pjb`````` has joined #lisp
pjb````` has quit [Remote host closed the connection]
<Shinmera> osune: The "event" is there so that you have a context to work with in your commands. For instance, so that the command "knows" which channel to reply to.
varjagg has quit [Quit: ERC (IRC client for Emacs 25.2.1)]
<Shinmera> Or rather, the event knows that and the reply function uses this information to do the right thing.
pjb`````` has quit [Ping timeout: 265 seconds]
<osune> love it! it solves the whole problem via format and I'm happy that I can say my solution looks nearly identical , apart from the event mechanic . Thanks that was insigthfull
<Shinmera> Sure
<Shinmera> The error reporting of this approach is somewhat poor as you're depending on the implementation's errors to be insightful (which they are often not)
random-nick has quit [Remote host closed the connection]
<Shinmera> A "proper" approach would manually parse and match a lambda list, like what maiden-commands does. But that's rather involved.
<Shinmera> This first step should suffice for a good, long while.
grumble has quit [Quit: We all eat lies when our hearts are hungry]
ryanbw has joined #lisp
<Shinmera> osune: I've updated the paste with a change that should improve error reports a bit.
nirved has quit [Quit: Leaving]
<osune> Shinmera: thanks. you mean error reporting for malfromed (define-command ...) forms?
grumble has joined #lisp
ykoda has joined #lisp
<Shinmera> osune: No, from the user invoking commands with the wrong argument form.
makomo has quit [Ping timeout: 256 seconds]
<osune> I take both for a testride to see what you mean
<Shinmera> Well, I guess it also errors if you forget to specify the event argument,
ykoda has quit [Read error: Connection reset by peer]
ykoda has joined #lisp
<Shinmera> Anyhoot, it's 0:30 here and I'm off to bed. Good night.
<osune> Thanks again Shinmera, I 've seen the difference
jstypo has quit [Read error: Connection reset by peer]
_roca has quit [Ping timeout: 250 seconds]
makomo has joined #lisp
brendyn has quit [Ping timeout: 248 seconds]
junxit has quit [Ping timeout: 248 seconds]
<jasom> jmercouris: negative
<aeth> pillton: Is there a way to see the disassembly produced by specialization-store for a given defspecialization?
jstypo has joined #lisp
Kaisyu has joined #lisp
<aeth> Found it, it's (map nil (compose #'disassemble #'specialization-store:specialization-function) (specialization-store::store-specializations #'foo))
<pillton> I was just typing that.
<aeth> I was trying to call the slot names provided from the slime inspector (another way to get the disassembly), but your readers don't match your slot names
dddddd has quit [Read error: Connection reset by peer]
<pillton> Another way is to give the specialization a function name. (defspecialization (store :name %store/specialization)) (disassemble '%store/specialization)
dddddd has joined #lisp
<aeth> It looks like it produces exactly what I would produce by hand, with identical disassembly.
<aeth> It also looks like it can be inlined, which is great for trivial functions if it works just like function inlining does