freenode/#lisp - IRC Chatlog
Search
9:37:05
beach
That's what I mean by the membership being worth it. You win after just a few articles.
9:41:17
jackdaniel
I'm not very impressed by paywalls for articles (given they don't pay scientists for whose papers they charge and which are usually written for money collected in form of taxes)
9:42:07
beach
It could be worse. Now, many journals make the authors pay to have the article published, and it is not cheap either.
9:42:47
schweers
As I’m not an academic I surely lack insight, but I do wonder how this model could ever arise, let alone stay alive in the digital age
9:42:49
beach
I consider the ACM membership fee as paying for the entire digital library service (in addition to getting CACM on paper).
9:43:40
beach
schweers: Inertial. On-line journals need to acquire the same prestige as the established journals owned by the publishing houses.
9:44:50
schweers
beach: that’s not what I meant (the ACM). But what I’ve heard from other publishers is that they ask for money left and right (and quite substantial amounts at that) without /seeming/ (am I wrong here, I’d love to know) to provide any real benefit.
9:45:59
beach
It is only a matter of time. This is probably why they try to extract as much money as possible before they disappear.
9:46:00
TMA
schweers: well, originally it was a journal subscription -- a printed, bound object containing the articles. then there was a service that mailed you a single article. boom, the world went digital -- but the inertia and inflation means you pay for it even though the costs have bottomed.
9:47:07
jackdaniel
schweers: you may be interested in Aaron Swartz story (especially his Guerilla Access Manifesto)
9:47:09
schweers
Yes, but aparantly universities pay obscene amounts of money to access their own research. Anyways, I should be doing other stuff than complaining online ;)
9:49:05
jackdaniel
ftr: https://archive.org/stream/GuerillaOpenAccessManifesto/Goamjuly2008_djvu.txt (sorry for the offtopic)
10:32:09
chenbin
can somebody help this sbcl on windows issue? https://pastebin.com/raw/3gAPvJQr thanks
10:44:58
knobo
Which documentation generation system do you use, and which do you think I (or other) should use?
10:45:36
Shinmera
Documentation isn't generated, you write it. But you can assemble the documentation into a single file with systems like Staple.
10:47:02
beach
knobo: Perhaps you are thinking of generating documentation from documentation strings? That technique has the unfortunate consequence that there is no place to put a section about goals, concepts, philosophy, etc. As a result, the documentation often becomes incomprehensible.
10:48:54
Shinmera
knobo: It's not about being stupid or not, some people genuinely believe that dumping out function signatures counts as documentation.
10:49:30
beach
knobo: I think both me and Shinmera object a bit to the term "documentation generation system" and I also think we both encourage more effort into writing good documentation as opposed to collecting it from documentation strings that are often inadequate, partly because they represent noise in the source code.
10:50:27
TMA
beach: the chenbin's question was ended with some five spaces and a "thanks" --- an inadequate expression of gratitude, granted, but not absent altogether
10:51:14
beach
Take this one for instance (SBCL): (documentation 'car 'function) => "Return the 1st object in a list."
10:51:24
knobo
Would be good if I could write documentation in a seperate file, and include documentation from docstrings.
10:51:36
Colleen
knobo: About documentation-utils https://shinmera.github.io/documentation-utils#about_documentation-utils
10:52:43
beach
knobo: Slots should not be part of client-visible documentation. They are implementation details that may change over time.
10:52:48
knobo
beach: right.. I forgot about that. But simple inline docstrings can be useful. So I'll not use setf.
10:55:04
beach
Documentation strings that are physically near code represent noise to the maintainer of the code, because, presumably he or she already knows the external interface before attempting to modify the code. I think that is the reason (the noise factor) why many documentation strings are so skimpy; you don't want to mess up the code too much.
10:57:51
knobo
Though it is often easy to read it from the code. If the argument is an alist or a plist or something else.
10:59:33
knobo
Any project that is so good that it could be used as a reference case for writing documentation?
11:02:04
Shinmera
knobo: ... yeah so? Are you asking about the act of writing documentation, or the literal way in which the strings are put into source code?
11:02:27
Shinmera
Because for the former I fail to see how the place where you put your documentation matters at all
11:07:02
makomo
thought i might see a nickname like "rstrandh" or something on irc. i always wondered who that guy was :-)
11:07:10
knobo
In javascript I use jsdoc. I just thought maybe people used a similar strategy in lisp.
11:07:58
Shinmera
knobo: I write the documentation overview, concepts, etc into the README.md . This then gets combined with the docstrings into an about.html file that contains the entire documentation for a project.
11:08:26
beach
makomo: Thanks, you too. For the record, my nick is just a literal translation into English of my last name.
11:13:40
makomo
beach: ah, now i remember your page also (it has a unique look). i've read your essay on lisp a few months back i think, when i was just starting out.
12:02:13
osune_
I have two questions: Is it possible (without CFFI) to pass (c-)structs between embedded ecl and c? And: how valid is ECL as replacement for LuaJit as plugin language on ARM (Cortex A9 / Cortex A53) ?
12:05:22
pjb
I wonder why would anybody want to do the same as cool kids. They're the adult losers in general.
12:05:37
pjb
http://www.dailymail.co.uk/sciencetech/article-3181611/The-curse-cool-Kids-popular-school-losers-adults-claims-study.html
12:06:39
pjb
osune_: CFFI is only a portability layer over each implementation specific FFI API. So the answer to your question is yes, but you would be silly to do that.
12:16:27
jackdaniel
osune_: you may inline C in ECL programs and call CL functions from C, passing structs verbaitm is possible too of course
12:16:54
jackdaniel
ECL doesn't do JIT though (unless you call that way built-in compiler, but its not the same in my eyes)
12:35:50
osune_
jackdaniel: thanks for this information. I've understood by reading the examples in the ecl directory and the manual how to convert from and to cl_object primitive types. But I miss an example of how to pass arrays and structs. I tried to look at EQL but I don't know QT and it's quite big. Can you point me to an example?
12:37:54
osune_
I figured I would compile a lisp plugin file on startup to fasl once and would load the fasl?
12:56:03
osune_
jackdaniel: I could do that but, this would mean I need an compiler on the device. Which I don't have. I'll try to find more examples thanks so far.
12:58:14
jackdaniel
fasl files are (in reality) disguised shared objects (don't confuse that with fasc, which are bytecode)
13:02:18
schweers
do people here actually use template systems in an editor for lisp? like yasnippet in emacs?
13:03:51
osune_
jackdaniel: maybe I'm missing something or we missunderstood: I want to embedd ECL in a embedded C application on ARM. I create my Linux Image with buildroot. Currently I'm assuming ECL will just build fine. Now users can write a plugin for my application by: a) write lisp code which gets just loaded (do I get here an fasl or fasc?) b) write lisp code, compile it on their machine to C with the ECL compiler , which gets compiled to an
13:03:51
osune_
*.so via gcc crosscompiler, the result can be loaded via dlopen on runtime. The goal here is that users of the device don't need access to the crosscompilation toolchain to write and load Plugins. Which eliminates option b)
13:05:14
jackdaniel
if you don't have gcc compiler and you can't compile sources beforehand you end up with fasc files indeed
13:05:56
osune_
which can be compiled from *.lisp files on the embedded device via the embedded ecl code right?
13:07:23
jackdaniel
keep in mind though that bytecode is much slower than native binary (put that on top of the fact that ECL isn't a speed champion anyway *and* that you run on a slow arm box) – so I wouldn't put serious computations in these plugins if I were you
13:15:58
pjb
serious computation = deep loops. Anything a user can write can be interpreted or byte-compiled without ill-effects. Just provide the fast primitives the user wants.
13:16:12
osune_
Thanks for the heads up. The plugin code will process some binary data mostly. I currently don't expect heavy load computations. But I have the option to embedd ECL alongside to luaJit. Even if ECL will prove as an ill fit for the plugins it might come handy for configuration tasks.
14:35:33
Shinmera
shka: If you're confused about anything, or find anything lacking, don't hesitate to let me know
14:39:07
shka
Shinmera: thanks, i will, I will read reader application, it seems to be elaborate example
14:39:27
Shinmera
shka: The tutorial linked in the docs goes through writing an entire application (plaster)
14:40:17
Colleen
shka: A lengthy and in-depth example https://shirakumo.github.io/radiance#a_lengthy_and_in-depth_example
14:53:45
zukunf
what accounts for lisp high latency in this chart?? --> https://danluu.com/input-lag/
14:57:40
lieven
not enough data to tell. If his terminal on the symbolics is a CLIM listener, it is doing far more work than just putting a character on the screen.
15:55:50
shka
is there a way to ensure that lisp file is always loaded from scratch and never cached in FAS?
15:58:41
Shinmera
There's nothing built into ASDF to do this, unless you want to just LOAD everything, in which case there's load-source-op, if I remember correctly.
16:00:32
rumbler31
there certainly are "gotchas" that you can run into if you expect that a file will get recompiled when it will in fact not be
16:02:18
flip214
if it is, have the first source file "/proc/uptime" (which consists of two floats only) and use :serial T
16:08:12
rumbler31
I would say that if you're trying to fight optimized loading, you're actively doing work to throw away a free optimization. which I would be wary of advocating unless you had a good reason, but ^ that /proc/uptime trick is cool
16:28:07
Xach
flip214: that is a very amusing trick! can you tell me more about how you thought of it?
17:13:39
lexa_
I'm looking for a library for parsing some text (Linux device treese to be specific). But most of the libraries mentioned on cliki http://cliki.net/parser%20generator are either dead or in alpha-stage.
17:16:19
beach
lexa_: It depends a bit on the style of parser you want. For combinator parsing that is cl-parser-combinators, and also (I hear esrap).
17:21:32
beach
lexa_: Since the Common Lisp language is not moving, libraries that used to work still do.
17:22:08
lexa_
Sorry, I just came from the world of C/C++, and there if software is not updated to recent changes in OS/Libraries it has a tendency to fall apart.
17:23:08
shka
luckly, in lisp land you can sometimes even run 80s software after few changes to port it to the common lisp standard
17:23:41
pagnol
can this be written more compactly using some special loop-macro foo? https://gist.github.com/anonymous/8eed8669312072879c451f5b3de550a4
17:24:49
pjb
I don't know if it's more compact, but (loop for x in '(1 2 3) for foo = (+ x 2) for bar = (* foo 3) for baz = (+ bar 4) collect baz) #| --> (13 16 19) |#
17:26:13
pjb
the point of mapcar here is that you don't have to introduce variables: just use subexpressions.
17:29:04
shka
shrdlu68: yes, but the point is that language is standardized, so it is not like conservative library that depends on other conservative library will stop working because lisp has changed and dependency was not updated
17:36:09
osune
jackdaniel: I'm sorry but I searched the EQL and ECL examples for how to translate c-structs to lisp forth and back, but in the ECL examples I found nothing and the EQL internals are really not easy to follow for me. I can see how with ffi:clines a struct can be declared, and that with ffi:c-inline I can declare the types of the arguments. But what is still unclear to me is what should be the c-type given to fii:c-inline for the struct
17:36:09
osune
(eg struct foo { int a;};) . Currently I can only imagine to create where I provide explicit conversion functions, where I build a up a c-struct by accessing one slot after the other via cl_slot_value, and vice versa. Can you provide some more hints please?
17:38:13
jackdaniel
if you want to introduce some C structure as a native type to ECL, you need to add it in src/h/object.h (and a few other places) and I doubt you want that. If you want to simply pass it around as an opaque object, check out src/lsp/ffi.lsp. That said, your best choice is to use CFFI which has a well-written ECL backend
17:45:30
osune
So to get this working without CFFI I will need quite some callbacks into C. Thank you, that cleared this up to me.
17:46:14
jackdaniel
osune: you may check out how ECL support is implemented in CFFI as well to find some hitns
17:51:53
osune
I'm on a small embedded ARM system and have to fit with some pretty big binary blobs on a 32MByte SPI Flash.
17:54:48
jackdaniel
oh, then remember to not use sstrip with ECL fasl's and libecl.so (strip is fine though)
17:55:34
jackdaniel
as of cffi, you can get down to 3.3M to have it all in one fasl (dependencies included)
17:57:42
jackdaniel
http://hellsgate.pl/files/500c6b9c there for fasl which may be `load'-ed from ECL
18:05:11
osune
minion: memo for jackdaniel: the :type :shared-object / :static-object is not mentioned in the Documentation? Thanks again for the hints :)
19:33:01
flip214
Xach: well, I already knew about :serial, so I only needed something that "always" changes...
19:33:47
flip214
if it doesn't, do a bind-mount of /proc/uptime _only_ into the chroot/jail/container etc.
19:39:57
Xach
flip214: So it seems this delight is only conceptual, as you can't have an absolute pathname as a :file component...
20:18:30
shrdlu68
varjagg: There will likely be warnings about some of the certificates in the bundle having issues, they'll just be skipped.
20:27:34
shrdlu68
varjagg: You could try using curl's bundle: https://curl.haxx.se/docs/caextract.html
20:33:17
varjagg
shrdlu68: that got me a bit further, now it throws x509-decoding-error from x509-decode
20:36:03
shrdlu68
What site did you try to connect to? Let me try to reproduce it, and get curl's ca bundle as well.
20:47:12
minion
sjl, memo from flip214: thanks a lot for the vlime update.... (but) I'm currently looking at spacemacs.... let's see.
20:47:56
sjl
According to the ADSF manual the only correct value for this slot is (keyword string), but I see systems on Github using all kinds of things there, like:
20:48:57
sjl
Ideally I'd like to be able to specify *multiple* entries there, e.g. :source-control ((:git "github.com/...") (:hg "bitbucket.org/..."))
20:51:38
Xach
If you use something contrary to the ASDF manual, it might stop working and break in the future just out of spite.
20:53:16
Xach
sjl: I dig through system file forms but I don't do anything with source-control, personally.
20:53:40
sjl
Shinmera: I use mercurial because git's ui is a shitshow, but want to still provide a github mirror to accept PRs.
20:54:08
jackdaniel
osune: I mean :shared-library and :static-library, for some complementary doc see: https://common-lisp.net/project/ecl/static/ecldoc/Extensions.html#System-building
20:54:08
minion
jackdaniel, memo from osune: the :type :shared-object / :static-object is not mentioned in the Documentation? Thanks again for the hints :)
20:54:22
sjl
Xach: yeah that's what I figured. I'll just leave it blank, I think. The README lists the repos anyway.
20:54:34
shrdlu68
varjagg: There are non-ascii characters in the ca certificate, which is throwing off a function that tries to distinguish between DER and PEM files by the fact that PEM files are supposed to be ASCII (base64-encoded): https://github.com/shrdlu68/cl-tls/blob/master/src/utils.lisp#L125
20:56:48
sjl
Shinmera: Vim has fugitive which makes it tolerable, but I don't like using a TUI for version control. I want shell commands with a sane syntax.
20:57:33
osune
jackdaniel: uhm what is the difference between https://common-lisp.net/project/ecl/static/manual/ and https://common-lisp.net/project/ecl/static/ecldoc ?
21:00:24
jackdaniel
osune: manual is complete to some degree, ecldoc is wip (but has some chapters expanded)
21:15:27
shrdlu68
varjag: It seems to work with other sites: twitter.com, facebook.com, github.com...
21:21:31
varjag
"Error encountered while checking the certificate status. Details: Response status: unauthorized"
21:22:23
shrdlu68
That's OCSP. The OCSP server responded with "unauthorized", so cl-tls couldn't verify the revocation status.
21:22:54
Xach
ACTION ponders replacing system-index.txt with system-index.cdb for insanely large system-index.txt files