freenode/#lisp - IRC Chatlog
Search
11:16:06
adlai
would the correct term for 'ware such as XCVB be "kamikazeware", since it ultimately never went anywhere itself, but strengthened what remnained?
11:16:57
adlai
or perhaps, chickenware - last library standing eats the one that falls by the wayside.
14:12:05
soma1257
Hi beautiful lisp community! Today I'm here for a career advice. Currently I'm making 669.97usd/month after taxes as a full time erlang programmer. And I'm starting to get sick and I can't pay for doctors, nothing terrible, i *believe* is just food deficiency. I would love to make 1k-1.5k/usd month working remotely, and i don't care how many hours or day i should work to get that.
14:12:05
soma1257
What i want from you guys is some advice, What market should i focus in? Where can i find a better job? Is any real chance for a remote job for a normal programmer?
14:48:54
jeosol
I happy to say my cl-application is somewhat stable now, but my local 64gb box with 32 jobs in parallel is using all my memory, will have to get something online
15:06:49
phoe
jackdaniel: I just stumbled upon the handler-case thing that you were talking about some time ago.
15:21:19
Shinmera
I don't want to reveal too much because that would spoil the surprise. But if you want to get spoiled, I talk about my plans (and show the development) on my Treehouse streams. https://www.youtube.com/playlist?list=PLkDl6Irujx9MtJPRRP5KBH40SGCenztPW
15:36:11
phoe
jcowan: not anymore, I think. I've already raged a little too much over the quality of their code.
15:38:46
jcowan
Out of curiosity, does anyone know what CL is used for at Google? When I was there (2007-10) it was no more than a rumor and a style guide.
15:41:14
jcowan
I note that the published Intercal style guide ends in "When to use Intercal: Only if you absolutely have to! Good grief, has it really come to this?"
15:44:10
pjb
soma1257: the only career advise we could give you is to follow Paul Graham's steps: start up a company, write a nice web app in clisp, well your startup to yahoo or google for $100+M, become venture capitalist.
15:44:41
pjb
shka: win obfuscation contests, ensure long term employment, answer silly questions, and more.
15:45:31
pjb
soma1257: but if you want to earm more money, learn kotlin or swift and write mobile apps, it's where the easy money is nowadays.
16:13:50
rpg
aeth, Shinmera: you can build a lisp image with ASDF for delivery as an application. I think there's enough difference between systems that ASDF will *not* build you a command-line executable. It will get pretty close, though.
16:14:42
rpg
drmeister: I've used dribble in non-interactive experiments, or experiments that produce a truckload of output that I need to grovel over later.
16:15:09
rpg
Typically only for not-so-well structured systems where I don't want to bother figuring out how to redirect output myself.
16:16:05
rpg
Shinmera: But I thought the question was about executable delivery, for which source delivery is not necessary, and might even be A Bad Thing.
16:16:37
Shinmera
I think aeth wanted to have things as a single source file for better optimisation.
16:17:14
Shinmera
As for binary deployments using ASDF, I think it's currently the best way to create deployments for Lisp applications.
16:18:43
jcowan
ACTION mourns the loss of Interlisp culture with its image/logfile program representation
16:24:30
rpg
jcowan: ? You can still build images for your programs. It's not clear what are the limits on shipping them around, though, because of possible incompatibilities with shared libraries where you deploy.
16:24:58
rpg
Or do you mean something like Smalltalk, with its "there is no source file" philosophy?
16:26:59
rpg
I had to work with some code from... that expert systems vendor -- I think an outgrowth of LMI or possibly symbolics -- they had no source files. I really hated it, because they used it to chain you to them
16:29:54
jcowan
(I worked for a while with Lyric, the first full implementation of CL-IL coexistence)
16:31:32
rpg
I can't imagine working without `diff`, imperfect though it is. Or the ability to work with git. Using jupyter now, which has a similar feature (bug?)
16:34:01
jcowan
It's clear from reading the JLS that the Java people expected classes to be stored in a database in production, rather than in the file system.
16:36:10
beach
rpg: Things like diff and git sort of work, but only because we represent everything as text. And even then, it doesn't work that well. It would be interesting to investigate how similar tools could be created for more complex data like structured documents, graphs, etc.
16:38:36
beach
rpg: But you are right of course. Given that we do not have any tools that work on more complex objects, then it is hard to imagine doing without those tools today.
16:39:14
rpg
beach: Agreed, but I am pessimistic since how long has there been microsoft word? And I still can't put a word document in git and track modfications.
16:40:47
pagnol
is there a way to just export/publish everything when defining a package with defpackage?
16:41:35
shka
pagnol: you CAN iterate over all symbols in package and export but i have no idea why would you want to do that
16:42:56
jcowan
you could write some git porcelain that unpacks .docx/.pptx/etc., which is basically zipped XML, and store the individual files, reassembling them on checkout.
16:43:07
fourier
but it is self contained and you just give someone else a file and he will read these modifications
16:43:11
jdz
fourier: the "track changes" thing does not exactly work when different people do changes independently.
16:43:14
rpg
my colleagues all make horrible directories with my-final-report-v287.docx and similar snot in them.
16:44:51
fourier
for simultanious access ms invented sharepoint. so everyone who is workng with management documents has to use it in big corps...
16:44:53
rpg
jcowan: It's not that, it's because they can't easily pull out old versions to diff them: it's easier to leave all the versions around and use compare revisions.
16:45:21
rpg
jcowan: My company is (a) not hierarchical and (b) staffed substantially with CS Ph.D.s who are just fine with tree structured directories, thank you very much
16:46:41
rpg
but this is a big detour from talking about interlisp and smalltalk! Just my explanation for why languages with no file representation scare me!
16:47:16
fourier
rpg: not really, it has a lot of stuff, but what I've used it is to work with the documents simultaniously with other managers. so they were normal doc and excel documents, just with versions, checkin/checkout like in vcs
16:47:21
jcowan
I have in fact taken Word documents, unzipped them as described, made global changes to styling, rezipped them, et voila.
16:59:16
jcowan
beach: I note that the beginning of that document says Unix was designed to run without an MMU, but this is not true
17:03:05
cgay
ACTION is just throwing out the name of a random expert systems provider related to Symbolics and no specific knowledge of their lack of source files or lack of lack of source files, as the case may be.
17:03:27
pjb
jcowan: it's true that early unices could run without a MMU, and the first one didn't have one. THe PDP-7 didn't have a MMU, and The 11/20 lacks any kind of memory protection hardware unless retrofitted with a KS-11 memory mapping add-on.
17:20:15
pjb
rpg: the problem is that files are sequences of bytes (or at best, sequences of characters); therefore diff provides you with a difference in characters, which is not meaningful for software development purposes. Then you have all kind of problems, such as commits with only indentation changes, or worse, commits mixing indentation changes and semantic modifications.
17:21:08
pjb
rpg: I'm not saying that a system built on structured code "data bases" would be better, but it has at least an opportunity to make it better. At least, indentation is left to the pretty printer…
17:44:44
semz
Does Slime use the FFI internally for interprocess shenanigans? I'm trying to figure out the cause of a segfault.
17:44:58
cgay
Isn't it all a matter of tools? With text files you can always apply a reparse+pprint step before diffing, for example. Or parse and diff the ASTs or whatever. It's just that there's a boatload of text-based tools lying around and the other tools would necessarily be more language-specific, I think? (Sorry if I missed some context.)
17:50:30
semz
Xach, are you somewhat familiar with Slime's internals and could you help me track down the cause?
18:00:32
semz
phoe: ECL seems to catch the segfault, so I don't think there even is a dump. It doesn't crash itself and just returns to the toplevel. Then (again, only sometimes) the connection dies out of nowhere.
18:02:50
khrbt
semz: can you share details on how you set up your system so someone can try to reproduce what you are seeing?
18:15:16
semz
khrbt: Sure. It's a clean install of Emacs (25.3.1, from Gentoo's musl overlay), Slime (2.20) and ECL (16.1.3). Musl is on 1.1.19.
18:38:02
rpg
cgay: I think you were right: intellicorp. They did a bunch of work in the petroleum industry back when I was working at the Honeywell labv.
18:40:30
semz
rpg: It was the easiest to get. Glibc can't statically link so the bootstrap binaries for say SBCL don't work on my system.
18:40:55
phoe
get your ECL ready to load slime, attach a debugger to it, try loading slime. you'll get the sigsegv and will be able to print its stacktrace.
18:42:38
rpg
semz: I think you will find that you will be happier using Clozure CL or SBCL. ECL is a tool with a very specific niche and in my experience does not work well as a general purpose CL implementation.
18:43:35
rpg
It has many idiosyncracies, and code of mine that really exercises CL makes it error out all the time, despite working successfully on ACL, CCL, and SBCL.
18:49:43
Xach
If the primary goal is to get CL stuff done, ecl can be a tough start. But if you're playing around and aren't under time pressure or whatever, trying ecl and reporting bugs is helpful in making it better.
18:59:38
rpg
Xach: True, but I guess I would suggest getting your footing using a more normal CL would be a better experience.
19:03:17
rpg
puchacz: It's maintained, but for whatever reason, it hasn't been possible for the project to manage a release in years and years.
19:04:04
rpg
I don't have the energy to build it from source, but I hear that the head version is much better than the release
19:04:12
puchacz
SBCL has monthly releases, ABCL maybe once a year, clisp, no release for a long time as you say
19:05:19
rpg
CCL is also quite active. ECL is still, AFAICT, recovering from loss of its main maintainer and need to restructure as a project
19:11:03
pierpa
Many years ago to build clisp all the energy required was to type 'make'. Is it not so anymore?
19:16:10
Xach
pierpa: I haven't found that to be the case for many, many years. I always have to fetch some extra libraries.
19:39:01
puchacz
btw, is ABCL good enough for 24/7 server? I know SBCL is a default go-to Lisp for this, but if I ever need to interact with large amount of Java?
19:39:51
jcowan_
pjb: Yes, if you count PDP-7 Unix. The PDP-11/20 ran only Mini-Unix, not Unix itself
19:40:01
phoe
puchacz: ELS 2016 had a lightning talk where AFAIR there was a Java application deployed to production with ABCL included. AFAIR it was a server application, but I might not know the details.
19:40:59
rpg
puchacz: I have found ABCL to be substantially slower than conventional lisps. I have used it very successfully as a way of scripting a Java application, but I don't think I would use it as my "main" lisp
19:43:07
puchacz
rpg: yes, I think it is slower especially around string processing. I parsed logs with it.
19:45:58
puchacz
ABCL is also the only Lisp I can have at work.... it is just jar to be downloaded. but I can't have quicklisp because our proxy is authenticated
19:46:26
puchacz
in Eclipse for Java I have to put my corporate username and password for updates to work etc.
19:47:23
puchacz
it would help if we had a single directory with all current quicklisp bz2 or whatever libraries
19:49:50
Xach
puchacz: quicklisp can export library sources into a directory and set up for loading without quicklisp.
19:50:47
Xach
puchacz: i mean make the bundle on a connected quicklisp system, transfer it to the unconnected system.
19:51:34
phoe
Xach: do you make it possible to somehow download a whole quicklisp dist at once via a web browser?
19:52:20
phoe
welp. a link to a whole archive file would be fun for that since web browsers are allowed via corporate proxies.
19:56:41
didi
Can I define a structure of :type list that the last slot is a rest at some point? e.g. (mystructure-rest (make-mystructure 1 2 3 4)) => (3 4)
19:58:11
jcowan
ACTION is amused by how ./configure checks for fork(), and if that succeeds, checks whether fork() actually forks.
19:59:10
Bike
(defun make-mystructure (a b &rest r) (list* a b r)) (defun mystructure-a (o) (car o)) (defun mystructure-r (o) (cddr o))
20:01:00
pjb
I would use %make-mystructure because you may have other options such as :named, etc…
20:07:09
pjb
there is at least one html processor written in CL, but I don't remember its name. Probably too old, and not supporting javascript, so basically useless.
20:47:38
aeth
rpg: Shinmera's right. There are three levels of compiler information. Function (compiler can do everything), compilation unit (compiler can do fancy tricks), everything else (compiler can't do that much). Generally, file == compilation unit, so putting everything in a file *should* in general make things faster. It could slow some things down by adding type checks, but, in general it's better for a final executable.
20:49:15
aeth
It also seems to not work with certain libraries. I'm going to have to think about how to replace them to make it work. At the moment, it only works if I load the all-in-one file after already loading the system normally, because CL culture overrelies on fragile global *foo* variables that can break in cases like this, and in threads, etc.
20:51:08
aeth
Dynamically scoped globals slow down your code by killing pretty much all compiler optimizations. And they are problematic enough that they have to be earmuffed by convention.
20:51:52
rpg
aeth: Is putting everything in a single file equivalent to WITH-COMPILATION-UNIT, or not? I don't claim to know.
20:52:04
aeth
They're not particularly problematic in single threaded programs when earmuffed. They are absolutely problematic when not earmuffed because you'll accidentally have a dynamic variable when you expect a lexical variable if you do not earmuff.
20:52:37
aeth
They *do* kill compiler optimizations, though, because they could be literally anything.
20:53:09
aeth
I'm not sure even a compiler with global program analysis could make dynamic variables fast because you could redefine a function at runtime or in the REPL or whatever to suddenly set that value.
20:54:58
aeth
I used to use globals as a quick hack when I didn't want to (at the moment) rewrite the function signature of a bunch of functions along the call stack, but... I got unexpected results because they don't necessarily sync between threads the way I thought they might. Now I essentially never use them, except for input/output/etc. where a bad value isn't the end of the world.
20:58:34
aeth
Well, I can use them *in the REPL* rather than in the program, such as (defparameter *window* (function-call-that-returns-a-window)) and then I can use method calls on the window object
21:00:20
aeth
didi: Iirc: defparameter overwrites it, though. If I do defvar, wouldn't the first one have to be the defvar, and then subsequent ones setf?
21:01:10
didi
aeth: Yeap. It's more of a concept thing, I read. defparameter if for program definitions, defvar for variables.
21:01:47
aeth
In the REPL I always use defparameter because defparameter is what I expect (especially since I mostly use backwards history search in the REPL)
21:02:13
onion
hm yeah. this is also something that writing a C lisp runtime with SDL , could solve. for eg. it would take care of any globals that need to be around, like the SDL window, audio context
21:02:27
_death
when there's pervasive context, use of special variables makes sense.. also makes for a much better experience when using the repl.. other languages tend not to have special variables, so there's no comparison
21:03:52
aeth
onion: I put the things that need to be around in one window object (e.g. the SDL window, the GL context, etc.).
21:05:16
aeth
It's very, very easy to wind up with way too many things in general, so I heavily use both CLOS objects and structs all over the place, and probably need at least twice as many as I do use because there are just too many things. I think at one point, one function said something like "function foo expects twenty-one arguments but only twenty were provided", but I think I've halved it since then
21:05:44
aeth
Yeah, globals could probably help, too, but it doesn't actually tidy up the mess: it puts the mess in 20+ globals
21:07:29
onion
aeth: i think that is what i will do as well. i only really need the GL/AL context and SDL stuff
21:07:49
onion
...not that any apps make more than one SDL window or anything else... overdesigned i think =)
21:08:31
aeth
onion: That's one reason I write my own stuff instead of using libraries. Libraries have to handle every case, my own stuff on the raw CFFI only need to handle my case, and are about equally verbose.
21:08:45
aeth
More than one SDL window? Nope! I can say that will absolutely never be permitted, at least for now.
21:09:22
aeth
If you handle more than 1 use case when there is more than 1 possibility, you will never get past that area, and you probably won't test all code paths.
21:09:24
onion
im just saying it seems like an overdesign for SDL2 to just about force globals "just in case" someone needed more SDL in the same thread
21:10:15
aeth
_death: In CL, large seems to start at around 7k. I'm absolutely astonished when I see some CL things above 100k (SBCL?) because that's probably equivalent to about 5M in other languages.
21:10:49
aeth
Although I expect that when it's finally working it will be around 25k. I spent about 2 years around 5k, though, because with macros it's hard to actually have forward progress in line count.