freenode/#lisp - IRC Chatlog
Search
12:12:48
void_pointer
Unfortunately, I realize that my modifications are really ugly and I haven't been able to get a SHA1 check in there yet
12:20:58
void_pointer
I remember hearing about that. Fundamentally for base level, the PGP signing and verification primarily has to be done for the client and dist updates as long as the dists themselves has sufficient hash information to verify the integrity of the downloads
12:21:35
void_pointer
Right now, the dists have file size, md5sum, and sha1 sum of the contents (it isn't the sha1sum of the tgz or the uncompressed tar but something else)
12:22:46
void_pointer
which, if checked, would be safe enough for now. Making a file with a desired sha1sum isn't yet known to be doable, but it isn't that far away. md5sum is trivial. But all three combined is a bit harder than any one of them individually
12:24:14
void_pointer
it is possible to generate two files with the same sha1 when one can modify both files as one sees fit
12:25:27
void_pointer
right now, I just go through quicklisp-projects and find the original source for each package I want and git clone (or download if they use something else) into local-packages
12:28:30
void_pointer
if the dists added sha3 of the tgz file, it would be pretty set (especially since there is some CL sha3 code with few dependencies out there)
12:29:36
Shinmera
cloning into local packages is not a very smart ideas since the projects might depend on specific versions between each other.
12:31:34
void_pointer
haven't run into that too much yet (it will get really ugly as soon as I need something that incidentally needs one xml package)
12:32:12
void_pointer
another alternative is just to just take the http links that quicklisp would download and then use wget or curl to download the https version
12:35:09
void_pointer
other reason I download the source code is to make it easier to tinker and be able to unwind changes if I screw up or submit PRs
13:05:34
Demosthenex
jackdaniel: you see that POC code to make a webserver return one script for a browser, and a malicious one for curl?
13:06:26
Demosthenex
apparently the pipe to bash causes blocking and timing that is readable by the remote
13:07:44
Demosthenex
jackdaniel: https://www.idontplaydarts.com/2016/04/detecting-curl-pipe-bash-server-side/
13:11:56
Demosthenex
oh, you had that cl-charms mcclim writeup. nice! i'm looking forward to your mcclim charms backend ;]
13:17:41
Demosthenex
i've been looking for a TUI library for simple things... i recall using turbovision ages ago and can't seem to find anything like it
13:18:10
Demosthenex
but something you said in that article about "making 1/10th of clim in text" rings true...
13:19:23
jackdaniel
" Any sufficiently complicated C or Fortran program contains an ad-hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp. "
13:19:46
Demosthenex
that's true, but it also highlights the different between having curses level control (ala charms), vs a real UI library with event loops, widgets, and screen controls.
13:20:51
Demosthenex
i find it uniquely weird that something as simple as an AS/400 style full screen form should have zero open libraries nowadays
13:21:25
jackdaniel
from other fun useless things I want to do is adding libcaca extension to that charming-clim backend
14:09:36
void_pointer
if for no other reason that to implement the second oldest language family in the oldest
14:14:39
void_pointer
Should be fairly easy to implement lisp 1.5 in fortran 95 or newer with no limitations other than available RAM. Fortran 77 would, if completely conformant, have a fixed at compile time limit on the number of conses
14:21:42
beach
void_pointer: Yes, in fact, the first Lisp system I used was an implementation of Interlisp in Fortran.
17:05:13
trocado
hi! i think my quicklisp configuration is broken... anything other than quickloading a specific dist gives an error.
17:05:30
trocado
for example: (ql:update-dist "alexandria") -> There is no applicable method for the generic function
17:14:52
pjb
before, you may collect the list of installed packages, if you want to re-install them.
18:38:21
manumanumanu
Anyone here familiar with the iter macro? I want to get the fibonacci numbers getting it, but all I am getting is powers of two :)
18:39:06
manumanumanu
which is because I don't know how to work around it's let*-style variable bindings
18:41:33
pjb
(loop :repeat 10 for a := 1 :then b :and b := 1 :then (+ a b) :do (prin1 a) (princ " ")) #| 1 1 2 3 5 8 13 21 34 55 --> nil |#
18:41:41
pjb
(loop :repeat 10 for a := 1 :then b :for b := 1 :then (+ a b) :do (prin1 a) (princ " ")) #| 1 1 2 4 8 16 32 64 128 256 --> nil |#
18:42:44
manumanumanu
I am just curious to see how they compare, and I got stuck implementing my first test
18:44:35
manumanumanu
they suggest working around the non-parallel bindings using iter's support for "previous x"
18:45:01
Bike
https://common-lisp.net/project/iterate/doc/Parallel-Binding-and-Stepping.html#Parallel-Binding-and-Stepping is what the manual says.
18:45:31
manumanumanu
(for (repeat 10) (for a previous b initially 0) (for b initially 1 then (+ a b)) (collect b)) still produces 0 1 2 4 8 16 ...
18:49:18
pjb
(iter (repeat 10) (for a previous b initially 0) (for a_-1 previous a) (for b initially 1 then (+ a_-1 b)) (collect b)) #| --> (1 1 2 3 5 8 13 21 34 55) |#
18:53:33
asarch
"Good" in the sense of SQLAlchemy and not just "an ORM" in the sense of SQLObject (both for Python)
18:55:26
manumanumanu
pjb: I am implementing something similar myself, but I'll probably go with something more let and let* styled. Like for and for*
19:06:50
dim
asarch: also Postmodern offers some high-level APIs to talk to PostgreSQL, that might be all you need here really
20:14:46
aeth
asarch: I'm sorry in advance if you're the person I said this to last time this subject came up, but...
20:15:33
aeth
So people in CL normally want something like s-expressioned SQL so they can just treat SQL like a DSL
20:17:05
PuercoPop
minion: memo for Fare: I can't find any reference to the QUAKE ORM you mentioned. Do you happen to have a link?
20:19:05
aeth
Essentially, you want to build a language that solves your problem exactly, such as loop or format or cl-ppcre.
20:19:57
aeth
If your language uses s-expressions it's very easy to integrate into CL. (Those examples don't.)
20:22:35
asarch
Well, from the point of view of them (Perl/Python people), ORMs are for abstract SQL operations on queries and since (as the On Lisp book says) you can actually create your own programming language with Lisp, I thought this "step" was "natural"
20:24:29
aeth
If you can express an SQL query as an s-expression (which is then translated to a string), you can process it in Lisp. Even if this is done entirely at compile time (and at runtime you only have the SQL string), you can still do things with it in macros that generate that macro.
20:28:48
aeth
Even if you have a CL ORM at some point it's probably just going to be working on SQL-as-s-expressions. (And you could build one on top of such a system.)
20:30:05
aeth
Probably because even the select is a form within something and isn't itself a macro/function
20:31:29
aeth
It's not flat like your line, though, which makes sense. You'd want something like (:and (:= ...) (:< ...))