freenode/#lisp - IRC Chatlog
Search
9:14:56
jack_rabbit
Has anyone dealt with trying to save an image after compiling a file, the compilation of which causes threads to be spawned?
9:21:25
jack_rabbit
Basically, I've moved some computation to compile-time, but it involves the mcclim library, and it seems to launch CLX threads even if I'm not trying to start an application.
9:29:35
jack_rabbit
Hmmm... It seems CLIM-INTERNALS:FIND-PORT is called when trying to read a bitmap, even though the result is unused.
9:33:32
loke
jack_rabbit: Code here, in case you're brave enough to try: https://github.com/lokedhs/McCLIM/tree/freetype2
9:39:54
loke
In most distributions, Harfbuzz is compiled in together with freetype, but it's an explicit dependency since some distros don't do that.
9:46:16
loke
(however, if you do that, you need to do it before starting any clim application the first time, since it caches the prerendered glyphs_
9:47:36
loke
Sone fonts are really terrible. I need to figure out the right fontconfig query to filter out the bad ones.
9:53:36
loke
Thanks. The whole purpose of this was actually to be able to render my maths equations in mt Maxima client. Talk about rabbit hole.
10:32:37
mfiano
Guest74201: There is the defstar library for "defun with types", but note that it has a toxic GPLv3 license.
10:54:05
theemacsshibe[m]
Anyone who turns a profit on someone else's code should have to pay them for doing the work for them.
10:58:08
mfiano
GPLv3 is not compatible with a vast array of libraries. defstar would probably get a bit more attention and use if it had a more forgiving license.
10:58:57
mfiano
Sorry to start a war. It isn't compatible with the code I write, or most of its transitive dependencies, is all I meant.
11:07:39
TMA
ebrasca: I have written several pieces of GPL'd software. That was C/C++ though. On the other hand GPL'd lisp code is a strange beast. There is still that interpretation that you cannot run it on a non-gpl implementation (because then you are combining it). LLGPL does not help, it has its own problems.
11:08:40
Shinmera
Ah, just what I needed to distract myself from my trainwreck of a talk: license debate
11:09:14
TMA
ebrasca: copyright is broken in general, copyright as applied to software even more so.
11:14:57
theemacsshibe[m]
A friend and I made it based on the Peer Production License, which is an arty license for art people based on CC BY NC SA. Ours has software specific terms too.
11:15:14
TMA
ebrasca: there is no silver bullet. asking for a license recomendation in #fsf and #gnu is like asking an insurance salesman whether you should be insured
11:18:28
theemacsshibe[m]
Here is our license: https://gitlab.com/Theemacsshibe/nettle-lisp/blob/master/LICENSE
11:18:32
TMA
ebrasca: it is difficult because of many reasons, the international aspects of copyright among them
11:20:33
TMA
ebrasca: https://www.reddit.com/r/lisp/comments/7fdm0r/common_lisp_licensing_situation_for_distributing/ http://www.ifosslr.org/ifosslr/article/view/75/146
11:21:04
Shinmera
ebrasca: Sabra did a survey on Quicklisp libraries and evaluated the frequency of licenses. https://sites.google.com/site/sabraonthehill/quicklisp-library-trivia
11:22:30
phoe
mfiano: I remember that there was some kind of switch that did that thing, I just can't find it at the moment
11:26:40
TMA
theemacsshibe[m]: oy, I am reading the first paragraph and I am already lost, because it necessitates to pull in yet another whole branch of law (the contract law)
11:34:05
mfiano
Does the standard have a type definition for "string designator" or should I just define my own?
11:35:05
TMA
theemacsshibe[m]: also the title is "COOPERATIVE SOFTWARE LICENSE" but the text refers to "COPYFARLEFT PUBLIC LICENSE" ; the aforementioned notwithstanding and incomprehensibility irregardless wherefore as ammended forthwith the contents thereof including but not limited to any and all words and phrases (as defined), articles, conventions and covenants is in whole and in parts almost but not quite entirely unlike huh?
11:38:56
TMA
ebrasca: do not use a license you feel you need to have explained by a lawyer in order to understand.
11:44:30
TMA
legal documents are similar to obfuscated code. a comma in a single sentence on page four means that the fourth paragraph on page 13 interact with the second sentence of the first paragraph of page 2 in a manner that is in complete opposition to the state without that comma present
11:48:50
TMA
one does not read legal documents. one studies them. or more exactly, one reverse engineers them
11:51:03
TMA
which is why I hate every single web page with its own terms and conditions. [the same applies to any service provider's terms and their changes - bank, telco, ...]
12:20:20
mfiano
What issues would I have by setting the greek small letter lambda to be a macro character for cl:lambda in the default readtable?
13:21:31
mfiano
ghard: Because it disobeys style conventions by changing the width of a symbol and thus potentially having more columns than preferred.
13:23:06
mfiano
I dislike editor tricks that separate the data's model from its view. Orgmode is another problem with it's indent mode and visual tricks.
14:32:36
Shinmera
Wish I could use freetype in my engine, but unfortunately it pulls in too deep a dependency tree.
14:33:53
Shinmera
I do have a font rendering library that I wrote myself based on stb_truetype, but it has some, uh, things left to be desired
14:42:46
smokeink
I am willing but I don't think I am able to do it, yet. As soon as I'll have some free time to dedicate to clim or to other such lisp projects, I'll do it happily
16:00:45
clintm
Did I just forget how to use parenscript or was there something changed in the past month or so that's up on QL now? (ps:ps (@ a (b) c)) -> "at(a, b(), c);"
19:42:32
jasom
clintm: functions, on the other hand, are translated to js names, which are namespace-free
19:43:56
jasom
so the parenscript form (foo bar baz) will be expanded to foo(bar baz) if the symbol FOO is not bound to a PS macro.
20:02:08
drunk_foxx[m]
Are there any good places to practice using common lisp except books and websites with some usual (mostly stupid) excercises? Like, libraries that may need routine work, which can be handled by a person who has just started Lisp a couple of months ago or something like that? Any active projects to work on?
20:02:58
pmetzger
drunk_foxx[m]: There probably are a bunch of such things, but you may have to learn a bit more about the community to find them.
20:09:29
Shinmera
Adding a test suite for Plump would be good since that's something people actually do use.
20:14:45
pmetzger
I disagree. I think anything people use and plan to use for more than a trivial amount of time needs tests. Otherwise fixing bugs and refactoring code is too dangerous and unpleasant.
20:15:34
pmetzger
Earlier today I merged a bunch of changes from someone else's branch of some code I've been hacking on into mine and pushed out the merge, and the only reason it worked right was there was a test suite I could run to shake out any issues.
20:15:56
pmetzger
Any code that never needs to be changed ever again doesn't need tests. When you find me such code, let me know. :)
20:17:32
drunk_foxx[m]
Even if it is bug free, there may exist plenty of reasons fot changing the code in the future
20:19:16
jackdaniel
on the other hand, even if it has bugs it doesn't necessarily mean they must be fixed
20:26:00
verisimilitude
Look at any working implementation of basic mathematical functions, pmetzger.
20:27:01
verisimilitude
Now, it's clear that code can and is perfectly bug free or else we wouldn't be able to do much of anything.
20:27:07
pmetzger
verisimilitude: Famously, Xavier Leroy had the implementation of basic math functions in OCaml broken for the first six months it was in use. Tests would have caught that.
20:28:31
Shinmera
writing useful tests is a lot of effort. Effort and time I usually don't have to offer.
20:28:39
pmetzger
Anyway, these days I prefer for things to be more than simply tested but actually formally verified, but tests are at least required. I fire programmers who don't want to put tests in their code and who don't want to document their code. OTOH, one doesn't need to operate to please _me_ unless you work for me.
20:30:07
verisimilitude
I'm also inclined to believe the way tests are done nowadays is a fad, like so many other things in programming nowadays.
20:30:31
pmetzger
verisimilitude: But again, you don't need to do as I suggest. That said, I fire people for refusing, and won't collaborate with people who refuse to. I have no tolerance for cowboys. But your milage may vary. Live as you wish, not to please me.
20:32:05
fouric
is someone really a "cowboy" if they would rather not write tests at all than write flawed tests
20:33:19
pmetzger
TDD has you test the tests by first running the test without having the feature implemented. It's crude but works.
20:33:25
jackdaniel
invalid tests happen sometimes and they waste time, but in general it pays off well
20:34:04
pmetzger
it gives you such pleasant agility. you aren't scared to make big changes any more because you can check if your changes worked.
20:35:58
drunk_foxx[m]
> Anyway, these days I prefer for things to be more than simply tested but actually formally verified, but tests are at least required. I fire programmers who don't want to put tests in their code and who don't want to document their code.
20:35:59
drunk_foxx[m]
Somewhat related to the discussion: what do you think about literate programming compared to the standard process of documenting/commenting the code?
20:36:03
pmetzger
Anyone who thinks they will always write the correct code the first time out isn't to be trusted.
20:36:34
pmetzger
Literate programming is really great for manuals and teaching. It seems to not work for writing real software though.
20:36:49
pmetzger
Knuth did well with it for writing TeX but it doesn't seem to work really well in practice.
20:37:05
pmetzger
That said, solid comments are also useful, but one needs to know what one is commenting.
20:37:27
pmetzger
I have seen amazing examples of the use of literate programming for creating textbooks and manuals though.
20:39:01
verisimilitude
I always write documentation strings, drunk_foxx[m], which I believe is roughly halfway to full literate programming.
20:39:48
pmetzger
I agree. Docstrings are documentation for users of an interface, not documentation of code itself.
20:39:56
verisimilitude
I'm inclined to believe the interactivity of Lisp trumps literate programming.
20:40:28
Shinmera
pmetzger: It's not just that, it's that literate programming is a description of how to organise documentation whereas docstrings are a way of attaching documentation to definitions.
20:40:44
verisimilitude
So, literate programming is effectively preparing to make the program as if a book.
20:41:55
verisimilitude
Greater documentation, such as the reason for the overall structure of the system, isn't encompassed by this, however.
20:42:05
pmetzger
jackdaniel: A real manual is better, but these days the equivalent of docstrings in other languages (like javadoc and the like) are often all you get. :(
20:42:39
jasom
jackdaniel: docstrings are just strings; you could put an entire man page in a doc string, and it would be API documentation. You could put the text for the wikipedia page for a mongoose, and it's not documentation.
20:42:45
drunk_foxx[m]
In my humble opinion, it's quite essential what the concept of literate programming whas inspired by - Knuth was a user of such languages like Pascal, Java, C and C++, and they lack in readability a lot, unlike Lisp with its AST structure, for instance; that basically means LP is much less useful for Lispers just due to the features of the language itself
20:43:48
jackdaniel
jasom: sure, but are we talking about theoretical possibilities or what people usually mean by doscstrings?
20:43:51
jasom
fwiw, Here's an example of what CWEB looks like (a C literate programming tool) https://www.imperialviolet.org/binary/critbit.pdf
20:44:04
Shinmera
I hate literate programming just as much as docstrings next to the definitions. It's distracting me from the code. Put the documentation elsewhere.
20:45:48
drunk_foxx[m]
Wikipedia disagrees on that, but I didn't dive into much detail about the history of CWEB, so not sure
20:46:05
pmetzger
I like having docstrings in code. Before such things existed, comments before functions explaining their interfaces were common. They're still common in other languages.
20:46:33
pmetzger
WEB and TANGLE were built by Knuth. TeX was ported to C after TeX's initial completion.
20:46:49
drunk_foxx[m]
That's undoubtable, I just think some are more "naturally readable" than others. Again, biased
20:47:57
verisimilitude
It makes me think of how C programmers go ``gee wiz'' with their grep and their lint and their memory leak detectors, where all of that is terrible and also effectively useless with a decent programming language.
20:48:05
jasom
pmetzger: the question Shinmera is raising (I think) isn't docstrings v. no docstrings, but docstrings next to the function definition vs. docstrings elsewhere. Without some way of attaching comments to a function, you must put them in the source adjacent to the function. With a lisp system, you can query the function's documentation through your IDE.
20:49:11
Shinmera
Yes. I put the docstrings in a separate file because I hate lots of vertical space that's spent on stuff other than code.
20:49:21
jasom
verisimilitude: linting tools are useful in most programming language; they are particularly useful in untyped language like lisp (style warnings are a type of linter, for example).
20:49:26
pmetzger
You can always manipulate docstrings in lisp away from the definition, but I think it's bad style. While reading the code you want to read the same information.
20:50:29
pmetzger
C and Lisp are at different parts of the stack. The fact that even (say) SBCL has C code in the implementation kind of tells you something there.
20:50:33
verisimilitude
Something else that separates a Lisp style warning and UNIX lint is how the system already has the code; it doesn't need to parse the code separately.
20:51:00
verisimilitude
This entirely eliminates idiocy like C++ syntax being understood differently by different compilers, because it only has to be understood once and then disregarded.
20:51:16
pmetzger
C is, as it happens, pretty bad at what it does, but part of that was what was possible in 1970 vs what you can do now (see Rust for example.)
20:52:50
pmetzger
verisimilitude: I think I read the Unix Haters Handbook stuff before it was published (it mostly came from posts to a mailing list) but I haven't looked at it since. A lot of it was bitter comments from random ITS types etc.
20:54:10
pmetzger
verisimilitude: so you think there's something wrong with being effeminate? are you a homophobe?
20:55:36
pmetzger
verisimilitude: you do get that if you said that IRL it might not be physically safe for you, yes?
20:56:17
verisimilitude
I've noticed that's a common response, an implied threat; of course, Shinmera.
20:57:07
theemacsshibe[m]
> verisimilitude: so you think there's something wrong with being effeminate? are you a homophobe?
20:58:22
theemacsshibe[m]
That's quite rude to gay people. My datefriend is much better than any Rust user.
21:05:28
theemacsshibe[m]
I like LP, it's like reading a maths textbook where the author walks you through the problem very verbosely.
21:08:14
theemacsshibe[m]
I'm pretty sure most LP programs have splitting functions which isolate the code and the documentation so you can just use either.