freenode/#lisp - IRC Chatlog
Search
12:02:06
paule32
i tried "fill", but lost by compare, and add zeros to the first list depend on list2
12:32:33
jdz
paule32: you could work as a magician: you keep pulling out variables like rabbits out of a hat.
12:35:49
Shinmera
Sometimes the things that are going on in this channel fill me with such inexplicable, explosive rage and fury that I wonder why I even bother coming here at all.
12:53:06
Shinmera
beach: Sometimes when I see people that give me the impression they're not learning, or not doing their own work, I just get really mad. It's stupid of me, but I can't help it, it seems.
12:54:07
Josh_2
I wouldn't say it is stupid of you to get mad, more a waste of your own energy. It is understandable that you would get frustrated, especially if you are self taught.
12:56:36
Josh_2
Shinmera: I would argue that it isn't stupid to feel that way, because saying it is stupid may lead you to more negative emotion. I say accept and move on without judgement.
13:12:43
Bike
beach: for what it's worth, it looks like sbcl writes the compile-time error to a string, and then signals a generic runtime condition that has that string in a slot, along with a string of the form.
13:13:53
Bike
it feels like there should be an actual condition, but i'm not sure what would really be handling this kind of condition anyway.
14:31:15
kenanb
I have a program that needs to be controlled via various interfaces, most probably through plugins inside other software, I decided it is better to have it be a server and design the interfaces as clients, now my problem is what kind of stack to use for communication
14:34:00
kenanb
I thought protobuf+grpc / flatbuffers+grpc / trift etc but none seems easily applicable to lisp side
14:34:15
Shinmera
If you're on Unix and on the same machine: probably something pipe-based. Otherwise: TCP. If you're on a wide network with unpredictable firewalls, probably HTTP-based.
14:35:25
kenanb
Shinmera: it needs to be cross-platform, but both server and client will always be on same machine so the network is simple
14:36:14
Shinmera
Well, you could do shared memory, though I don't advise it. I'd rather say TCP-based.
14:37:01
kenanb
is there any reason json-rpc would be a bad idea? the data that is transmitted will be really small
14:37:10
Shinmera
Slapping together a simple server/client scheme with a protocol to call stuff doesn't take that much time.
14:38:52
Shinmera
Unless of course you implement a parser library for the other languages like I'm doing for Lichat.
14:40:07
kenanb
I would actually love to work on it normally, but this is a program that I need to make useful by now or it will never finish :)
14:40:45
fe[nl]ix
kenanb: I'd use protobuf+grpc because it's widely supported, though not as widely as JSON, and has built-in support for schemas
14:41:10
kenanb
cool, I initially found xml-rpc, regardless of general xml hate, I was ok with it as long as it worked, but then even wikipedia says xml-rpc is criticized to be mostly stupid :D
14:42:15
dlowe
Even without grpc, protobufs are relatively sane, binary, and have wide language support
14:43:13
kenanb
Shinmera: :) I guess SOAP is also among the pile of deprecated-bad-xml-ideas of the early 2k era?
14:44:35
kenanb
dlowe, fe[nl]ix: I actually have some experience with protobuf, but I don't think there is a readily available grpc binding for lisp?
14:44:54
dlowe
kenanb: there isn't, but that doesn't stop you from just pushing the bytes through a pipe
14:45:56
kenanb
jackdaniel: CL port for Thrift is underway? you working on it? would you recommend adapting it immediately?
14:46:19
dlowe
You want grpc if you have many services that all coordinate with each other, plus services that can operate on generic RPC streams
14:47:47
jackdaniel
kenanb: only brief documentation is provided and cleanup is pending, also it is not merged to main branch yet. so if you are fine with wip which may have some slight changes in the future, you may use it
14:49:08
jackdaniel
https://github.com/TurtleWarePL/thrift here it is, based on James Anderson work from https://github.com/lisp/de.setf.thrift
14:50:00
kenanb
seriously, what I need is a single CL process communicating with another single process that maybe, C/C++, Python, C#, or CL. One is going to send commands, and act upon the response, either by updating the UI, or printing a fresh cli prompt etc. that is mostly it. I don't even expect two clients connect it at the same time.
14:51:16
kenanb
so I guess any networking method will do in my case, the only major need is easy communication and calling commands on the server
14:52:32
jackdaniel
comming up with REST api on top of ningle isn't the worst thing you can do either – if you plan to plug some UI to it frontend guys will know what to do right away
14:54:08
kenanb
jackdaniel: I will definitely check Thrift out as well, since it also seemed like a bundled solution, and as long as it works on CL part, I think the officially supported languages will do for the client side.
14:57:31
kenanb
Shinmera: the API seems really simple, you just make-server, map some string commands to lambdas, and that's it for the client side, but I haven't tested it much yet, so I don't know how it handles error conditions etc.
16:15:39
mfiano
yeah, i had thought it is where i found a particular article, but it turned out to be one of the other domains.
16:17:26
mfiano
XachX: also, i request that sly follow up article, or at an idea of where you are now :)
17:24:53
shka_
you may perhaps try to use some generator like SWIG, but no idea how hard or easy this will be
18:14:52
emaczen
fe[nl]ix: I was getting strange integers and am pretty sure I didn't do it correctly then
18:28:28
emaczen
phoe_: I don't like the idea of writing to a file and then reading from it, but maybe it is fast enough
18:42:46
emaczen
_death: is the idea that I can still write code in terms of files but it will still use RAM?
18:44:55
_death
that's not shared memory, but you can also do that using a tmpfs mount (e.g., /tmp or /var/tmp on some distributions)
19:08:56
phoe_
tell hunchentoot to output whatever proper HTTP headers it should output, give me the socket stream, and just (loop for jpeg in jpegs do (print-sequence jpeg stream))
20:57:32
jmercouris
can someone explain to me the message in the topic: the #1=(programmable . #1#) programming language
20:59:40
pjb
#1=(programmable . #1#) === #1=(programmable . (programmable . #1#)) === (programmable programmable . #1#) === (programmable programmable programmable . #1#)…
20:59:51
phoe_
in (#1=(a . b) (a . b) #1#), the result is an alist that looks like ((a . b) (a . b) (a . b))
21:02:30
jmercouris
So the joke is that lisp is the #1 programmable language because it can be programmed?
21:03:09
jmercouris
phoe_: sure, GNUS is also not a joke, but it's kinda a joke, you know what I mean?
21:03:28
phoe_
you can program the language and then you can program the programming of the language
21:03:57
Shinmera
I feel like explaining the topic is kind of ruining the beauty of it. It was a genuinely nice surprise when I realised what it meant on my own as I learned lisp.
21:04:26
jmercouris
Shinmera: I still think it's pretty cool, I just didn't know that syntax, didn't really ruin anything for me
21:05:10
pjb
Rather, try: (loop with *print-circle* = nil for *print-length* from 1 to 10 do (print '#1=(programmable . #1#)))
21:05:42
pjb
_death: *print-length* is useless in your case if you have *print-circle* true! (which you should have in your rc file by default).
21:06:28
_death
pjb: no, I keep it at nil, because I don't usually want #n# shown for simple shared structure
21:07:25
_death
on the other hand, a moderate bound on print-length may be a good idea (I thought about it before, but didn't get a chance to try)
21:10:10
jmercouris
Shinmera: with so many projects, how do you keep them clear in your head? how do you remember what you were working on last in a given project?
21:10:58
Shinmera
jmercouris: Usually I don't, because I finish them so I don't have to work on them any more aside from bug fixes.
21:20:23
Shinmera
For those that are too large to finish quickly I just organise code very clearly and keep ideas recorded in issues or on my trello.
21:22:21
jmercouris
There's so many configuration possibilities, and you can infinitely tweak your config, but actually is not a good way to start imo
21:24:30
jasom
someone tell me what I'm doing wrong: (extern-alien "write" (function long (* void) long))
21:36:53
Cthulhux
libnotify seems to be the consensus about how to display notification toasts on linux
21:38:30
Shinmera
Sure, and you can't display toasts on a WM without a notification handler (even more common)
21:39:37
Shinmera
You could do your own thingy to display notifications with simple frameless windows.
21:40:25
Shinmera
If you're using Qtools, QUI has that ready for you :) https://github.com/Shinmera/qtools-ui/blob/master/notification.lisp
21:41:49
Shinmera
Haha, yeah. Won't get low deps with Qt. At least deployment is handled for you and mostly "just works" from my own tests.
23:10:14
pjb
emaczen: errno is not a variable. It may be a macro expanding to some complex expression, like, accessing some thread specific attribute.