freenode/#lisp - IRC Chatlog
Search
2:51:21
fiddlerwoaroof
From what I gather, the whole point of ros is to allow it to take care of such things.
2:51:51
fiddlerwoaroof
It works a bit like the various sandbox development environments for other langages (virtualenv, stack, etc.)
4:49:54
anticrisis
whoman: you've tried adding a symlink to your implementation's installation directory in ~/.roswell/impls/...?
6:08:51
muzik
i changed to emacs from vi about a year ago, and thought the lisp channel might be interesting enough for me to follow :)
8:03:14
beach
whoman: Is Emacs Lisp moving in the direction of Common Lisp? And, what is the official FSF opinion about making Emacs Lisp more like Common Lisp?
8:05:57
whoman
especially good news for important things. like ffi (dynamic modules), threading, web server, more realistic record types, lexical scope, and various small bits
8:06:45
beach
I have told this story before, but it might be worth repeating in this context. When RMS announced GNU Emacs (1983 was it?), I answered his email and said I think it was the wrong way to do it, and it would be better to first write a good Lisp system and then to implement Emacs in that Lisp system. He answered "Sounds good. Let me know when you have implemented it."
8:06:45
jackdaniel
aren't they graviting towards adopting guile and maintaining elisp for already written emacs software?
8:07:04
Shinmera
Wasn't it the case that RMS didn't want packages in it and that being the primary reason elisp still doesn't have them even now?
8:08:38
whoman
beach, reminds me of how GNU project began, read this morning; 198..7? "first we should make a kernel.." and then linux 1991
8:09:07
whoman
there is an elisp implementation in guile, but guile emacs development has stalled as far as i know (checked yesterday)
8:09:35
jackdaniel
only thing I can say about "old school elisp" without CL layers is that dynamic scope is very tricky to get it right. I'm fixing bug in slime related to it
8:10:42
beach
whoman: Who said they should start making a kernel? As I recall, when GNU started (around 1983), RMS explicitly started with everything else, like Emacs, GDB, GCC, GAS, etc.
8:11:45
whoman
beach, yeah, sorry; it was slightly reversed situation - they began to make the tools to write a kernel with
8:11:58
dim
but elisp... I agree with beach that having a proper lisp implementation would have been nice
8:13:50
whoman
well, i like it a lot. i should like to test some performance on simple things versus sbcl and rust emacs, though
8:14:00
beach
dim: Slightly off-topic, but what impresses me the most is that RMS was able to choose to clone a system (Unix) that he knew was worse than other systems he knew (Lisp machine OSes) in order to get as many people as possible to help with the project. In his place, I would have been unable to do that, and I would thus have failed.
8:16:08
whoman
https://www.gnu.org/software/emacs/manual/html_node/eieio/CLOS-compatibility.html#CLOS-compatibility
8:23:49
schweers
Shinmera: it now has multiple dispatch, but it’s a little tricky for list based types, if I recall correctly
8:24:18
schweers
but it’s a quite new feature. also as far as I know EIEIO is not fully compatble with CLOS, let alone MOP
8:25:10
schweers
ah, I think one cannot dispatch on functions, as they are just lists which happen to have a particular structure
8:25:14
dim
beach: true that... and to this day I can see that I still failed to attract any pgloader contributor because of choosing CL, so I guess I see what you mean
8:26:32
beach
dim: Oh, I thought pgloader was specifically meant for Common Lisp. I guess I haven't followed the purpose of your project. Sorry!
8:27:30
dim
beach: no worries. the purpose is loading data into PostgreSQL, and now also to migrate whole data set from another RDBMS to PostgreSQL, with MySQL and SQLite and MS SQL already supported, and Sybase and Oracle to come apparently
8:28:23
dim
it makes pgloader somewhat different from lots of CL code talked about in here, in that its typical user doesn't care about CL and just uses the binary image shipped, and seldom build it locally
8:29:32
dim
but really you don't get to use pgloader on a side personnal project, mostly, it's all enterprise time, so I would hope people can spend some time contributing to it to fix their immediate problem
8:42:02
beach
I started a SICL FAQ as shka and vtomole suggested: https://github.com/robert-strandh/SICL/blob/master/FAQ.text
8:42:47
beach
So if anyone has a question, I'll consider adding it. I'll supply the answer, of course.
8:45:42
dim
why do you work on this project, as in what does it provide (to whom) when finished? for how long have you been working on it?
8:45:54
anticrisis
beach: what does success look like? Is it intended to eventually be an alternative to other open source implementations? Will it eventually build executables? (Sorry if these are too basic, i'm not familiar with the history of this project.)
8:47:03
pjb
beach: FAQ should be extracted from the question database after enough of them have been asked enough time to have a clear statistically significant idea of their frequency…
8:47:42
anticrisis
right, i was just going to say that one question from a newbie does not necessarily meet the "F" criteria
8:48:04
dim
beach: you might have heard about Readme Driven Development wherein the first thing you do is explain to a user how to use your code, and to what benefits, I like to do that and I think it helps designing a FAQ too
8:48:53
pjb
In the old times, when they were posted to usenet, they were asked frequently enough to be included in the FAQ…
8:49:24
dim
nowadays they're Marketing material meant to help users figure out if they need to care about your “product”
8:51:45
phoe
beach: for readability, I'd suggest making an additional newline after each answer. This way, question-answer blocks will be more separate optically.
8:52:22
phoe
Or, even, I'd get rid of "Question:" and "Answer:" altogether - I'd ask a question starting with "==", like, "== How can I run SICL?", followed immediately by the answer.
8:53:24
phoe
Or use Markdown to put questions in ## headers. But, judging by what your documentation looks like, I think you're a plaintext kind of person. :)
8:55:38
beach
phoe: I'll contemplate the format later. Right now I want to concentrate on the questions and answers.
9:09:26
dim
I like markdown very much, but when you're not used to it, it's a distraction from the content...
9:11:29
dim
it's supposed to be yes, but I've not found the support for other formats on par with .md
9:12:37
dim
my understanding is that “markdown has won” much like git has won against darcs, mercurial and fossil and others, maybe not in being the best technical candidate around, but in sheer adoption and then, advanced tooling
9:13:38
axion
This is why Shinmera and I hate Markdown and you should too...it's a regex mess (takes a while to load) https://johnmacfarlane.net/babelmark2/?text=a%0A++*+b%0A++*+c
9:17:17
schweers
not trying to start a flame war, I’m honestly curious: does darcs have real advantages over git?
9:18:04
jackdaniel
given migration statistics? no. from practical point of view it probably has some, but none is crucial
9:19:25
schweers
it might have helped that git was introduced by someone famous. Or should I have heard the name David Roundy before?
9:41:28
dim
at the time (2005) darcs had version control semantics and git was a file system abstration layer
9:42:24
dim
to this day, I think git still lacks a formal specification of how it handles revision control, which darcs had, it was the first thing you'd read about it
11:24:56
kora9
shka: Cool. Yeah I used an array first but it seemed like the benefits of using an array for that small a list would be outweighed by having to use generic functions right?
11:28:29
kora9
shka: Yeah, I had something like (nth (random (length (aref i wordlist))) (aref i wordlist)) for the array
11:29:16
shka
anyway, program looks fine, if you want to make it better, you may perhaps add local function so this long inner form won't be so cryptic
11:31:36
Shinmera
dim: It's implementation dependant, but not storing array dimensions in the metadata would be quite stupid.
11:48:56
Shinmera
Symbols are there to name finite quantities of things. So they're fine if you control that set. If you're processing potentially random data from elsewhere, symbols are probably not the right format.
11:53:36
Shinmera
You can use uninterned symbols for arbitrary data, but at that point the advantage of using symbols (easy typing, fast comparison) goes away.
11:58:51
schweers
I have a question for the more experienced folks here: do you miss the encapsulation and hiding mechanisms that other languages (for instance C++ and java) have?
12:00:43
schweers
I think so too, but I’m not that experienced yet, especially not with larger projects, so I wanted a second opinion. Thanks for providing it, altough I would be interested in arguments for wanting such encapsulation
12:01:09
Shinmera
The argument is "so we don't have to potentially break code our customers made in error against our library"
12:02:20
Shinmera
I like to trust users to know what they're doing, so I don't want to hinder them from doing it. If they use stuff I didn't explicitly document, and I break it in the future, that's their fault though, and it's only right that it breaks.
12:02:56
phoe
but you' can freely poke around the package's internals, inspect them, debug them, change them.
12:03:40
phoe
And if someone wants to hack your code, they'll do it anyway, so why not make it easier for them? If they're hacking around, then they're going to have a good reason for doing it.
12:04:52
schweers
debugging is a good point. I once had to edit and recompile a C++ library in order to access some field which was private, of which I thought it may have been of some use to me. Turn out it wasn’t, but that’s not the point ;) It really was a hassle to go through
12:05:03
Shinmera
Anyway, in the industry you want to minimise support requests. So, in order to do that forwards and backwards compatibility is important. So, you want to prevent your users from "doing stuff" that isn't 100% intended.
12:05:13
kora9
How do programming languages interact with hardware when they are highly abstracted like CL?
12:05:48
kora9
Shinmera: Well, say you create a graphics engine or something, at some point you have to interact with the hardware right?
12:06:11
Shinmera
kora9: For graphics you go through OS libraries that interact with the display drivers.
12:06:30
schweers
kora9: basically the same way other languages do it: calling libraries which---eventually---call the OS via syscalls
12:06:46
Shinmera
kora9: Most lisp implementations have CFFI support, so you can call any C library.
12:06:58
jackdaniel
because how it's build, you may inline C in it like you may inline assembly in C language
12:07:23
schweers
kora9: while it is not part of the standard, you can in practice poke around in “C data” and call “C functions”
12:07:23
kora9
It's too early for me to try and do any of that, but I was curious about how people who were experienced went about things like that
12:07:59
Shinmera
You practically never talk to hardware directly from any language, unless you're in the sad and miserable position of having to write a driver or operating system.
12:08:31
kora9
So you're still abstracted away, but on a slightly lower level interacting with whatever interfaces the drivers / API exposes?
12:09:10
jackdaniel
well, I've worked on writing drivers for documented hardware (like, with actual datasheets)
12:09:33
schweers
speaking of which: I have some code which uses FFI (I think CFFI, I have a really bad memory) which pokes around in a file I open via mmap. I mostly operate on machine words, i.e. 8 byte integers and floats. Is there any way to make at least the int part fast? If I understand the warning correctly, sbcl has to convert types as 8 bytes is too much to fit into a fixnum.
12:10:41
Shinmera
schweers: A fixnum is going to have less than 64 bits (due to tagging), so it needs to convert across function boundaries.
12:10:57
Shinmera
schweers: The solution is to inline as much as possible, or avoid 64 bit numbers altogether.
12:11:11
schweers
Shinmera: I don’t call any C functions, I just use it to put data into a file and read said data from there
12:12:14
schweers
so the short answer is no? accessing 8 byte memory words is expensive and will always be so (in sbcl)?
12:12:15
Shinmera
kora9: You can optimise if you want to, but I try not to focus on that at the moment.
12:13:00
Shinmera
kora9: I get acceptable performance for my current games, even without having spent any time optimising at all.
12:13:22
Shinmera
kora9: I'm sure the time will come when I do need to optimise, but I got bigger fish to fry for a long time to come.
12:15:03
Shinmera
If you want to make modern games with graphical fidelity and the kinds of things one would expect out of respectable titles, then the answer is: extremely so
12:15:22
kora9
Yeah I meant more simple things, not next-gen stuff which seems to be seriously complex
12:15:28
Shinmera
If you want to just make simple 2D sprite games or something like that, then the answer is: kinda, not really.
12:17:28
Shinmera
Well, usually when one talks about a "graphics engine" it's about stuff like OpenGL or DirectX. Implementing a renderer yourself is fun, but won't be very practical for anything due to performance.
12:18:01
kora9
Shinmera: Ah yes. What sort of things does OpenGL do for you? I figure it kind of has some features to draw things?
12:18:03
schweers
I.e. if I use a rendering engine someone else wrote, I don’t have to call OpenGL or DirectX?
12:18:04
Shinmera
I assume kora9 means a "game engine" though. As in, something that manages assets and sets up the pipelining and whatever to allow you to build games by putting together objects and their interactions.
12:18:58
Shinmera
kora9: Modern opengl gives you a programmable pipeline on the GPU to render triangles to textures. It does a whole bunch of stuff that's really complicated to explain.
12:19:09
kora9
Shinmera: I'd like to build a game engine too, and I'd like to build a graphics engine (i.e. to show graphics in general)
12:19:27
kora9
Shinmera: Ah. Yeah I figure it's complex :) But thanks for trying to explain some at least
12:20:28
jackdaniel
cepl is a nice project for working with 3d (written by baggers), there is also clinch (by warweasel), and dto's xelf
12:26:48
jackdaniel
yes, cepl is for interactive programming from REPL and providing DSL for writing shaders in lisp
12:27:19
jackdaniel
clinch has nice abstraction for objects in world, so you are encouraged to reuse parts of it. it's also easy to write in
12:27:52
kora9
Oh, so it's an abstraction for building an engine rather than an engine in and of itself?
12:28:22
Shinmera
kora9: CEPL is intended to make GPU programming accessible. You could build an engine on top of it, sure.
12:28:44
kora9
Ah, that sounds like a good starting point for me then, when the time comes that I'm good enough with CL to even attempt something like that!
12:32:40
kora9
Shinmera: The answer to this is probably very complex, but what's with graphics and triangles? I've noticed that there's a heavy emphasis on making triangles in engines
12:33:59
Shinmera
Triangles are the smallest geometric entity that has a surface. Thus anything else can be made out of triangles.
12:35:11
Shinmera
Higher polygons also have the problem that if their edge points are not on a plane, the way the shape is formed in 3D is not inherently clear.
12:40:27
Shinmera
Usually you don't have models that require tesselation anyway, so it's not a big deal.
12:44:54
kora9
Shinmera: I'm watching the youtube videos of CEPL and it seems absolutely awesome (provided you know what you're doing) :)
12:50:38
kora9
It's kind of neat to see how experienced devs are doing things even if I don't understand all of it
13:16:16
phoe
Guys - I'll need some proofreading. I've answered the recently posted Lisp Expert Questions and I need to know if I haven't said something stupid in there. https://gist.github.com/phoe/bd2f30d33c75f265ba61453dc84d8f15
13:17:34
shka
phoe: Are there any efforts to bring innovative libraries from the Clojure (or elsewhere) community into Common Lisp?
13:18:21
phoe
Shinmera: I actually wanted to write much more in here. This was meant to be the first paragraph. Thanks for pointing it out.
13:18:29
shka
phoe: you could point transactional memory implementatation, monadic parsers, lparallel
13:20:37
dlowe
shka: phoe has been doing a lot of good stuff over the years, and for you to dismiss him as trolling is just pathetic.
13:26:26
phoe
shka: Shinmera: https://gist.github.com/phoe/bd2f30d33c75f265ba61453dc84d8f15 updated. Please keep on bashing the stupidity out of this text.
13:28:08
phoe
edgar-rft: and John said, "let there be parens to delimit lists, let there be an opening paren and a closing paren"
13:56:06
edgar-rft
phoe: Why can't Google search find many good resources? Beause there are *very little* good resources of anything at all in the internet. Most other things are much shittier than Common Lisp, so nobody there notices. That's the only difference. It's a perceptional illusion.
14:03:33
zulu_inuoe
schweers: Primer style. Avoid yourself at all times. Invest in stock market. Become rich. Move to France. Build bigger time machine.
14:05:47
zulu_inuoe
In more serious news: Logging. I'm using log4cl, it's very fancy, very sleek. But I noticed it hasn't been updated since 2013. Is this a case of "It's perfect don't break it" or has it been superseded by something else?
14:09:40
zulu_inuoe
axion: Thank you. I'm checking it out now.The immediate casual glance shows me that it doesn't have slime integration, which is pretty great in log4cl
14:10:09
zulu_inuoe
shka: I fully understand, and that's why I'm trying to understand the situation rather than asking for a replacement.
14:10:47
zulu_inuoe
shka: I also believe in community involvement, so I like to keep track of what projects are getting focused on, etc.
14:16:09
kora9
One thing in Land of Lisp that's completely insane to me, is that the author uses a short url service for all links. One that happens to not be up.
14:16:51
schweers
umm … I can control and view logging from SLIME? What have I been doing with my life?
14:17:47
schweers
oleo: you don’t want to know. I hardly do it, but this seems like it could be useful for debugging
14:18:26
phoe
shka: I don't want to remove the question. If it was asked, it should be answered. In the worst case, it's a silly question.
14:19:29
shka
phoe: well, for starter, redmonk graph says that we are above the curve in github repos
14:19:32
yegortimoshenko
why (pathname (osicat:open-temporary-file)) doesn't work, at least in sbcl? osicat returns a stream
14:26:03
kora9
beach: I was asking more to gain some level of insight if generic functions in that specific scenario might impact the speed more than using an array helps (as I thought I had to use generic functions for that, then)