fikka has quit [Ping timeout: 256 seconds]
arbv has joined #lisp
pagnol has joined #lisp
fikka has joined #lisp
wigust_ has joined #lisp
wigust has quit [Ping timeout: 276 seconds]
fikka has quit [Ping timeout: 268 seconds]
lroca has joined #lisp
fortitude has quit [Quit: Leaving]
squaanchi has joined #lisp
<squaanchi> hmm
<squaanchi> is there anything like spark or cassandra in lisp?
<aeth> NoSQL DB in general?
smasta has joined #lisp
s992 has joined #lisp
<rpg> I think my colleagues have used MongoDB from lisp, but I'm afraid I don't know what API they used.
s992 has quit [Read error: Connection reset by peer]
<aeth> I don't think there's a major modern NoSQL (or SQL) database written in Common Lisp. Most people who need a database afaik use postmodern to use PostgreSQL.
<aeth> There are probably libraries that support the major NoSQLs, too.
<aeth> Some databases are written in Java, which is roughly the performance of SBCL (it's hard to compare languages) so there's probably nothing stopping someone from writing a DB in Lisp.
<aeth> Interestingly, a database isn't on this list. http://metamodular.com/Common-Lisp/suggested-projects.html
<aeth> squaanchi: One of those databases might be what you want. ^
fikka has joined #lisp
<aeth> Too bad it's a mix between databases written in Lisp and bindings to other databases
nalik891 has quit [Ping timeout: 256 seconds]
fikka has quit [Ping timeout: 248 seconds]
damke has joined #lisp
igemnace has quit [Read error: Connection reset by peer]
igemnace has joined #lisp
damke_ has quit [Ping timeout: 264 seconds]
smasta has quit [Ping timeout: 248 seconds]
pilfink has quit [Quit: ERC (IRC client for Emacs 25.3.1)]
fikka has joined #lisp
ikki has quit [Ping timeout: 255 seconds]
jstypo has quit [Ping timeout: 256 seconds]
fikka has quit [Ping timeout: 256 seconds]
jstypo has joined #lisp
jmercouris has joined #lisp
Jesin has joined #lisp
fikka has joined #lisp
xantoz has quit [Ping timeout: 240 seconds]
fikka has quit [Ping timeout: 256 seconds]
ckonstanski has quit [Remote host closed the connection]
turkja has joined #lisp
fikka has joined #lisp
pagnol has quit [Ping timeout: 256 seconds]
mishoo_ has quit [Ping timeout: 248 seconds]
smasta has joined #lisp
JuanDaugherty has quit [Quit: Ex Chat]
warweasle has joined #lisp
fikka has quit [Ping timeout: 248 seconds]
markong has quit [Ping timeout: 256 seconds]
quazimodo has joined #lisp
lroca has quit [Quit: lroca]
ikki has joined #lisp
pjb has quit [Ping timeout: 256 seconds]
fikka has joined #lisp
orivej has joined #lisp
fikka has quit [Ping timeout: 276 seconds]
ebzzry has joined #lisp
jstypo has quit [Remote host closed the connection]
arbv has quit [Ping timeout: 276 seconds]
arbv has joined #lisp
Oladon has joined #lisp
fikka has joined #lisp
jfb4 has quit [Ping timeout: 240 seconds]
Patzy has quit [Ping timeout: 256 seconds]
mareskeg has joined #lisp
jfb4 has joined #lisp
Patzy has joined #lisp
warweasle has quit [Quit: Leaving]
bkst has quit [Read error: Connection reset by peer]
bkst has joined #lisp
kozy has quit [Ping timeout: 255 seconds]
kozy has joined #lisp
dddddd has quit [Remote host closed the connection]
yangby has joined #lisp
jmercouris has quit [Ping timeout: 255 seconds]
fikka has quit [Ping timeout: 268 seconds]
igemnace has quit [Read error: Connection reset by peer]
igemnace has joined #lisp
smasta has quit [Ping timeout: 256 seconds]
vancan1ty has joined #lisp
xantoz has joined #lisp
smasta has joined #lisp
fikka has joined #lisp
igemnace has quit [Read error: Connection reset by peer]
igemnace has joined #lisp
ikki has quit [Ping timeout: 256 seconds]
nalik891 has joined #lisp
fikka has quit [Ping timeout: 256 seconds]
mareskeg has quit [Quit: mareskeg]
nalik891 has quit [Ping timeout: 256 seconds]
fikka has joined #lisp
FreeBirdLjj has joined #lisp
Cymew has joined #lisp
nika has joined #lisp
d4ryus1 has joined #lisp
orivej has quit [Ping timeout: 255 seconds]
fikka has quit [Ping timeout: 248 seconds]
FreeBirdLjj has quit [Ping timeout: 248 seconds]
d4ryus has quit [Ping timeout: 256 seconds]
mareskeg has joined #lisp
Cymew has quit [Ping timeout: 276 seconds]
Cymew has joined #lisp
damke_ has joined #lisp
damke has quit [Ping timeout: 264 seconds]
lemonpepper24 has quit [Ping timeout: 264 seconds]
Cymew has quit [Ping timeout: 264 seconds]
lemonpepper24 has joined #lisp
nalik891 has joined #lisp
tonton has quit [Ping timeout: 240 seconds]
fikka has joined #lisp
tonton has joined #lisp
nalik891 has quit [Ping timeout: 256 seconds]
fikka has quit [Ping timeout: 256 seconds]
jmercouris has joined #lisp
fikka has joined #lisp
<jmercouris> what are some key things to include in function docstrings?
<jmercouris> e.g. what makes a good docstring?
fikka has quit [Ping timeout: 256 seconds]
fikka has joined #lisp
smasta has quit [Quit: WeeChat 2.0.1]
openthesky has joined #lisp
smasta has joined #lisp
mareskeg has quit [Quit: mareskeg]
openthesky has quit [Ping timeout: 260 seconds]
<jasom> jmercouris: "How do I use this function"
<jasom> that's the question a docstring should answer, with a secondary question of "when should I use this function"
<jasom> if someone is looking at the docstring, they think they ought to use the function, but aren't sure how
<jmercouris> When you say "how" what do you mean?
<jmercouris> which args?
<jmercouris> the expected behavior of the args?
lemonpepper24 has quit [Ping timeout: 255 seconds]
<jmercouris> e.g. second arg should be an int, this integer moderates the function in this way
<jasom> jmercouris: that's dependent on the function
<jmercouris> and what is meant by "when"?
<aeth> jmercouris: Input and output are a good place to start.
<aeth> e.g. if there's a meaningful return value "Returns foo..." or "and returns foo..." probably should be in that docstring
<jmercouris> should I treat my docstrings as blackboxes about the content of the function?
<jmercouris> so that the docstring remains accurate even if the implementation changes?
<aeth> What you really want to say are the inputs, outputs, and side effects.
<aeth> I usually write that in prose, but you could probably get away with literally just listing those
<jasom> jmercouris: they should *not* document how the function works, that belongs in comments.
<aeth> Ideally, the way the actual function works should be obvious, even if you need to add helper functions (there's basically no penalty if you move stuff out into meaningfully named functions that are inline)
<jmercouris> aeth: I thought declaring functions inline within a function form was a bad idea?
<aeth> jmercouris: no, I mean move stuff to top-level helper functions that are obvious if some part of your function isn't obvious, rather than comment
<jmercouris> jasom: Okay, so that is so far confirmed then :)
<jmercouris> Okay
<jasom> jmercouris: inputs/outputs/side-effects is a good checklist for "how do I use this function"
<jmercouris> so let me make sure I understand what you are saying
<jmercouris> if there is enough complexity that warrants a comment, you should probably abstract it out into a function?
<aeth> I'm agreeing with jasom that "that belongs in comments", but then adding that imo if you do need to comment, you probably should break the function up
<aeth> yes
hexfive has joined #lisp
<jmercouris> ok, I'll make that a standard thing then
<jmercouris> inputs/outputs/side-effects
Arcaelyx has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<jmercouris> though really we should be avoiding side effects I think, at least when possible
<jmercouris> otherwise we can't easily prove the correctness of our systems
<jasom> jmercouris: aeth is suggesting (foo bar baz (biff (boff buff))) ;; I can't just frobnotz bar and baz because sbcl's optimizer is dumbs --- instead: (frobnotz-efficiently-on-sbcl bar baz)
<aeth> jmercouris: If you are mostly going to avoid side-effects, you might like the Scheme convention of ! when there are side effects present
<aeth> That's a lot more obvious than a docstring
<Zhivago> jasom: Perhaps that's something that would be better solved by adding a compiler-macro for sbcl rather than changing the code.
<jmercouris> I'd rather not invent conventions foreign to cl for my codebase :D
<aeth> It's not foreign to CL
<jmercouris> jasom: I have no idea what you mean by frobnotzing
<jasom> Zhivago: that was the first example I thought of, but that's not a bad idea
Cymew has joined #lisp
<aeth> Pretty much the only thing in "Conventions in Scheme" that you should never do and I've never seen is $foo for constant (since CL has +foo+) http://www.cliki.net/Naming+conventions
<jasom> jmercouris: frobnotz is a throw-away verb, much like foo and bar are throwaway nouns
<aeth> jmercouris: The problem with alternatives to "foo!" is that there is no direct CL equivalent. The n in nfoo means "non-consing" but that doesn't guarantee that it is destructive... also you can be both destructive and cons
<aeth> and -f like incf is essentially limited to define-modify-macro macros afaik
<jmercouris> I really need to spend more time mastering CL
Cymew has quit [Ping timeout: 256 seconds]
mareskeg has joined #lisp
mareskeg has quit [Remote host closed the connection]
<aeth> I think you don't see foo! in CL because Lispers don't care about destructive code as much as Schemers... but if you're writing part of a program that does care, why not use that convention?
<aeth> jmercouris: Oh, and before you mentioned about documenting types. Don't trust the user imo.
<jmercouris> aeth: What do you mean? you put type checking into your functions?
fikka has quit [Ping timeout: 256 seconds]
<aeth> There are two approaches. check-type is 100% portable, but not necessarily what you want. Type declarations might just assume the type in Cthulhu Lisp or some other non-euclidean eldrich abomination lisp from before time, but should work as expected on most modern Lisps when saftey != 0 (and that should always be the case)
<aeth> A ton of code written recently uses type declarations and assumes they work as expected, with type checking when safety != 0
<aeth> Iirc, an added advantage of type declarations is that they don't need to check type if they're running on Lisp machine hardware that is designed with Lisp types in mind.
<jmercouris> I didn't even know type declarations were a thing in CL
<aeth> (defun foo (x y) (declare (single-float x y)) (+ x y))
<aeth> It can generate very efficient code for non-bignum numbers and sequences because a lot of built-in functions are generic over numbers or sequences (like + or map)
<aeth> Although a check-type should produce a very similar result, just with the type-checking in the function instead of before the function
<jmercouris> aeth: That is pretty useful, I amy start using that in my code
<jmercouris> aeth: where is a list of all types like "single-float")?
<Bike> what makes a type like single-float?
<jasom> jmercouris: there is no exaustive list of types since e.g. (integer 5 8) would be all integers in the range [5,8)
<aeth> Actually, the checking in a foo with type declarations seems to be considerably more concise than the checking in a foobar with check-type when I use sb-disassem:disassemble-code-component to see the full disassembly (which disassemble does not provide)
<jasom> jmercouris: but the hyperspec lists types in the various sections (e.g. the numeric types are listed in the chapter on numbers)
<jasom> clhs integer
<jmercouris> the only usage I've seen of declare is for ignore
<aeth> this might be SBCL specific, but I think it's because of the semantics of check-type vs type declarations
<Bike> there is a comprehensive list, not that it's very enlightening
<aeth> A function can just error, check-type has to be recoverable iirc
<Bike> clhs 4.2.3
<aeth> i.e. you can just store a new value in check-type
<Bike> sorry, six comprehensive lists. hell yea
<jasom> er it's rather the integer range [5, 8] the bounds on the type integer are inclusive
shka has joined #lisp
<jmercouris> can you declare a type that is a custom struct?
<aeth> Hmm, this seems to be the difference in SBCL. check-type will let you insert a valid replacement and a type declaration won't
<Bike> jmercouris: sure
<jmercouris> or an object of some time?
<jmercouris> s/time/type
<jmercouris> Bike: How might that look?
<Bike> (declare (type fuckshit x)) where fuckshit is the name of your struct
<Bike> same as any other type
<jmercouris> I see, your foobar is a little more aggressive than most :D
<jasom> you can even declare parameterized types
<jmercouris> jasom: What is "parameterized type"?
<Bike> it's kind of shit as parametrization goes
<jasom> yeah it's not very powerful
jameser has joined #lisp
<Bike> and it means, like a type with a parameter
<jmercouris> yes, but what does it mean for a type to be parameterized?
<Bike> like (integer 3) has 3 as a parameter
<jasom> jmercouris: (integer 5 8) is a type that includes only the objects 5, 6, 7, and 8
<jmercouris> ah, so a type is a function that accepts args to produce some sort of check function?
<jmercouris> based on some criteria?
<jmercouris> so a type that accepts no args just checks for identity?
<Bike> er... how did you get that out of this
<Bike> that's creative, but wrong
<jmercouris> well (integer 5 8) looks like a function call to "integer" with the arguments 5 and 8
<Bike> it's not
<Bike> integer by itself is also a type
fikka has joined #lisp
<Bike> it is the type of integers
<jmercouris> that is true
<Bike> if you don't know what parameterization is don't sweat it
<Bike> not everybody has a copy of TaPL blessed by the vatican
smasta has quit [Ping timeout: 255 seconds]
<jasom> you will almost never define a new parameterized type in lisp because Lisps type parameterization is not very powerful
<aeth> You almost certainly want to restrict the integer type for it to be useful. "fixnum" is the laziest way to do it, but is non-portable. Stuff like (unsigned-byte 8) and (unsigned-byte 32) are great because they're almost certainly going to be supported in 64-bit implementations' specialized-arrays
<jmercouris> now would (declare (type my-object x)) also work?
<Bike> that depends onw hat my-object is
<Bike> if you have (defstruct my-object ...) sure
<jmercouris> Bike: a class
<jasom> as long as my-object is a type then yes
<Bike> (defclass my-object ...) would also make it valid
<jasom> all classes are types, but not all types are classes
<Bike> all classes are types (but not vice versa)
<aeth> But if you want type information to produce more efficient code you really want the compiler to know that the integer is never going to be a bignum (which might have to require more complicated code on your end)
<Bike> it won't help optimization too much, though
<Bike> correctness, maybe
<jmercouris> I'm not interested in optimization
<Bike> ok great
<jmercouris> I'm mostly interested in safety, for some applications
<Bike> the thing about type declarations is that they are an assertion to the compiler
<Bike> and the implementation is NOT required to check that assertion
<jasom> jmercouris: cmucl and sbcl at least will emit some compile-time checks in the presence of types, and will always emit run-time errors if safety is non-zero
<aeth> Afaik, for the most part, the compiler already knows what the type has to for a variable be by the function you try to use on it.
hexfive has quit [Quit: WeeChat 1.9.1]
<Bike> if you want an actual assertion, use check-type or negotiate with your vendor (i.e. read the manual)
<jmercouris> jasom: I just tested CCL, it also seems to work
<Bike> for the most part the compiler knows jack s hit about anything
<aeth> If it works on SBCL, CCL, ECL, and CMUCL it is very portable. Does it work on ECL?
<jasom> jmercouris: yeah, once you use a lisp like that, it becomes so obviously the right way, that most implementations have copied it
<aeth> Bike: I think it's more nuanced than that, i.e.: For the most part the compiler does know anything between function boundaries because (foo 42) might return 43 now, but could be redefined at runtime to return "Hello, World!"
<Bike> the gulf between what a compiler could know and what it does is vast
fikka has quit [Ping timeout: 256 seconds]
<jmercouris> I just want to emit useful error messages to the user if they have supplied an incorrect type
<jmercouris> Bike: And this is true in every language
<Bike> yeah, so use declare if it works, or check-type if you wanna be super sure
<Bike> and uh, allow replacements
<Bike> weird feature that
<jmercouris> because if the compiler knew what I was trying to program, it could possibly do it for me instead of me having to type it out :D
<aeth> An alternative is to use this: https://github.com/markcox80/specialization-store/
<jmercouris> aeth: You keep promoting this lib :P
<jmercouris> I've read the description, and I don't understand what this does
<jmercouris> can you ELI5 it?
<aeth> jmercouris: instead of having a foo-fixnum, foo-single-float, foo-double-float, foo-bignum, etc., you can just have one foo
<jmercouris> ah okay
<jmercouris> the CLOS parallel makes me get it now
<jmercouris> interesting idea
<aeth> It's like defmethod but it works on types, so it's useful for arrays and numbers
<jmercouris> how much slower is it than foo-fixnum and foo-single-float?
<aeth> If it's inline, it produces exactly the same code as if you had that many inline functions
<aeth> If it's not inline, it will do generic dispatch.
<aeth> But... you could do an inline function call as a sort of compromise (and that's probably common enough that that library should support it imo)
<jmercouris> also, I thought everything in CL was an object
<jmercouris> so aren't integers like "5" actually just objects?
<jmercouris> can you not do a defmethod anyway?
<aeth> jmercouris: But an integer is never of the class (integer 0 5)
<Bike> 5s are objects sure
<Bike> and you can define a method specializing on the integer class
<Bike> but generic functions are necessarily a runtime dispatch
<Bike> itll check that it's a 5 at runtime. specialization store can avoid that
<aeth> (class-of (make-array 3 :element-type 'single-float)) => #<BUILT-IN-CLASS SB-KERNEL::SIMPLE-ARRAY-SINGLE-FLOAT>
fikka has joined #lisp
<aeth> (type-of (make-array 3 :element-type 'single-float)) => (SIMPLE-ARRAY SINGLE-FLOAT (3))
<aeth> Not only is that class not portable afaik, it also doesn't have some critical information, like length
<aeth> So it really is useful with arrays
<jmercouris> interesting, interesting
<jmercouris> thank you for sharing your project
<aeth> And, yeah, specialization store is most useful when you want to inline or at least inline the function call so the runtime dispatch is avoided
<aeth> jmercouris: It's not my project
<aeth> It's by pillton
<aeth> I just want CL code to be faster so pure-CL libs are more popular
<jmercouris> ah yes, sorry
<aeth> Dealing with C libraries through CFFI is a nightmare... and C++ is ultra-nightmare or something.
<jmercouris> I apparently confused you two then
<jmercouris> even though your usernames are so different
<Bike> they're both blue it's ienvitable
<jmercouris> I thought CFFI was just fine in CL
<jmercouris> you should try using it in python
ebrasca` is now known as ebrasca
<aeth> CFFI is okay, C itself is not :-p
<aeth> The real problems come with things like segfaults :-p
<jmercouris> Bike: What do you mean? where is their color denoted?
<jmercouris> aeth: Fun stuff that
<Bike> haven't you ever read the bible the colors are in the geneology
pierpa has quit [Quit: Page closed]
<jmercouris> Bike: I don't follow
fikka has quit [Ping timeout: 256 seconds]
fikka has joined #lisp
quazimodo has quit [Ping timeout: 255 seconds]
nalik891 has joined #lisp
fikka has quit [Ping timeout: 255 seconds]
<aeth> jmercouris: My personal design philosophy for my Lisp code is that anything that can be done ahead of runtime should.
<sthalik> (like register allocation!)
<Bike> that's kind of a weird comment
<aeth> mine? I'm just explaining why I like libraries that do things ahead of time
<Bike> no
fikka has joined #lisp
<sthalik> aeth, it's good to allow redefine stuff, but caching for perf is another thing
<jmercouris> Bike: Are you feeling alright?
Bike has quit [Quit: Lost terminal]
fikka has quit [Ping timeout: 268 seconds]
nalik891 has quit [Ping timeout: 255 seconds]
<beach> Good morning everyone!
<jmercouris> beach: Good morning, and in case I don't see ya, good afternoon, good evening, and good night!
Tobbi has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
fikka has joined #lisp
schoppenhauer has quit [Ping timeout: 255 seconds]
brucem has quit [Quit: ZNC - http://znc.sourceforge.net]
schoppenhauer has joined #lisp
<aeth> Do implementations turn (list 1 2 3 4 5) into (cons 1 (cons 2 (cons 3 (cons 4 (cons 5 nil))))) or is there a better way that I'm overlooking?
<jmercouris> aeth: I don't see how you could avoid the linking operations when making a linked list
fikka has quit [Ping timeout: 256 seconds]
<aeth> lol
<aeth> jmercouris: That's how ^
esthlos has quit [Quit: ZNC 1.6.5 - http://znc.in]
nalik891 has joined #lisp
<aeth> To save people a click, the source is just this when newlines and the docstring are removed: (defun list (&rest args) args)
<pillton> aeth: Specialization store can do the optimization you were talking about before. https://github.com/markcox80/specialization-store/blob/master/tests/standard-store-syntax-layer.lisp#L357
fikka has joined #lisp
<jmercouris> aeth: Yes, but doesn't it still need to make a list?
<jmercouris> just because SBCL happens to make a list of args and then returns that list, doesn't mean that along the line it didn't make the list in the way you are describing
<jmercouris> I don't see how it is avoidable to make a linked list without linking the elements of the list
<aeth> pillton: so named specializations are inline function calls instead of runtime dispatch?
<pillton> aeth: Yes.
nalik891 has quit [Ping timeout: 256 seconds]
<pillton> Look at the compiler-macro-expand-1 test. (Line 366).
<aeth> pillton: What happens if named specializations are also inline?
vancan1ty has quit [Ping timeout: 255 seconds]
<aeth> pillton: And do the names have to be exported/imported?
<pillton> I'm not sure why you would do that, but I'll check.
<pillton> The names do not have to be exported.
<aeth> ah, okay
<aeth> pillton: It looks like you've thought of everything, then.
<aeth> I like it when people write things so I don't have to :-)
fikka has quit [Ping timeout: 265 seconds]
<aeth> jmercouris: And that's why I promote specialization-store, btw. The library literally anticipates my feature requests and then implements them in the past
<jmercouris> aeth: perhaps he is using cl-read-mind
<jmercouris> it's on quicklisp afaik
<aeth> read-mind, eval-mind, print-mind, loop-mind
fikka has joined #lisp
<jmercouris> are there any CL projects using "blockchain" technology?
<aeth> jmercouris: Possibly, but mere blockchains aren't enough. Smart contracts are what people want now.
<aeth> Fortunately, literally any design would be more secure than Ethereum imo.
<aeth> Formal verification would be an interesting project.
philosaur has quit [Quit: philosaur]
fikka has quit [Ping timeout: 256 seconds]
fikka has joined #lisp
<jmercouris> aeth: Formal verification is a pipe dream
<aeth> jmercouris: Formal verification for general purpose programming, yes, but smart contracts kind of need them because hundreds of millions of dollars are on the line.
nowhereman_ has quit [Ping timeout: 276 seconds]
<aeth> So you kind of have to program more like NASA and less like a JavaScript web developer when you're doing an Ethereum clone
<jmercouris> I somehow doubt that that's what these guys are doing
<jmercouris> I've done formal verification, and, it is not a fun time, nor is it easy, nor is it even possible truly except for on some embedded systems
<aeth> They're absolutely not doing anything close to reliable programming. e.g. https://news.ycombinator.com/item?id=16148608
<jmercouris> there are so many unknown variables when running your program
philosaur has joined #lisp
<aeth> jmercouris: yes, but solving it for smart contracts on blockchains is probably a $1,000,000,000 idea.
<jmercouris> aeth: Solving it is irrelevant, marketing is what matters
fikka has quit [Ping timeout: 256 seconds]
<jmercouris> just look at Microsoft
<jmercouris> people literally PAY for microsoft, when there are free pieces of software that are better, blows my mind
<aeth> Reliable smart contracts in Common Lisp practically writes itself for Hacker News. Guaranteed #1 position on the site. :-p
<aeth> jmercouris: Oracle is probably a better example.
<jmercouris> Lol you don't even have to do it
<aeth> Microsoft software has advantages
<jmercouris> just speculate about it in a medium article
<aeth> Oracle is 100% marketing
nowhereman_ has joined #lisp
<jmercouris> and people will blindly upvote
<jmercouris> also, throw in some false information for extra publicity
<aeth> This channel doesn't have false information, only nil information
<jmercouris> like "what makes CL great is the fact that it recently surpassed javascript for number of active developers"
dtornabene has joined #lisp
yangby has quit [Ping timeout: 268 seconds]
<jmercouris> integers can overflow in solidity?
<jmercouris> when was this language designed!?
<aeth> A couple of years ago iirc
<aeth> Smart contracts in *Common Lisp* would be more reliable
<aeth> No need for a DSL
yangby has joined #lisp
<aeth> jmercouris: My favorite part is that the language apparently has no garbage collection *and* no manual memory management.
<aeth> So apparently that language is 1950s era :-p
fikka has joined #lisp
<aeth> At least according to this post: https://news.ycombinator.com/item?id=14691212
quazimodo has joined #lisp
<jmercouris> aeth: Surely you are joking, how can this be?
<aeth> And it's just integers, so you'd have to call in a contract that is a fixed-point arithmetic library and hope you can trust it iirc
<jmercouris> no floating point support!??????????
<aeth> jmercouris: I'm guessing Solidity behaves just like the very early Lisps pre-GC
knobo has joined #lisp
<jmercouris> I could design a better language by throwing darts at a board of language features
<aeth> You'd probably want decimal fixed point, though, for the money parts. Not just floats
<jmercouris> Well, that just goes to show, time and time again, marketing is everything
<aeth> $120,000,000,000 market cap, now slightly more than half the market cap of Bitcoin
<aeth> 100% marketing since you can't write usable software in it!
<aeth> They apparently decided to release early and hype it so that they could then get the resources to implement it properly.
fikka has quit [Ping timeout: 256 seconds]
<jmercouris> that is unbelievable
<jmercouris> I should have an ICO :P
<aeth> jmercouris: Oh, and apparently the reason it's slow is not because it's distributed but because it runs in a 256 bit VM.
oleo has quit [Quit: Leaving]
<jmercouris> so many questions
damke has joined #lisp
<jmercouris> writing fast distributed software is hard enough with all of the scheduling and memory challenges, why do this?
<jmercouris> Alright, who wants to join me in writing a new platform called Lisperium?
<aeth> I'm guessing that that's probably large enough to express all of its currency as an integer (which is necessary because of how badly it handles numbers), whereas 64-bit and 128-bit wouldn't be
<jmercouris> I love that all data types are exactly the same size, even the byte
<jmercouris> why couldn't they even do something simple like reference counting based GC
<jmercouris> that's not even hard
<jmercouris> they could even have had it be manual like on Objective-c
<aeth> Iirc, the creator was 20 when he wrote it (and he's only 23 now)
<jmercouris> to be fair, when I was 20, I was struggling to write my own implementation of malloc
damke_ has quit [Ping timeout: 264 seconds]
<aeth> jmercouris: If you are serious, I'd start with a fixed-point math library. You generally want decimal fixed-point math for currency (e.g. at 1/10000 to represent 1/100th of a cent), although if it's cryptocurrency, you might just want to work in powers of 2 all of the time for efficiency (i.e. use ash)
<aeth> Once you find or write that, the rest of the language practically writes itself
fikka has joined #lisp
<aeth> lisp-in-lisp is easy
<jmercouris> aeth: You don't want to work on the lisperium platform?
<jmercouris> heres the yc title; Lisperium - Lisp Blockchain ICO
<aeth> jmercouris: Well, I know the pain point you're going to reach: cryptography. I wouldn't trust any pure-Lisp crypto libraries with real money of any kind (not battle-tested enough), including cryptocurrency.
<aeth> And you kind of need crypto for a cryptocurrency
<jmercouris> Here's what we'll do, we'll just use CFFI
<aeth> idk
<aeth> If you could actually do an ICO, you could pay some crypto person to write a pure-Lisp crypto library that is reliable, at least in SBCL
<aeth> SBCL has everything you need, unless the GC is problematic.
<jmercouris> here's what you need for a successful ICO, just write a white paper
<jmercouris> you could probably take any ELS paper, change the title and abstract
<jmercouris> nobody reads beyond that anyway
smurfrobot has joined #lisp
<jmercouris> you know how rust has these sort of semi-automatic rust-->c converters
<jmercouris> do any such tools exist in lisp?
<aeth> jmercouris: No, if you were serious about writing a white paper for an ICO, just get a PhD to write it and invite a PhD to the team. PhD + writes lots of papers. There are several here afaik.
<jmercouris> aeth: I'm totally joking, I bet the SEC is going to begin regulating ICOs in the near-term and I don't want to be involved in that legislative nightmare that will arise
<aeth> I'm sure writing a VM in CL to run a blockchain-distributed reliable program (Rust-like or Haskell-like) would be a project someone would want in on
<aeth> jmercouris: An ICO is almost certainly a bad idea, but a blockchain probably has enough interest from SEO-approved investors at this point.
fikka has quit [Ping timeout: 276 seconds]
<aeth> s/SEO/SEC/
<aeth> But they're probably SEO approved too
<jmercouris> aeth: That is probably true, just throw that word into any presentation and people just lose it
<jmercouris> seems to be the "cloud" of 2017-2018
smurfrobot has quit [Ping timeout: 276 seconds]
<aeth> jmercouris: All you need is: a fixed-point math library, a proof-of-stake blockchain, a VM to run smart contracts on that blockchain, a Haskell-like or Rust-like language with Lisp syntax to run on that VM. That would near-guarantee a $1,000,000,000 market cap for that cryptocoin. There are already 38 (!!!) valued that much.
damke_ has joined #lisp
<jmercouris> yeah, if only it was that simple
fikka has joined #lisp
<aeth> jmercouris: It's actually simpler
<jmercouris> the key here is marketing, there are thousands, if not tens of thousands of cyrpto languages
<jmercouris> why is one more popular than the other?
<jmercouris> what would we call it?
<aeth> jmercouris: read-eval-pay-coin
<jmercouris> I like where you are going with that, but it has to be max 3 syllables
<jmercouris> ideally two
<jmercouris> also we can't put the word "coin" in the title, that's overused
<aeth> There are a lot of shitcoins with nothing to offer except being a github fork of Bitcoin or Litecoin or something. It would be hard to find a unique name for a cryptocurrency
damke has quit [Ping timeout: 264 seconds]
<jmercouris> it's not hard at all, creativity is a skill that can be nurtured
<jmercouris> how about "Lvault"
<jmercouris> lisp vault
<jmercouris> clv as a tla
fikka has quit [Ping timeout: 276 seconds]
<jmercouris> or you could call it "c-store"
sukaeto has quit [Quit: WeeChat 1.0.1]
<jmercouris> it sounds catchy, digital, and people can imagine what the "c" stands for
<aeth> anything that begins with C is interpreted as something implemented in C
<jmercouris> that's fine, confusion is good
<jmercouris> we can get people fro the C community to ignorantly support it
<jmercouris> plus C has a lot of credibility
<jmercouris> the logo could be like a clamshell or something
<jmercouris> a play on words of "c" sounding like "sea"
igemnace has quit [Read error: Connection reset by peer]
<aeth> this name is probably taken a million times for a million different things, but "clash" would be the perfect name, imo. A pun on the "cl" prefix a lot of cl libraries/programs have, and "cash"
<aeth> i.e. cl-cash
<jmercouris> yeah, that's a good one, it's too bad that a clash is an unpleasant thing
igemnace has joined #lisp
<jmercouris> what if we drop the c in front and call it "lash"
<jmercouris> because it's a bunch of data secured "together"
<aeth> "lash" is still negative, unless you're into that sort of thing
rpg has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<jmercouris> right yeah
<jmercouris> what about cloister, isn't that a type of fish?
<jmercouris> damnit, that's a pokemon :D
<aeth> good name though
fikka has joined #lisp
<aeth> also, I think people can name more Pokémon than animals
<jmercouris> I've got it
<jmercouris> "Clock"
<jmercouris> CL-Lock effectively
<aeth> too close to "cock" and too close to "coq" https://en.wikipedia.org/wiki/Coq
<jmercouris> I can't believe such a program exists
<jmercouris> how about "clamshell"
<aeth> Well, they're referencing a rooster, clearly
<jmercouris> or "closure"
<aeth> jmercouris: "shell" is synonymous with "unreliable programming full of landmines"
<jmercouris> that doesn't look like a rooster at all
<jmercouris> I don't think programmers are who we are marketing to
sz0 has quit [Quit: Connection closed for inactivity]
<jmercouris> what we need to get is the herd investors
<jmercouris> and make enough hype around our new platform
<jmercouris> so actually, the language is irrelevant to them, it just happens to be in cl, which is conveniently easy for us
<aeth> there are some investors on the Lisp hype train, although probably not as many as in the past
turkja has quit [Ping timeout: 256 seconds]
<jmercouris> we need to somehow make our technology "AI" or something
<aeth> hmm
<jmercouris> we could just call it the "Smart" platform "self-learning machine application technology"
fikka has quit [Ping timeout: 255 seconds]
<aeth> "closure" would be the most clever name of your list, too bad it is too close to clojure and clozure
<jmercouris> clojure and clozure have no name recognition, we could just do it
<aeth> well, it needs to be a misspelling, so maybe cloxure
<jmercouris> maybe we could get more street cred by writing it in cyrillic
orivej has joined #lisp
<aeth> I'd probably start with the blockchain and VM and name the combined product later
<aeth> Names usually come last
QualityAddict has quit [Quit: Leaving]
Oladon has quit [Quit: Leaving.]
<jmercouris> sounds like a plan, I'm going to sleep for now, but let me know which yachts you'd like to check out tomorrow
<aeth> As crowded as the crypto market is, probably a GTA Online yacht
asarch has quit [Quit: Leaving]
fikka has joined #lisp
<aeth> (It's funny how a game franchise about stealing virtual vehicles somehow became a game about buying virtual vehicles with RL money.)
<jmercouris> aeth: woah woah, didn't you say earlier we'd make roughly a billion?
<jmercouris> are you backing out?
<aeth> It'd be a billion with a 100% pre-mine
<aeth> And it'd be about as easy to cash out of as a dot-com stock
<jmercouris> We're back at square one
<jmercouris> we have to do an ICO
<aeth> Who here writes white papers for fun? beach?
<aeth> It would actually be interesting for the #lisp community to explore the idea of Lisp smart contracts, even though it's about 4 years too late to make real money from the idea.
<jmercouris> I believe he does, he seems to enjoy it :D
fikka has quit [Ping timeout: 268 seconds]
<aeth> Imo if you're semi-serious about seeing where this could go (1) don't expect any money because of all of the competition, (2) whoever writes white papers for fun gets to be project lead
<aeth> I do think that the Lisp community could make something better than Ethereum fairly easily with the existing ecosystem
jmercouris has quit [Ping timeout: 256 seconds]
turkja has joined #lisp
JuanDaugherty has joined #lisp
milanj has quit [Quit: This computer has gone to sleep]
fikka has joined #lisp
quazimodo has quit [Ping timeout: 264 seconds]
fikka has quit [Ping timeout: 256 seconds]
Karl_Dscc has joined #lisp
fikka has joined #lisp
QualityAddict has joined #lisp
orivej has quit [Ping timeout: 276 seconds]
mishoo_ has joined #lisp
fikka has quit [Ping timeout: 256 seconds]
smurfrobot has joined #lisp
orivej has joined #lisp
fikka has joined #lisp
smurfrobot has quit [Ping timeout: 248 seconds]
yeticry has quit [Ping timeout: 248 seconds]
yangby has quit [Ping timeout: 264 seconds]
orivej has quit [Ping timeout: 256 seconds]
yeticry has joined #lisp
fikka has quit [Ping timeout: 256 seconds]
yangby has joined #lisp
makomo has quit [Ping timeout: 265 seconds]
LocaMocha has joined #lisp
damke has joined #lisp
fikka has joined #lisp
damke_ has quit [Ping timeout: 264 seconds]
damke__ has joined #lisp
dec0n has joined #lisp
hiroaki has joined #lisp
orivej has joined #lisp
sz0 has joined #lisp
damke has quit [Ping timeout: 264 seconds]
fikka has quit [Ping timeout: 248 seconds]
fikka has joined #lisp
yangby has quit [Ping timeout: 256 seconds]
Karl_Dscc has quit [Remote host closed the connection]
yangby has joined #lisp
thijso has quit [Ping timeout: 256 seconds]
<flip214> Xach: well, at least a logical pathname pointing to /proc should be possible...
<flip214> Xach: I've had success with current SBCL (and so ASDF 3.3.1 IIRC) and
<flip214> (:module "proc" :pathname #p"/proc/" :components ((:static-file "uptime")))
orivej has quit [Ping timeout: 248 seconds]
smurfrobot has joined #lisp
<flip214> And now I've got a zero-byte file in ~/.cache/common-lisp/*/proc/uptime*.fasl ;)
scymtym has quit [Ping timeout: 276 seconds]
flamebeard has joined #lisp
smurfrobot has quit [Ping timeout: 276 seconds]
koisoke has quit [Ping timeout: 246 seconds]
lnostdal has joined #lisp
Murii has joined #lisp
daniel-s has joined #lisp
varjag has joined #lisp
fikka has quit [Ping timeout: 260 seconds]
koisoke has joined #lisp
marusich has quit [Quit: Leaving]
fikka has joined #lisp
fikka has quit [Ping timeout: 276 seconds]
hiroaki has quit [Quit: Leaving]
Xal has quit [Ping timeout: 255 seconds]
Cymew has joined #lisp
daniel-s has quit [Quit: Konversation terminated!]
Xal has joined #lisp
Kevslinger has quit [Quit: Connection closed for inactivity]
smurfrobot has joined #lisp
fikka has joined #lisp
igemnace has quit [Read error: Connection reset by peer]
igemnace has joined #lisp
smurfrobot has quit [Ping timeout: 248 seconds]
smurfrobot has joined #lisp
scymtym has joined #lisp
smurfrobot has quit [Ping timeout: 248 seconds]
schweers has joined #lisp
smurfrobot has joined #lisp
dddddd has joined #lisp
smurfrobot has quit [Ping timeout: 255 seconds]
shrdlu68 has joined #lisp
damke__ has quit [Ping timeout: 264 seconds]
damke__ has joined #lisp
yangby has quit [Quit: Go out for a walk and buy a drink.]
smurfrobot has joined #lisp
scymtym_ has joined #lisp
scymtym has quit [Remote host closed the connection]
fikka has quit [Ping timeout: 256 seconds]
mingus has quit [Ping timeout: 256 seconds]
smurfrobot has quit [Ping timeout: 256 seconds]
drot has quit [Quit: Quit.]
drot has joined #lisp
fikka has joined #lisp
hhdave has joined #lisp
lnostdal has quit [Ping timeout: 255 seconds]
fikka has quit [Ping timeout: 255 seconds]
Murii has quit [Ping timeout: 248 seconds]
lnostdal has joined #lisp
fikka has joined #lisp
jfb4 has quit [Ping timeout: 256 seconds]
damke has joined #lisp
jfb4 has joined #lisp
damke__ has quit [Ping timeout: 264 seconds]
damke_ has joined #lisp
hhdave has quit [Ping timeout: 256 seconds]
damke has quit [Ping timeout: 264 seconds]
<shka> sorry, wrong channel
<shrdlu68> Right...
<shka> but, seriously, what a terrible contraption
smurfrobot has joined #lisp
sebastie1_ has joined #lisp
sebastie1_ has quit [Client Quit]
smurfrobot has quit [Ping timeout: 240 seconds]
sebastien_ has quit [Quit: Lost terminal]
dilated_dinosaur has quit [Ping timeout: 276 seconds]
<shka> Shinmera: hey, you there? How should i setup r-data-model and r-simple-auth so they both would use PG?
<Shinmera> shka: They both use the database interface, so whatever database implementation you load will be used.
<Shinmera> Actually r-simple-auth doesn't use the database interface, just the user one. But the default for that uses the database, so.
<shka> ok
<shka> that's reasonable
<shka> thanks
pagnol has joined #lisp
Ven`` has joined #lisp
dilated_dinosaur has joined #lisp
_cosmonaut_ has joined #lisp
d4ryus1 is now known as d4ryus
pjb has joined #lisp
msb has quit [Ping timeout: 240 seconds]
msb has joined #lisp
orivej has joined #lisp
jameser has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
nirved has joined #lisp
msb has quit [Ping timeout: 260 seconds]
msb has joined #lisp
sebastien_ has joined #lisp
wxie has joined #lisp
nika has quit []
smurfrobot has joined #lisp
smurfrobot has quit [Ping timeout: 256 seconds]
nalik891 has joined #lisp
jfb4 has quit [Ping timeout: 264 seconds]
wxie has quit [Remote host closed the connection]
jfb4 has joined #lisp
nalik891 has quit [Ping timeout: 260 seconds]
m00natic has joined #lisp
hhdave has joined #lisp
damke has joined #lisp
Murii has joined #lisp
damke_ has quit [Ping timeout: 264 seconds]
damke_ has joined #lisp
jfb4_ has joined #lisp
pjb has quit [Ping timeout: 256 seconds]
damke has quit [Ping timeout: 264 seconds]
jfb4 has quit [Ping timeout: 256 seconds]
damke has joined #lisp
jfb4_ has quit [Ping timeout: 256 seconds]
jfb4 has joined #lisp
milanj has joined #lisp
damke_ has quit [Ping timeout: 264 seconds]
<knobo> Is there a way to run tests continuously whenever a source file is saved?
sz0 has quit [Quit: Connection closed for inactivity]
yeticry has quit [Quit: leaving]
pjb has joined #lisp
yeticry has joined #lisp
smurfrobot has joined #lisp
smurfrobot has quit [Ping timeout: 256 seconds]
<pagnol> knobo, I use a program called 'entr' for this
<Xach> knobo: an emacs save-hook seems plausible. or an external watching program perhaps.
<pagnol> knobo, http://entrproject.org/
<pagnol> I usually add a line like `find -name '*.lisp' | entr run-the-tests` to my makefiles
<knobo> Ah... just save-hook and run tests :) Could be the solution.
<knobo> Looks like entrproject could be good too.
<shka> Shinmera: i can't figure out how to setup auth module, do you have example somewhere?
<Shinmera> shka: What do you need to set up?
<shka> i want to use auth module to have signing up, logging in, nothing out of ordinary i think
pjb has quit [Ping timeout: 256 seconds]
<shka> but right now I can't seem to figure out what auth module is really doing
<Shinmera> Exactly that?
<shka> well, also restricing content, based on the user, but i think i should do this myself
<Shinmera> authentication is not authorization
<Shinmera> authorization is handled by the user module
wxie has joined #lisp
<Shinmera> Colleen: tell shka look up radiance user:check
<Colleen> shka: Function user:check https://shirakumo.github.io/radiance#FUNCTION%20USER%3ACHECK
<shka> ok, that's all cool, but in the source code of auth i have this define-page login
<shka> "auth/login"
<Shinmera> Yeah?
<shka> so i depend on auth now, those this mean that somehow this should already work in basic form?
<Shinmera> Yes
<shka> and i should access it by my-module/auth/login ?
<Shinmera> No?
<shka> uhm
<Shinmera> auth is its own module. Why would it be under yours?
<shka> so /auth/login it is
dtornabene has quit [Remote host closed the connection]
<Shinmera> The page is defined as auth/login, not /auth/login
<Shinmera> Meaning that it's on the auth subdomain, on the /login path
Ven`` has quit [Ping timeout: 260 seconds]
<Shinmera> No
<Shinmera> For localhost, which does not have subdomains, you can reach it through a routing like so: http://localhost:8080/!/auth/login, which is translated to http://auth.localhost:8080/login internally.
<Shinmera> On your deployed system you would either set up a proper auth subdomain, or set up a route to translate it.
<shka> ok, i seriously need to take care when reading tutorial
<Shinmera> The gist is, each module gets its own subdomain so that it can use the full path space for itself.
makomo has joined #lisp
crazyeddy has joined #lisp
<Shinmera> You can then use routes to translate different external urls to internal urls.
<Shinmera> You can set it up so that the login page is reachable through /auth/login, or /userlogin, or whatever you want, but that's a step for later.
<Shinmera> Colleen: tell shka look up radiance 1.3
<Colleen> shka: 1.3 route https://shirakumo.github.io/radiance#1.3_route
<Shinmera> ^this explains the system a bit. Hopefully that helps.
shifty has quit [Ping timeout: 256 seconds]
<shka> thanks, this is kinda confusing
<shka> uri-to-url is interesting to say the least as well
JuanDaugherty has quit [Quit: Ex Chat]
smurfrobot has joined #lisp
Kevslinger has joined #lisp
<Shinmera> The routing is probably the biggest hurdle in learning Radiance
turkja has quit [Ping timeout: 240 seconds]
markong has joined #lisp
<shka> Shinmera: well, so how do i properly construct URL to module?
<Shinmera> You want to link to one of your own pages?
<shka> for instance
<Shinmera> (uri-to-url <page> :representation :external)
<Shinmera> So if you define a page on the uri "foo/bar" that'd be (uri-to-url "foo/bar" :representation :external)
<Shinmera> This is exactly what the @href attribute does in the clip pages of the tutorial.
<shka> that was my first attempt but "http://foo.radiance/bar" does not look fine
<Shinmera> Right, if you do it from the REPL that's what you'll get. Radiance has a list of top-level domains it knows about. By default that's "radiance" and "localhost". When you're running a translation from the REPL it doesn't really know which one you mean, so it just picks the first one.
<Shinmera> When you do a translation within the context of a request, it knows which domain to pick based on the request.
<shka> now, that's important info…
<Shinmera> It also might know additional information, such as that you used some other translation route like the /!/ prefix, and uses that to translate back.
<shka> yeah, that explain my problem
<shka> i don't want to use templates, so i kinda wandered around
ebrasca has left #lisp ["ERC (IRC client for Emacs 25.2.1)"]
Arcaelyx has joined #lisp
<Shinmera> Fair enough
<Shinmera> I'll make a note to explain that in the tutorial a bit better.
<shka> ok, now i better make login page look more like my own thing
damke_ has joined #lisp
smurfrobot has quit [Remote host closed the connection]
damke has quit [Ping timeout: 264 seconds]
<shrdlu68> varjag: The OCSP issue still persists, because I've not yet implemented OCSP stapling for cl-tls. Most implementations fall back to "old-style" OCSP only when the server does not support OCSP stapling. I'll do that soon as I get some time.
pjb` has joined #lisp
turkja has joined #lisp
pjb` is now known as pjb
nullman has quit [Ping timeout: 264 seconds]
nullman has joined #lisp
<varjag> shrdlu68: great, thanks
<makomo> beach: i re-read your essay yesterday for fun and found a little typo -- ctrl+f ",," :-)
fikka has quit [Ping timeout: 265 seconds]
fikka has joined #lisp
orivej has quit [Ping timeout: 255 seconds]
EvW has joined #lisp
<pagnol> what's the essay about?
rpg has joined #lisp
orivej has joined #lisp
<makomo> pagnol: about lisp, this one: http://metamodular.com/Essays/wrong.html
<pagnol> makomo, thanks
damke__ has joined #lisp
damke_ has quit [Ping timeout: 264 seconds]
arbv has quit [Ping timeout: 256 seconds]
<phoe> "What is wrong with Lisp?" ",,"
<phoe> this sounds strangely correct - by the time you're using double unquote, you're most likely already wrong somewhere
<makomo> haha i thought about that too :D
<makomo> i was thinking how i should have said "you probably meant to only single-unquote this space" :-)
jfb4 has quit [Ping timeout: 276 seconds]
randomstrangerb has joined #lisp
jfb4 has joined #lisp
thijso has joined #lisp
milanj has quit [Quit: Leaving]
rgrau has quit [Ping timeout: 256 seconds]
loke has quit [Ping timeout: 256 seconds]
MetaYan has quit [Remote host closed the connection]
MetaYan has joined #lisp
aindilis has quit [Read error: Connection reset by peer]
runejuhl has quit [Ping timeout: 260 seconds]
pagnol has quit [Ping timeout: 256 seconds]
aindilis has joined #lisp
vap1 has quit [Ping timeout: 255 seconds]
rgrau has joined #lisp
lnostdal has quit [Ping timeout: 264 seconds]
runejuhl has joined #lisp
AntiSpamMeta has quit [Remote host closed the connection]
AntiSpamMeta has joined #lisp
asarch has joined #lisp
<beach> makomo: Thanks! Fixed!
<makomo> :-)
<flip214> phoe: right, you should most probably be using ",'," or ",@,"
<makomo> oh, regarding backquote, i have a question. i've been studying/inspecting the once-only macro (again) recently, and it uses ,,@
SaganMan has joined #lisp
lnostdal has joined #lisp
<makomo> at first i was confused because what is the leftmost unquote supposed to do? i confirmed experimentally that it unquotes every single element of the spliced-in list, but i can't exactly see where this behavior is specified in http://www.lispworks.com/documentation/HyperSpec/Body/02_df.htm
<makomo> i should also probably link the source of ONCE-ONLY, here's one: https://stackoverflow.com/questions/9808928/understanding-how-to-implement-once-only-lisp-macro
randomstrangerb has quit [Ping timeout: 248 seconds]
<pfdietz> I've always found it easier to unpack macro code using nested backquotes into a series of functions.
randomstrangerb has joined #lisp
Bike has joined #lisp
<makomo> and also, i feel like the page doesn't do a good job of explaining nested backquotes/unquotes. there's only a single line at the end and it's not clear to me what "should be *expanded* first" and "occur in a *row*" mean
<makomo> (1) "expanded" because what does "expansion" even mean in this context and (2) commas can appear in a "row" but with ' and @ interspersed inbetween
lnostdal has quit [Ping timeout: 240 seconds]
lonjil has quit [Remote host closed the connection]
wxie has quit [Remote host closed the connection]
lonjil has joined #lisp
brendyn has quit [Ping timeout: 256 seconds]
lonjil has quit [Remote host closed the connection]
lonjil has joined #lisp
lnostdal has joined #lisp
brucem has joined #lisp
smasta has joined #lisp
<beach> makomo: Unfortunately, the only way to understand backquote that I know of is to apply the algorithm they show. The Common Lisp HyperSpec is meant for people who implement Common Lisp, so it is kind of understandable that it is not very pedagogical in this respect.
ikki has joined #lisp
<makomo> beach: yeah, i agree with that, but i'm having trouble following their definition since the backquote is nested. i have no problem following the formalities for a single level of quotation
<makomo> but into which "case" does ``(...) even fit?
<Bike> if it's any consolation, nested backquotes confuse everybody.
<makomo> am i supposed to treat ``(...) as `<basic>, where <basic> is then the rest, i.e. `(...)?
<makomo> which is then processed recursively?
<beach> Well, here you have a case of nesting, so the second backquote is the innermost.
<makomo> but then again this is also confusing because of that "expanded" thing at the bottom :^(
<makomo> Bike: a little i guess :-)
<beach> "expand", just mean to apply the algorithm.
<makomo> hmmm ok, so then the innermost backquote would get processed first?
<beach> Yes.
<makomo> so in the case of ``(...), that would be equal to `<form> where <form> is the result of processing `(...)?
<makomo> or is it wrong to "peel off" a backquote like that
<Xach> I share this not to mock, but because it is to me a novel (if novice) use of some functions I rarely use
<Xach> it's good that the target string isn't eleven characters long
<phoe> what the fuck
<makomo> oh dear :')
<phoe> IN must be a list of chars
<phoe> oh boy
<Shinmera> I'm confused as to when you'd even have a list of characters spelling out undefined.
<Xach> Shinmera: the json parser coerces the string input to a list as the first step
<Shinmera> Oh.
<Shinmera> "undefined" isn't valid JSON though, right?
<shka> i think that actually it is
shka has quit [Remote host closed the connection]
vap1 has joined #lisp
<Shinmera> No, it is not
scymtym__ has joined #lisp
<Shinmera> It's valid in JS, but not JSON
shka has joined #lisp
<Shinmera> shka: It is not valid.
vaporatorius has joined #lisp
<Shinmera> It's a JS-ism
<shka> "undefined" <- valid json
<Shinmera> shka: It's wrong.
<shka> unless you omitted quotes
<Shinmera> I wasn't talking about a string containing undefined.
<shka> i see
scymtym_ has quit [Ping timeout: 276 seconds]
<Xach> I think it's a pretty good example of "I have a set of tools and I'm going to use them to get what I want no matter what". The kind of determination that will improve with access to more tools and tricks.
<phoe> Giving a slightly broader look, the person also implemented a JSON parser in Prolog.
<phoe> So they likely don't know CL in-depth, but they nonetheless used enough of it to implement something that works.
<Xach> on the other hand, it can really help to have at the back of your mind that curiosity of "is there a better way?" but sometimes constraints prevent listening too much to that.
m00natic has quit [Ping timeout: 255 seconds]
<shka> phoe: Prolog is a very nice language to make parser, btw ;-)
damke has joined #lisp
<beach> The functions make-jason-obj and make-json-array are amusing too.
<beach> Wow, there are so many things wrong with that code.
<Xach> I came across this due to the planet lisp "new lisp on github" feed
<Xach> I usually see a title and description and check them out at some later date.
vap1 has quit [Quit: Leaving]
<Xach> https://github.com/borodust/claw had a nice description ("Autowrapping FFI") but the readme says "don't use"
Tobbi has joined #lisp
damke__ has quit [Ping timeout: 264 seconds]
* |3b| doesn't know prolog, does the prolog version just give up halfway through parsing undefined?
<Xach> i was also bummed that https://github.com/mak08/cl-map is "just" ffi. i have part of a lisp shapefile parser in progress.
<schweers> Xach: you don’t like ffi in general?
<dmiles> |3b|: it reuses the letters
<|3b|> ah, right
<Xach> schweers: Not usually.
<dmiles> |3b| well the good part of that file is it is prolgo for very simplistic prolog impls
<schweers> I’ve never really used any ffi until I came across CFFI for lisp.
<dmiles> (that is it doe4st use DCGs) nornmally to parse json you'd use about code 1/2 that size
<Xach> schweers: I know it isn't practical all the time, but I do really like a "pure" lisp solution because it is likely to be easier to set up that managing foreign libraries (and foreign memory, code, etc)
<Xach> I like being able to open truetype files on windows without messing with DLLs...
<flip214> makomo: don't despair, I've had a major leap in backquote understanding a few months ago (after several years of using Lisp), but I'm still not sure about all the implications
rippa has joined #lisp
fikka has quit [Ping timeout: 264 seconds]
<shka> I actually share Xach's sentiment.
<shka> Life in the land of lisp is nicer without foreigners.
<shka> And we should build a wall.
<Xach> Sometimes it is too much work to make it fast enough for the task at hand. Or it's too much work to recreate some very useful library.
python476 has joined #lisp
<makomo> flip214: i have this "intuitive" and "experimental" knowledge of backquote, but find that i can't read out some of the things i know about backquote from that formal definition because it's too vague about the nested syntax
<shka> yes
<shka> and some libs are just huge
<shka> webkit can be a prime example of that…
<Shinmera> On that note, I'd love it if someone translated stb_truetype to Lisp and added SDF
<mfiano> As do I. The only place I use cffi is only indirectly, and pretty much required: Interfacing with GPU drivers (OpenGL) and creating a window/context (sdl).
<Xach> Shinmera: What is stb_truetype?
<Shinmera> Xach: A single-header library for rendering font atlases from truetype files.
<Xach> Shinmera: what is SDF?
<Shinmera> Signed Distance Fields. A technique to get much sharper characters at differing resolutions to the natively rendered atlas.
<makomo> flip214: i know what the thing in ONCE-ONLY will produce (just produce though, i'm not claiming to completely understand ONCE-ONLY yet :-)), but i don't see how i would apply the formal definition from the spec to get to the same thing
<mfiano> Better yet would be a Lisp implementation of MSDF or PSDF, as SDF is pretty horrible with certain input.
FreeBirdLjj has joined #lisp
<Xach> Shinmera: what's an atlas used for?
ikki has quit [Ping timeout: 264 seconds]
<Shinmera> The atlas is stored in a texture and you use that to draw text in OpenGL.
<Xach> ok
<Shinmera> Rendering each character from font descriptions is too expensive, so you cache the characters you need in an atlas that is tightly packed.
<Shinmera> Well, rendering them each frame I mean
<Shinmera> There is a CL library to do the direct rendering approach, but it is slooooow.
beach` has joined #lisp
<Shinmera> Could use that to render the atlas, I suppose, but that still leaves implementing the packing algorithm and SDF.
warweasle has joined #lisp
beach has quit [Ping timeout: 256 seconds]
sjl has quit [Quit: WeeChat 1.9.1]
beach` is now known as beach
scymtym__ has quit [Remote host closed the connection]
scymtym has joined #lisp
sjl__ has joined #lisp
nika has joined #lisp
BitPuffin has joined #lisp
EvW has quit [Ping timeout: 255 seconds]
<schweers> Xach: sorry, was afk for a moment. I understand where you’re coming from. I was just trying to say that I never found another FFI which was as pleasant as CFFI (and I guess other FFIs for lisp are similarly pleasant).
* Shinmera sighs and wishes he had time
<shka> Shinmera: do you perhaps have any idea, why my pages won't load if I load file with pages, but it works if i compile individual pages definitions?
<schweers> so using an FFI for lisp seems to me to be much less of a hassle than using an FFI for lesser languages.
<shka> schweers: it is a hassle
nika has quit [Ping timeout: 260 seconds]
<Shinmera> shka: I run Radiance in production, so it'd be odd if I had to manually C-c all the pages :)
<borodust> Xach: didn't have time to fix docs yet :)
<borodust> Xach: for claw
<Xach> schweers: That's cool
<shka> Shinmera: it may be the case that I am doing things in peculiar way, I will let you know once i figure this out
<Xach> schweers: I have perhaps an irrational fear of foreign code and memory crashing my session entirely.
<borodust> Xach: this is a fork of fork that i'm striving to make usable for everyone :)
<Xach> schweers: So sometimes I will even use run-program to avoid (c)ffi
<borodust> Xach: original fork: https://github.com/borodust/bodge-autowrap
<Xach> borodust: interesting! ok.
<mfiano> typical lisp software lifecycle :)
<borodust> mfiano: well, to be fair, that's a fork of my fork ;p since yesterday i can actually remove bodge-autowrap (and would do exactly that today) because i moved all of bodge projects onto :claw
<borodust> Xach: while we are at it, what are the policies for accepting wrappers with compiled libraries into quicklisp?
<Shinmera> I'm already doing it
<Xach> borodust: no special policy. it should work on multiple lisps and must absolutely work on linux/sbcl
<Shinmera> But, I always compile it myself on clean installations of the OSs.
nika has joined #lisp
<borodust> Shinmera Xach: with qt, i know, but are there any specific requirements, like it should load somewhere on some specific implementations and whatnot
<Shinmera> And document how to do so yourself if you don't trust me.
<borodust> Xach: understood
<Shinmera> borodust: Not just Qt. I have a lot of other libraries with C parts.
m00natic has joined #lisp
<borodust> i'm planning to request adding claw and bodge-chipmunk, bodge-nuklear, bodge-nanovg and other complete wrappers into quicklisp
<borodust> but like Shinmera's libraries, some of those are using customized c wrappers (autogenerated) to prevent any struct-by-value issues
loke has joined #lisp
<borodust> like this: https://github.com/borodust/bodge-chipmunk/blob/master/lib/main.c which is autogenerated by claw tool
<borodust> so neither libffi nor manual c wrappers are required
fikka has joined #lisp
rumbler31 has joined #lisp
<borodust> and here is the only required library descriptor to generate lisp interface and aforementioned c wrapper: https://github.com/borodust/bodge-chipmunk/blob/master/claw.lisp
<borodust> for chipmunk
samla has joined #lisp
<borodust> s/lisp/lispified/
<samla> Does anyone want to ask a question to Donald Knuth?
<borodust> howdy
<shka> Shinmera: that weird, to say the least, consider the following file
<loke> samla: I would probably ask him some questions if I met him.
<shka> (list-uri-dispatchers)
<shka> (#<URI-DISPATCHER STATIC #@"/^static/.*"> #<URI-DISPATCHER API #@"/api/.*">
<shka> sorry
<samla> loke: I could ask him one of those if you want to
<loke> samla: You know him?
<shka> anyway list-uri-dispatcher will list dispatcher for entry, but not for users
<Shinmera> shka: Because you're using the same name for both
<beach> I asked him all the question I had last time I saw him.
<attila_lendvai> there's also cffi/c2ffi for autogenerated FFI's. here's a simple example using it: https://github.com/attila-lendvai/hu.dwim.bluez
Devon has joined #lisp
<samla> loke: nah, uni got a q&a session with him so yeah
<Shinmera> shka: As is mentioned in the section I linked you, the names need to be unique.
<shka> jesus
<Shinmera> shka: This is so that Radiance can know what to change when you make a redefintion.
<shka> you are right
<shka> somehow i thought that this is module name xD
<loke> samla: I'm sure there will be enough people asking good questions :-)
<Shinmera> Heh, well, at least it was an easy problem to solve :)
smurfrobot has joined #lisp
<samla> loke: alright then :)! Well, I sure hope so
<shka> I did not felt so stupid since thursday
oleo has joined #lisp
<samla> Fucking he'll, why didn't I bring with me my copy of coders at work for him to sign. I'm a failure
<samla> Ok thanks guys!
samla has left #lisp ["Be back later..."]
<makomo> Shinmera: i have to say, i'm always surprised by the amount of stuff you have produced :-)
<makomo> for example, seeing some of your projects and then a line like "it uses X, Y and Z under the hood". following the links you discover that all of X, Y and Z are also made by you :-)
<makomo> as an example, stuff like Plump, CLSS, lQuery, Clip, Radiance
<makomo> quite nice
<Shinmera> Well, that's what happens when you shave some yaks
smurfrobot has quit [Remote host closed the connection]
<makomo> i would like to ask, is there a general description of the problems web frameworks in general are supposed to solve
<shka> Shinmera: i wonder how i should handle redirecting from account creation to my main page
<shka> simply add redirect or there is another way to do so?
<makomo> or rather, the individual components of web frameworks maybe. for example, "routing"
<makomo> i have a vague understanding of what routing is supposed to do/does, but is there an actual book/article explaining in detail the abstract notion of such stuff
<Shinmera> makomo: People have different ideas about what a framework is or should be, so, not really.
<makomo> (as opposed to just reading concrete implementations)
<makomo> yeah, that's what i thought :^(
<Shinmera> shka: You mean your own account page, or the one offered by simple-auth?
<shka> Shinmera: simple-auth, at least for now
hexfive has joined #lisp
<shka> because i am lazy
samla has joined #lisp
<Shinmera> I don't think there's currently a way for registration. There is one for logging in, at least.
<makomo> Shinmera: nice work though! i like when the documentation is prose, rather than just a huge reference. imo, the first thing in the documentation should always be the definition of the problem the library is trying to solve, or a concept/motivation of some sort
<shka> ok, that's fine
<Shinmera> Which is to simply put the URL to redirect to as a get/post parameter called "landing-page"
<shka> i should make custom register page anyway
Cymew has quit [Remote host closed the connection]
<Shinmera> makomo: Sure.
orivej has quit [Ping timeout: 248 seconds]
<Xach> borodust, Shinmera - you are two folks who provide custom dists. Are you up for starting to sign your dists with opengpgpgpg?
<Xach> There is no procedure yet, but I am wondering: do you have a key, are you willing to use it, etc.
<Shinmera> I sign my commits with gpg already, so I wouldn't be against it.
randomstrangerb has quit [Ping timeout: 256 seconds]
Cymew has joined #lisp
<Shinmera> Won't have time to mess with my dist procedure until late February though
randomstrangerb has joined #lisp
z3t0 has joined #lisp
dec0n has quit [Read error: Connection reset by peer]
Kaisyu has quit [Quit: Connection closed for inactivity]
Murii has quit [Ping timeout: 276 seconds]
Cymew has quit [Ping timeout: 276 seconds]
samla has quit [Remote host closed the connection]
z3t0 has quit [Remote host closed the connection]
z3t0 has joined #lisp
Cymew has joined #lisp
sjl__ is now known as sjl
<borodust> Xach: yes, if that would be fairly easy to do (sign a dist) i'm certainly up to it
_cosmonaut_ has quit [Ping timeout: 268 seconds]
<sjl> Xach: is there any way library authors can subscribe to QL's build/test process so we get notified when our projects break?
<Shinmera> sjl: He's been looking into adding RSS feeds.
<sjl> right now my strategy is basically "happen to see the quicklisp account post something on twitter"
<sjl> Shinmera: that's a start... per-project feeds would be great, because I really only care about a few particular ones (mainly my own)
smurfrobot has joined #lisp
eivarv has joined #lisp
z3t0 has quit [Ping timeout: 255 seconds]
Cymew has quit [Ping timeout: 260 seconds]
FreeBirdLjj has quit [Remote host closed the connection]
<Xach> sjl: I am trying to make a per-project and per-author set of feeds
z3t0 has joined #lisp
<Xach> They are always all posted to http://report.quicklisp.org/ also, but that's a view that maximizes my convenience, not anyone else's
arbv has joined #lisp
FreeBirdLjj has joined #lisp
milanj has joined #lisp
<sjl> Xach: per-author would be lovely
<Xach> sjl: I've sometimes thought about auto-posting github issues, but I can think of so many failure modes that I hesitate.
<sjl> Yeah that might be a little excessive.
<Shinmera> There is that thing with github where you can be an "application" like travis that shows build success on commits and PRs
<Shinmera> That could potentially be used
<Shinmera> It won't notify you about it, but when you look at a commit it'll show you whether it passed a check or not.
FreeBirdLjj has quit [Ping timeout: 240 seconds]
<Xach> hmm
<Shinmera> I can look into that once I'm done with GraphQL and the Github v4 API
<shka> btw folks
<shka> is there anything like cl-who, but more suited for dynamic web pages?
_cosmonaut_ has joined #lisp
flamebeard has quit [Quit: Leaving]
<shka> please, no templates :/
* dlowe shrugs.
<shka> i really would rather write sexps
<phoe> somebody masquerade the templates as sexps
<Shinmera> I masquerade them as valid HTML
<dlowe> I thought cl-who pretty much was templates with sexps
Arcaelyx has quit [Quit: Textual IRC Client: www.textualapp.com]
Murii has joined #lisp
Bike has quit [Ping timeout: 260 seconds]
smurfrobot has quit [Remote host closed the connection]
<shka> sadly i hate both CSS and HTML
<shka> there is LASS that allows me to not look at css
<dlowe> There are people who love both. Maybe you could team up with one of them.
FreeBirdLjj has joined #lisp
<dlowe> (they will probably want templates :D)
malice has joined #lisp
<shka> i tried doing that, now i have deadline and my teammate does not respond
<shrdlu68> shka: No templates?
JuanDaugherty has joined #lisp
<shka> so screw that, i am doing that myself
<malice> Hi! Is there a Common Lisp standard available on ANSI page? I tried looking for it but I couldn't find it. I want to reference it, I don't want to buy it and I'm aware of its low quality.
<shka> as for CSS
<shka> seriously guys
<shka> the year is 2017
<shka> and such trivial task…
<beach> malice: ANSI is a for-profit company, so they would not give their standard for free.
<loke> shka: I have been saying exactly that for well over 10 years.
EvW1 has joined #lisp
<loke> shka: Back in the frickin' 80's we have layout systems better than HTML is today.
<shrdlu68> shka: Ever wondered why the world seems to need so many programmers?
<Xach> malice: what do you mean by "refernece it"?
<shka> loke: back in the medieval ages as well
<malice> Xach: I'm writing my Bachelor thesis and wanted to provide a reference to Ansi standard when I'm mentioning that CL has one
<Xach> "reference" sorry.
<shka> malice: I usually reference ClTl
<shka> it works
* shka screams internally
<beach> malice: Give me a minute...
<Xach> shka: why cltl?
<malice> Probably because it's available online for free
<sjl> malice: there's a bibtex hunk for it at http://ftp.math.utah.edu/pub/tex/bib/ansistd.html
<sjl> ANSI:1996:ANSa
<malice> sjl: Thanks, that's probably what I was after!
<shka> Xach: because I am at the point that I want to pull the middle finger, and quit this farse
<sjl> Assuming you just want to reference the standard as a whole and not some particular page/section.
<shka> and I don't really care
<shka> and at the very least i KNOW where things are explained there
emacsoma` has quit [Ping timeout: 256 seconds]
<Xach> shka: You mean you use it as a reference as you write new code?
<shka> so it saves my depleted patience
<shka> Xach: that to, but this thing I can do calmly, believe it or not I am trying to get my bachelor degree as well
<Xach> shka: I don't really care what you personally use but please don't recommend it as a primary reference to someone who might not know better.
<shka> and after all this time, uni crap make me go berserk
<beach> malice: Did you get what you needed. Otherwise, look in SICL/Papers/Type-inference/type-inference.bib
fikka has quit [Ping timeout: 256 seconds]
<shka> Xach: but why? cltl2 is a good book IMHO. It's only drawback is that it was written before standard was finalized.
safe has joined #lisp
<Xach> shka: it has good prose, and is good to supplement or augment the reference material, but there are areas where it describes non-standard behavior as standard. It should not be encouraged as someone's first primary reference.
<beach> shka: It is not an acceptable reference for Common Lisp.
<shka> oh
<Xach> I really liked reading it cover to cover. It has some warmth and humor and fills in some historical details with sloppy but enjoyable writing.
<shka> well, i won't argue with that
<Shinmera> shka: LASS is still CSS. It just looks like sexprs.
<shka> Shinmera: yes, and it makes self denial easier
<Xach> And I mean "sloppy" in the sense of being a little convoluted and human, rather than the dry and precise stuff in the final spec.
<jackdaniel> last time I've checked CSS doesn't look like sexprs, so if LASS is still CSS – it doesn't neither ;)
<shka> but I really like this book and I found it extreamly informative
<shka> jackdaniel: 1+
varjag has quit [Quit: ERC (IRC client for Emacs 24.5.1)]
<Shinmera> jackdaniel: What makes CSS painful is all the options and values and how they model the UI. That does not change with LASS.
* loke agress with Xach. I don't think I would have appreciated CL as much if it wasn't for the fact that my boos gave me a copy of the book back in... hmm... late 90's?
<Shinmera> The surface syntax makes little difference
<loke> I never really got into CL until about 6 or so years ago, but whatever :-)
mhd has joined #lisp
<jackdaniel> I have never argued that CSS is painful (or not) :p
<malice> beach: I got what I wanted, but I will look anyway. Thank you for help!
<shka> loke: oh boy, back 6 years ago i didn't have gray hairs :D
smurfrobot has joined #lisp
SaganMan has quit [Quit: laters]
smasta has quit [Ping timeout: 256 seconds]
drewc has quit [Ping timeout: 255 seconds]
Bike has joined #lisp
rafadc has joined #lisp
Murii is now known as murii
murii is now known as Murii
z3t0 has quit [Remote host closed the connection]
smurfrobot has quit [Remote host closed the connection]
hexfive has quit [Read error: Connection reset by peer]
drewc has joined #lisp
hexfive has joined #lisp
z3t0 has joined #lisp
jibanes has quit [Ping timeout: 240 seconds]
jibanes has joined #lisp
hexfive has quit [Remote host closed the connection]
hexfive has joined #lisp
nullniverse has joined #lisp
whoman has joined #lisp
hexfive has quit [Read error: Connection reset by peer]
hexfive has joined #lisp
JonSmith has quit [Remote host closed the connection]
_cosmonaut_ has quit [Quit: Leaving.]
FreeBirdLjj has quit [Remote host closed the connection]
<shka> Shinmera: so i was wondering, how I should handle submit if i don't want to use templates?
<Shinmera> Hm?
pmetzger has joined #lisp
<shka> simply if on request to distinguish submit?
junxit has joined #lisp
sukaeto has joined #lisp
crazyeddy has quit [Remote host closed the connection]
fikka has joined #lisp
<shka> Shinmera: (if (eq :get (http-method *request*)) …
<Shinmera> Typically form submission should happen to API endpoints so that they can be used programmatically as well
<Shinmera> But sure if you want to do it that way you can
<Shinmera> I don't understand what submission has to do with templates though
<shka> hmm
z3t0 has quit [Remote host closed the connection]
z3t0 has joined #lisp
<Shinmera> The page will output whatever you return from it, or whatever you explicitly store in the response object's data
<shka> Shinmera: i was trying to copy what simple-auth is doing at register
<shka> and needless to say, register is not api… not sure what to think about that
<Shinmera> It's old, is what you should think about that.
<shka> i see
<shka> ok, i will try to look at login instead
schweers has quit [Ping timeout: 255 seconds]
<shka> thanks
<Shinmera> Should fix it up and make it accept a redirect too
<Shinmera> But, so much to do
smurfrobot has joined #lisp
<shka> well, I will look at it, maybe i can even patch it someday
z3t0 has quit [Remote host closed the connection]
<shka> busy right now, though
z3t0 has joined #lisp
rafadc has quit [Quit: Bye!]
z3t0 has quit [Remote host closed the connection]
z3t0 has joined #lisp
m00natic has quit [Remote host closed the connection]
z3t0 has quit [Remote host closed the connection]
<shka> Shinmera: anyway, whole gist of define-api is that code is launched on :submit, is that correct?
z3t0_ has joined #lisp
<Shinmera> When you have a form and the user clicks submit, the browser opens another page with the form data as parameters.
<Shinmera> API endpoints are pages that do argument parsing for you to some extent and have a stricter scheme about how they can be reached.
Karl_Dscc has joined #lisp
z3t0_ has quit [Remote host closed the connection]
<shka> Shinmera: well, ok
FreeBirdLjj has joined #lisp
hhdave has quit [Ping timeout: 276 seconds]
FreeBirdLjj has quit [Ping timeout: 240 seconds]
hexfive has quit [Remote host closed the connection]
hexfive has joined #lisp
FreeBirdLjj has joined #lisp
z3t0 has joined #lisp
<shka> Shinmera: so i should name my api like it's route?
<shka> that's what you are doing anyway
<Shinmera> routes are something different in Radiance.
<Shinmera> The convention is to name the api endpoint module/something/something
<Shinmera> so for auth that's auth/login. For, say, plaster that's plaster/create, etc.
<Shinmera> The tutorial goes through all of this though.
smurfrobot has quit [Remote host closed the connection]
<shka> well, post request launches page code
<shka> is that normal?
<Shinmera> Yes?
<shka> well, i don't know how i am supposed to use it, really
<Shinmera> The tutorial explains how, as does the documentation.
<shka> part 1?
<Shinmera> It does use api endpoints already so yes
ebzzry has quit [Ping timeout: 260 seconds]
Ven`` has joined #lisp
z3t0 has quit [Remote host closed the connection]
<shka> I see what i am doing wrong…
<shka> sorry for being dense :P
FreeBirdLjj has quit [Ping timeout: 256 seconds]
<shka> or not
osune has joined #lisp
<Shinmera> (define-api foo ()) will be reachable at /api/foo, (define-api foo/bar/baz ()) will be reachable at /api/foo/bar/baz
<shka> yeah, i noticed that
sebastien_ has quit [Quit: leaving]
<shka> forgot about /api/ part
sebastien_ has joined #lisp
samla has joined #lisp
MetaYan has quit [Ping timeout: 240 seconds]
turkja has quit [Ping timeout: 260 seconds]
MetaYan has joined #lisp
FreeBirdLjj has joined #lisp
nika has quit [Quit: Leaving...]
<shka> Shinmera: well, that would be it for today, I must say that you were of great assistance to me today, thank you
<Shinmera> Sure.
<osune> while we are talking webframeworks on CL: Currently I run my Telegram Bot in long poll mode, but I can use a single webhok too. Assuming I'm a embedded C programmer (no significant server side expirience) , should I even look at radiance or is something barebones like lack a better start for me to provide a single uri which gets POST requests with json data ?
<Shinmera> For that I'd just use a server like hunchentoot directly.
<Shinmera> But you can also use Radiance for it if you want of course
<shka> well, radiance at least look like decently designed architecture
<shka> so you may be extra future proof by using it, although this may be a huge overkill
<Shinmera> One of the core points of Radiance is to allow you to run multiple web applications in a shared environment. So if what you're developing is a component that could be reused by other people, then Radiance is a good fit.
<shka> yeah
<Shinmera> If it's just for you, then you can just as well go with Hunchentoot barebones.
<shka> i noticed that theme
FreeBirdLjj has quit [Ping timeout: 268 seconds]
<shka> anyway… I like radiance
anunnaki has joined #lisp
<shka> not any expert (obviously), but modular architecture FTW
<osune> So if I would want create a full blown REST api Radiance would be a good fit? I assume I need to know how the server under the framework works to use/understand any framework?
<Shinmera> Well if you create an API or web thingy that might be useful to other people then sure.
<shka> osune: server is abstracted away
<Shinmera> You don't really need to understand the server.
<shka> have a good evening all
ikki has joined #lisp
pagnol has joined #lisp
<osune> Thanks Shinmera, I'll take the route which I'll understand faster
<Shinmera> osune: The server is basically just responsible for listening on a port and translating the HTTP structure to some internal format. Typically an object.
<Shinmera> The framework will handle things like dispatch based on the URL.
mathi_aihtam has quit [Ping timeout: 255 seconds]
<Shinmera> So all you need to understand is on which URL your functionality will be reachable, how to access request data, and how to return response data.
<osune> For the telegram bot I need to provide a customized URL ( https://www.example.com/<bot-token> ). So far I understand that the server does no routing and I would need a Framework which can dispatch on a URL. Did I got this right?
<Shinmera> Well you can do the routing yourself. Which is trivial especially if you only have one thing to reach :)
JonSmith has joined #lisp
<osune> Because the URL used would be in the server internal Request Object
z3t0 has joined #lisp
<Shinmera> Routing in Radiance is a bit more complicated, but in most frameworks all it is is a list of "pages" and some regex that the current request is compared against.
fikka has quit [Ping timeout: 255 seconds]
<Shinmera> osune: A framework is not magic. It uses the server's public API, so you can too.
<Shinmera> Anyway, just have a look at Hunchentoot's documentation. It's good and shows a simple example that should get you started in no time.
JonSmith has quit [Remote host closed the connection]
JonSmith has joined #lisp
z3t0 has quit [Remote host closed the connection]
<osune> If I would using python , probably would take flask ( I dabbled a bit with cherry-py a few years ago ) for this task. So I wondered where to start with CL. Thanks for the starters
FreeBirdLjj has joined #lisp
<shka> there is a tutorial on building simple web page raw on hunchentoot
<shka> lisp for the web or something like this
<shka> it is pretty old, though
<Shinmera> There's one in the HT docs.
JonSmith has quit [Ping timeout: 248 seconds]
ikki has quit [Ping timeout: 256 seconds]
fikka has joined #lisp
JonSmith has joined #lisp
z3t0 has joined #lisp
<osune> jackdaniel: I took a look at the ecl cffi backend. They use quite excessive the uffi compatible interface, which is somewhat marked as "depricated". I feel conflicted if I should use it or not (the uffi interface would staisfy my needs). Can you give me absolution?
anunnaki has quit [Ping timeout: 276 seconds]
<osune> shka: maybe you mean Lisp Web Tales?
<shka> that's the newer one i think
FreeBirdLjj has quit [Ping timeout: 264 seconds]
<shka> i did not read it, that's for sure
<jackdaniel> osune: CFFI uses ECL ffi which implements interface defined by UFFI
<jackdaniel> nothing wrong with that
<jackdaniel> it is not deprecated *in* ECL
z3t0 has quit [Ping timeout: 265 seconds]
<osune> I must have over estimized the meaning of "New code shouldn’t use this interface preferring CFFI." , because the SFFI interface is said "to be only used if ECL is your deployment platform". I understood it as you should use CFFI if possible , and SFFI as fallback.
<jackdaniel> sffi is static ffi which is ECL-specific
<jackdaniel> UFFI is ECL's exported interface for FFI (which is interface-compatible with original UFFI)
<jackdaniel> CFFI is portability layer between implementations which makes a portable interface for FFI
<jackdaniel> in case of ECL, it uses UFFI-compatible interface, because that's what ECL provides. In case of SBCL it will use sb-alien package interfaces etc. If you use sb-alien package, you can't expect it will work on other lisps
<osune> but one can use UFFI in a static context too, at least that is what I got out of the ecl backend in cffi?
EvW1 has quit [Ping timeout: 255 seconds]
Ven`` has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<jackdaniel> CFFI can use static ffi of ECL as well, that's just the way how calls are compiled
erikc has joined #lisp
anunnaki has joined #lisp
FreeBirdLjj has joined #lisp
<osune> ok so all this is a understanding on my side regarding the manual which I had prior to taking a look at the ecl backend in cffi as you suggested. Thanks for the confirmation :)
sonologico has joined #lisp
samla has quit [Quit: Mutter: www.mutterirc.com]
FreeBirdLjj has quit [Ping timeout: 248 seconds]
python476 has quit [Remote host closed the connection]
<osune> jackdaniel: another question still bugs me since yesterday: where is cl_load defined? in c/load.d is LOAD defined and it uses cl_load, so it is already in available in ecl_min. When searching for cl_load (https://gitlab.com/search?utf8=%E2%9C%93&search=cl_load&group_id=&project_id=178692&search_code=true&repository_ref=develop) I can see the mapping of LOAD and cl_load and the external declaration. But if LOAD uses cl_load, how or where
<osune> is cl_load defined?
mikaelj has joined #lisp
varjag has joined #lisp
LocaMocha has quit [Ping timeout: 276 seconds]
<Devon> Any package out there to write files with Emacs-style safety, e.g., to update foo write to #foo# then rename #foo# to foo while holding a lock as a symlink .#foo -> HOST.PID
fikka has quit [Ping timeout: 264 seconds]
<Xach> Devon: I haven't heard of such a thing. I do that manually when I care (but without the locking part)
<Xach> Just the write-to-temp and rename part...
<Shinmera> Well :if-exists :supersede creates a new file and then renames on completion.
<Devon> Me too but I'm doing it more often lately.
<Xach> Shinmera: it might
FreeBirdLjj has joined #lisp
<Xach> I would be interesting in seeing just what each implementation actually does for each of those open options.
<Xach> interested, rather
<Shinmera> The :rename-and-delete option is pretty weird: "The existing file is renamed to some other name, then it is deleted but not expunged, and then a new file is created."
<Devon> open [Function] ... :supersede ... If possible, the implementation should not destroy the old file until the new stream is closed.
pmetzger has quit []
<Devon> I was thinking of a stronger assurance.
hexfive has quit [Read error: Connection reset by peer]
hexfive has joined #lisp
nullman has quit [Ping timeout: 260 seconds]
nullman has joined #lisp
<pjb> Shinmera: :rename-and-delete is basically what application do on unix systems.
<pjb> eg. emacs renames the current file foo as foo.~1~ and then deletes (at a later time) the older backup files.
fikka has joined #lisp
FreeBirdLjj has quit [Ping timeout: 240 seconds]
turkja has joined #lisp
<Devon> Emacs first checks for */.bzr/checkout/format, */.git, */.hg, */_MTN/format\0, .src/*, .src/*,v, RCS/*, RCS/*,v, s.*, SCCS/s.* and who knows what else, before saving *.~1~
<osune> jackdaniel: never mind i figured it out and I feel ashamed
<pjb> Devon: of course, and it doesn't even save it necessarily in the same directory or file system.
FreeBirdLjj has joined #lisp
JuanitoJons has joined #lisp
anunnaki is now known as vertigo
turkja has quit [Ping timeout: 276 seconds]
Baggers has joined #lisp
smurfrobot has joined #lisp
FreeBirdLjj has quit [Ping timeout: 256 seconds]
Ven`` has joined #lisp
Ven`` has quit [Read error: Connection reset by peer]
zooey has quit [Remote host closed the connection]
Ven`` has joined #lisp
zooey has joined #lisp
<fe[nl]ix> Devon: one recent Linux kernels it is possible to supersede atomically, but I know of no language library that exposes it
<fe[nl]ix> *on
<fe[nl]ix> there's a syscall for creating an unreferenced inode (temporary file), and a new way to atomically replace the inode pointed by a path
<pjb> renameat2
<fe[nl]ix> bonus that in case of :abort t, no empty temporary file is left around
<fe[nl]ix> the unreferenced inode gets cleaned up immediately
<fe[nl]ix> I should implement that in Iolib :)
FreeBirdLjj has joined #lisp
damke has quit [Ping timeout: 264 seconds]
fittestbits has left #lisp [#lisp]
damke has joined #lisp
smurfrobot has quit [Remote host closed the connection]
EvW has joined #lisp
rippa has quit [Quit: {#`%${%&`+'${`%&NO CARRIER]
FreeBirdLjj has quit [Ping timeout: 256 seconds]
sonologico has quit [Ping timeout: 256 seconds]
FreeBirdLjj has joined #lisp
orivej has joined #lisp
vydd has joined #lisp
vydd has quit [Changing host]
vydd has joined #lisp
Murii has quit [Quit: WeeChat 1.4]
FreeBirdLjj has quit [Ping timeout: 240 seconds]
smurfrobot has joined #lisp
FreeBirdLjj has joined #lisp
BitPuffin has quit [Remote host closed the connection]
FreeBirdLjj has quit [Ping timeout: 248 seconds]
Murii has joined #lisp
scymtym_ has joined #lisp
scymtym has quit [Ping timeout: 255 seconds]
FreeBirdLjj has joined #lisp
scymtym_ has quit [Ping timeout: 255 seconds]
ikki has joined #lisp
hexfive has quit [Remote host closed the connection]
hexfive has joined #lisp
hexfive has quit [Client Quit]
hexfive has joined #lisp
wigust_ has quit [Ping timeout: 256 seconds]
FreeBirdLjj has quit [Ping timeout: 248 seconds]
junxit has left #lisp ["ERC (IRC client for Emacs 25.3.1)"]
hexfive has quit [Read error: Connection reset by peer]
shka has quit [Ping timeout: 256 seconds]
hexfive has joined #lisp
mhd has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
smurfrobot has quit [Remote host closed the connection]
warweasle has quit [Quit: away]
shka has joined #lisp
hexfive has quit [Remote host closed the connection]
hexfive has joined #lisp
hexfive has quit [Remote host closed the connection]
aphprentice has quit [Quit: Connection closed for inactivity]
FreeBirdLjj has joined #lisp
hexfive has joined #lisp
Murii has quit [Remote host closed the connection]
JuanDaugherty has quit [Quit: Ex Chat]
fikka has quit [Ping timeout: 248 seconds]
FreeBirdLjj has quit [Ping timeout: 260 seconds]
fortitude has joined #lisp
hexfive has quit [Read error: Connection reset by peer]
fikka has joined #lisp
hexfive has joined #lisp
FreeBirdLjj has joined #lisp
<rpg> Does anyone know if iterate has moved from darcs to git, or has a git mirror?
scymtym has joined #lisp
papachan has quit [Quit: WeeChat 2.0.1]
<_death> at least quicklisp gets it from the darcs repository
FreeBirdLjj has quit [Ping timeout: 268 seconds]
<rpg> oh, dear. I *really* don't want to try to figure out darcs. It could be arbitrarily better than git without being worth my learning it.
<rpg> isn't it also effectively dead as far as development goes?
FreeBirdLjj has joined #lisp
quazimodo has joined #lisp
shka has quit [Ping timeout: 256 seconds]
FreeBirdLjj has quit [Ping timeout: 256 seconds]
mishoo_ has quit [Ping timeout: 256 seconds]
mhd has joined #lisp
<rpg> jasom: The problem with that is that the remote, authoritative repo will still be darcs when I have my git repo! :-/
<jasom> rpg: it works like svn-git to let you use git with a darcs remote indefinitely
fikka has quit [Ping timeout: 255 seconds]
FreeBirdLjj has joined #lisp
<rpg> jasom: I'm sorry -- you are right. When I first skimmed this page I got stuck at "migrating ... from darcs to git..." and missed the "can be used to create git mirrors of active darcs repositories."
wxie has joined #lisp
<Shinmera> Could also try to convince Xach that your git repo will be the new authoritative source
<rpg> Shinmera: The last thing either the CL community or I need is for me to own another authoritative repo!
<Shinmera> You could also try to convince Xach to move it to sharplispers to make it more accessible to contributions.
Devon has quit [Ping timeout: 256 seconds]
fikka has joined #lisp
brendyn has joined #lisp
FreeBirdLjj has quit [Ping timeout: 256 seconds]
<rpg> That would really be up to Attila. If he prefers to keep it in darcs, I will not (or at least try not to) complain.
sz0_ has joined #lisp
sz0_ is now known as sz0
FreeBirdLjj has joined #lisp
hexfive has quit [Read error: Connection reset by peer]
Ven`` has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
hexfive has joined #lisp
CrazyEddy has joined #lisp
Baggers has quit [Remote host closed the connection]
eivarv has quit [Quit: Sleep]
EvW has quit [Ping timeout: 265 seconds]
JuanitoJons has quit [Quit: Leaving]
FreeBirdLjj has quit [Ping timeout: 248 seconds]
EvW1 has joined #lisp
Ven`` has joined #lisp
openthesky has joined #lisp
fikka has quit [Ping timeout: 240 seconds]
FreeBirdLjj has joined #lisp
pilfink has joined #lisp
Ven`` has quit [Read error: Connection reset by peer]
Ven`` has joined #lisp
<pjb> rpg: indeed, darcs is better than git, but when git appeared, it was suffering from a few bugs, which let git take over. Now it's essentially finished.
sjl has quit [Quit: WeeChat 1.9]
fikka has joined #lisp
sjl has joined #lisp
FreeBirdLjj has quit [Ping timeout: 248 seconds]
rumbler31 has quit [Ping timeout: 255 seconds]
varjag has quit [Ping timeout: 240 seconds]
varjag has joined #lisp
FreeBirdLjj has joined #lisp
Ven`` has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
varjag has quit [Ping timeout: 240 seconds]
FreeBirdLjj has quit [Ping timeout: 240 seconds]
sonologico has joined #lisp
papachan has joined #lisp
Bike has quit [Ping timeout: 260 seconds]
wxie has quit [Remote host closed the connection]
ikki has quit [Ping timeout: 268 seconds]
damke has quit [Ping timeout: 264 seconds]
Karl_Dscc has quit [Remote host closed the connection]
shifty has joined #lisp
damke has joined #lisp
FreeBirdLjj has joined #lisp
drewc has quit [Ping timeout: 240 seconds]
FreeBirdLjj has quit [Ping timeout: 255 seconds]
igemnace has quit [Quit: WeeChat 2.0.1]
fikka has quit [Ping timeout: 256 seconds]
randomstrangerb has quit [Ping timeout: 256 seconds]
randomstrangerb has joined #lisp
nullniverse has quit [Remote host closed the connection]
drewc has joined #lisp
nullniverse has joined #lisp
hexfive has quit [Remote host closed the connection]
hexfive has joined #lisp
fikka has joined #lisp
FreeBirdLjj has joined #lisp
shrdlu68 has quit [Ping timeout: 256 seconds]
FreeBirdLjj has quit [Ping timeout: 265 seconds]
* Xach feels the excitement
stroph has joined #lisp
FreeBirdLjj has joined #lisp
openthesky has quit [Quit: Page closed]
stroph has left #lisp [#lisp]
<rpg> pjb: It didn't help that initially it seemed one always had to build darcs oneself, requiring a huge haskell toolchain, and it was never very fast.
<pjb> Why? It was a good motivation to install the Haskell toolchain and start programming in Haskell!
Devon has joined #lisp
<pjb> We should do the same in lisp. Make a widely used utility in lisp, and have all distributions and users install a lisp system!
FreeBirdLjj has quit [Ping timeout: 256 seconds]
<aeth> pjb: There is a widely used utility in Lisp that encourages Lisp, it just encourages a limited, outdated, and slow Lisp instead of Common Lisp
<jasom> When I last used darcs significantly I found that darcs was, in theory, better than git, but git was, in practice, better than darcs. In particular darcs was quite slow.
<aeth> (GNU Emacs!)
smurfrobot has joined #lisp
<aeth> jasom: agreed
<aeth> But the final nail in the coffin was sites switching from multiple version control systems to just git, effectively killing darcs and hg
<pjb> anyways, it's over, nowdays you would need to justify not using git with a very large consulting project, and reports and white papers etc.
mhd has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
<aeth> Interestingly, SVN is alive because it offers something git doesn't: better support for binary files
<aeth> SVN might be more popular than similar-to-git systems
<rpg> aeth: And svn externals are about a zillion times better than git submodules or subtrees.
<rpg> aeth: Oh, yes, and the learning curve is *much* shorter.
<rpg> My main issue is that my brain only has room for one distributed VCS, which means that I cannot afford to figure out bzr, hg, darcs, etc., no matter how wonderful they might be.
<rpg> DVCS is a tool, not a job. For me, at least.
<jasom> I can fit 3 DVCS *or* git
turkja has joined #lisp
<pjb> aeth: nope.
<pjb> aeth: SVN is still alive because it offers something most others don't: ginormous repositories that are very hard to migrate.
fikka has quit [Ping timeout: 256 seconds]
<aeth> pjb: You can migrate from SVN to git. You will probably produce multi-GB repos, though
FreeBirdLjj has joined #lisp
<pjb> At the clients' I've seen, the project of thinking about migrating to git would be multi-man-year consulting projects, and the migrations would involve duplicating the available server hardware, and be multi-man-month projects.
<pjb> Basically they've been talking about migrating for years, but just cannot invest the required cost.
<pjb> Same kind of tools as Jira, etc.
randomstrangerb has quit [Ping timeout: 256 seconds]
Bike has joined #lisp
markong has quit [Ping timeout: 276 seconds]
fikka has joined #lisp
randomstrangerb has joined #lisp
<jasom> pjb: I wrote a tool in lisp to migrate our internal svn to git, so I could do fast local querries against the history. It was indeed very non-trivial
<rpg> I remember thinking "oh, I'll just take my svn repo on the road using git-svn so I can get something done on the plane." Ha-ha. Ran the export overnight. The next morning, it wasn't done.
<pjb> jasom: there's reposurgeon to do it too (written in python by ESR, also he regreted not having used lisp).
<rpg> I still maintain that svn externals are a huge boon. People where I work just hate to start up a new project that uses git, because getting all the git repos working together is such a mess.
ikki has joined #lisp
<jasom> simple things like sometimes /trunk/module becomes /branches/foo othertimes /trunk is copied to /branches/bar. Sometimes /trunk/module is copied to /branches/baz then /branches/baz is deleted then /trunk is copied to /branches/baz
pierpa has joined #lisp
<jasom> rpg: yea, a monorepository is the best way to use git, which kind of sucks
<rpg> The number of ways to get your submodules stuffed up is huge.
<jasom> git submodules are completely unusable
pagnol has quit [Quit: Ex-Chat]
<jasom> everyone I know that has used them on a non-trivial project has come to regret it
<rpg> We used gitslave once, and it pretty much works, but if it ever doesn't you're in real trouble because it's a big snotball of code
<pjb> There's the android repo script to manage multiple gits too.
<rpg> There's subtrees, but right in the middle the git folks tell you right away that they have done it wrong and left in a huge way for you to shoot yourself in the foot.
<jasom> pjb: my tool found several bugs in pathname support. There were file names in our svn repository that sbcl couldn't handle and file names that ccl couldn't handle
<jasom> all fixed now
FreeBirdLjj has quit [Ping timeout: 276 seconds]