freenode/#lisp - IRC Chatlog
Search
12:12:01
jackdaniel
slapping REPL on top of some complicated software gives you nothing - not much different than attaching gdb to running C process
12:12:13
dim
yeah I agree, but it doesn't help solve the problems I mentionned in any way that I can see :/
12:16:20
jackdaniel
maybe that's why I don't like Emacs. I'm interested in editing files, not programming them.
12:17:22
jackdaniel
if we assume that Lisp is an application to write programs with, then I have to conclude that it is a very crappy application
12:17:50
Shinmera
dim: What's the difference? You're using an interface (text) to make the computer do things (evaluation).
12:18:03
dim
I don't use Emacs as an application either, it's an interactive environment that I can program to my desires, I like that
12:19:00
dim
Shinmera: I would say that for me, an application implements a solution to a use-case, or a set of use cases, it's not open-ended and supposed to be evolved by the user into something else
12:19:44
dim
when you're given lisp, nobody knows what kind of problem you're going to solve with it
12:19:55
Shinmera
My point is that the distinction between what people see as an "application" or not is very arbitrary. Whether you're pushing buttons or writing text is hardly consequential.
12:20:02
dim
when you're given an application, I'd argue that people know what kind of problem you might want to solve with it
12:20:47
dim
what I know for sure is that everytime a pgloader user sees the lisp REPL / prompt with the useful restart values, they feel like I didn't do a proper job at writing an application that just works
12:21:33
dim
it began with comparing Golang and Lisp in several dimensions, including the default tooling, and I think the default tooling for Golang makes a lot of sense
12:21:35
stacksmith
Modern idiocy is to create a lot of declarative layers like CSS or crap in Emacs. Once it gets big, there is no way to figure out who sets a color or responds to a message...
12:22:25
_death
dim: both CL and Elisp provide abstractions useful for particular domains (abstractions for creating abstractions, or abstractions for manipulating buffers and windows and points and marks and...).. this suggests to their users the kind of things they may be used for
12:23:49
dim
like saying that having gcc and the libc is preferable to shipping cat, it's a coupld open and dup calls anyway
12:24:53
dim
some users want to be able to use /usr/bin/cat without having to know how simple it is to write the C code behind it, that's my argument in favor of the go build default tooling vs the immense flexibility we have in CL with the REPL, I guess
12:25:25
_death
dim: it's more like saying that a Lisp with a properly designed CAT function can be nicer than UNIX cat
12:26:38
myrkraverk
And shipping a cat can be painful if it's not in a good enough box. They have claws.
12:27:09
dim
the unix box comes with a good enough REPL for most users, because they know nothing else, mainly, but that's not the point
12:27:27
dim
so default golang tooling is pretty good at targetting the Unix user experience, I guess?
12:28:04
dim
whereas the CL default tooling is meant for something else entirely, which means that using CL to target the unix user experience is full of traps, uneasy, and frustrating as hell
12:28:16
Shinmera
myrkraverk: My messages are: whether something is or isn't an application is entirely arbitrary, and: whether people are comfortable with something or not is almost entirely a question of presentation.
12:30:08
myrkraverk
dim: for my lisp code, I've settled on SBCL; which can be painful enough to handle, when shipping to many boxes.
12:33:54
jackdaniel
imho not in this case - it just introduces noise which (once again - imho) misses the point yet redirects people attention
12:51:18
_death
I suspect many of them are.. and this is why pgloader may be much more useful (hackable, extensible, maintainable) than a go-pgloader.. maybe 99.9% of your users don't care, but that is the target audience you picked :)
13:17:03
beach
schweers: I haven't decided that. Perhaps how special variables are handled in the presence of threads. But that's a good point.
13:17:57
schweers
is there any thread aware implementation in which threads don’t inherit the root binding of the main thread?
13:19:14
beach
In all implementations I know of, the global binding is shared between all threads and every subsequent binding is thread specific.
13:19:39
beach
And of some implementation doesn't do it that way, it would have to change in order to be WSCL conforming.
13:19:53
schweers
by global binding you mean the root binding, not the binding active when the thread is spawned, right?
13:21:15
beach
dim: Yes, and as the article by Hudak and Jones shows, the cost of learning a new programming language is minuscule compared to the potential savings in productivity of choosing a language that is adapted to the task at hand.
13:23:35
myrkraverk
By CL's default tooling, are we talking about the compiler/interpreter environment, or quicklisp?
13:24:34
beach
schweers: Only one that I know of. They don't exist because the cost of conducting one is exorbitant. Luckily, the US Navy did a small one once. It is not perfect, but it gives some indications.
13:27:52
schweers
but in all seriousness, given a Lisp OS, there should still be cases where a reboot is inevitable, right?
13:28:20
TMA
schweers: there are experiments in live kernel patching in linux (both suse and redhat are developing one, iirc)
13:29:11
dlowe
I would think that it's possible for any OS data structure to become corrupted in such a way that it will require a reboot to fix.
13:30:04
trafaret1
I have started using emacs I would like to have lisp like ipython shell in emacs where I type some expression and it will be instantly evaluate into text file beneath expression
13:33:24
_death
trafaret1: https://www.quicklisp.org/beta/ in particular "To install and configure SLIME"
13:33:33
svillemot
trafaret1: "apt-get install slime" actually works (though you won't necessary get the latest version, depending on your distribution)
13:33:36
trafaret1
I fall in love to emacs and shortcuts in programming I don't have expirience but I want start with lisp
13:34:28
beach
dlowe: Do you see what I mean about having to reboot even when the system is bug free?
13:35:07
shrdlu68
trafaret1: Great! Well, quicklisp is a package manager used for CL, used to install libraries not in the language's "standard library".
13:35:37
svillemot
beach: why do you recommend against using apt-get for install slime? (I'm maintaining the package in Debian)
13:36:56
beach
svillemot: Maybe my information is outdated, but I have seen several newbies in the past who do not use Quicklisp for installing SLIME and then they get outdated or incompatible versions. I will gladly accept being corrected.
13:37:05
trafaret1
for little correction I have started installing slime through apt-get and next do I need to add package from melpa into emacs?
13:37:49
beach
dlowe: Restart should not be needed in most cases for the LispOS I am planning, just like we don't need to restart our Common Lisp system when we update a function.
13:39:01
beach
dlowe: And, yes, the current situation is what it is because most existing operating systems have monolithic kernels.
13:39:18
svillemot
still, it is easy to use, since it registers the proper bits into both Emacs and ASDF
13:39:22
schweers
there are cases in which I have made a change and found it easier just to restart the lisp session than to "undefine" the relevant parts and reload code in the correct order.
13:39:35
svillemot
_death: in this precise case, trafaret1 told he was using an apt-based distribution
13:40:00
beach
schweers: Yes, there are situations like that, mainly because existing Common Lisp systems rely on that being a reasonable possibility.
13:40:09
_death
svillemot: yes, but other people in the channel may not be able to help with debian-specific issues
13:40:29
beach
schweers: SICL (the basis for the OS I am thinking of) has first-class global environments which will make many of those situations unnecessary.
13:41:15
beach
schweers: It is compatible with the standard, but it is an extension,yes. http://metamodular.com/environments.pdf
13:43:18
schweers
if I understand correctly, (some?) scheme implementations have an extra argument to eval, which is an environment. I suppose that is at least something.
13:44:44
schweers
trafaret1: if you mean “Can I produce standalone binaries?” the answer is that it depends on your implementation, but mostly, yes, you can.
13:45:38
shrdlu68
trafaret1: The distinction between language and implementation is rather clear in CL, but you'll get used to it.
13:51:56
trafaret1
I worring about hard connection between lisp and pure math stuff like lambda expression and recurrsion
13:54:53
trafaret1
shrdlu68: I mean does learning lisp require more math skill compare to c++ for example
13:55:08
shrdlu68
trafaret1: Lisp's reputation precedes it. Unfortunately almost everything in that reputation is inaccurate.
13:55:46
schweers
as lisp covers more ground than any other programming language or runtime I have yet seen (with the possible exception of concatinative languages), there is more stuff to learn. But in a way, this is an advantage. I always viewed compilers as a box of black magic (and to some extent still do), but lisp lets you, the user of the language, change how compilation works. this is something which takes some time to learn, bu
13:55:46
schweers
more than in other languages, because most other languages do not cover this topic in the languages themselves.
13:56:22
shrdlu68
trafaret1: In many ways CL is just a language that doesn't get in the way of your coding.
13:56:25
schweers
speaking of which: I find C++ templates hard to understand. But I have to admit that I never tried that hard :/
13:57:23
schweers
trafaret1: try not to be too put off by some things in the language and the standard that just seem weird. Almost everything in CL is the way it is for a very good reason.
13:58:20
schweers
yes, there are dark corners everywhere, but it seems to me that CL has surprisingly few such corners
14:02:02
schweers
Do people use lisp on microcontrollers these days? I know that there have been such projects, but I’m not sure it can be done with current free implementations.
14:03:01
trafaret1
about emacs I have quesion. It's very powrfull tool. Are here borgs who can programming at least 10 langauges in it?
14:04:19
shrdlu68
trafaret1: You don't need all that power. Learn what you need to get started, simple things like saving a file, and learn the rest on a need-to-know basis.
14:04:41
_death
shrdlu68: of things that are not widely and perfectly understood? nested backquotes, evaluation times, method combinations, restart-bind, the pretty printer, etc.
14:06:09
schweers
those things not being perfectly understood doesn’t necessarily make them dark corners of the language, if you ask me.
14:06:29
trafaret1
question for american fellows. Do you always buy books or can you download it from web and what kind of panishment for it?
14:11:48
shrdlu68
trafaret1: Americans are wealthy, generally speaking. They buy primarily because they can, not because of the law.
14:19:25
trafaret1
I know authtor who started gathering donats form people and write his book but the way he had gathered a decent amount of money and now this book is free
14:19:53
beach
Well, the entire idea of writing/recording once and making money N times is wrong in my opinion. I welcome the fact that most musicians now have to make money by working (giving concerts) instead.
14:21:01
schweers
I don’t think its ever been that different for the musicians themselves, at least those who did not produce overtly mainstream pop music. It has been different for the content mafia^W^Wmusic labels though.
14:22:11
rumbler31
I don't know, at least about books, the cost of printing is born by someone. If an author only gets paid once, they get paid once by whom?
14:34:30
stacksmith
The entire publishing model is _obviously_ wrong, since the only way to enforce payment is with a gun.
14:39:52
stacksmith
95 percent of the 'value' of purchasing a books has nothing to do with a book, but a bribe to avoid kidnapping, having your house torn apart and property confiscated, and extortion by the legal system.
19:51:56
phoe
jeosol: looks like https://github.com/Shinmera/oxenfurt - or that's what his github says
19:57:48
jeosol
hey guys, need some help and recommendations on cheap cloud instances. i have a challenge due in 3 weeks. I need to run 250 parallel jobs (each taking about 20 mins) in one iteration, and repeat for 50 iterations. This makes one case. I need to run about 5-10 of these cases within 3 weeks
19:58:22
jeosol
I am running lisp code, I see your point, not sure if anyone is using lisp on the cloud that is why I asked
20:10:04
p_l
jeosol: well, it will be probably easiest if you can reliably package your code into something quickly deployable (docker?)
20:10:39
p_l
jeosol: then figure out how to use cloud provider's APIs to do the work quickly with minimum fumbling on the servers
20:12:01
jeosol
The small tests I did, take about 20mins, on my 64GB machine OpenSuSe, some can take 30 mins
20:12:33
jeosol
no @p_l, they are SIMD, I need to perform the same workflow repeated with different data F(X), with X changing between calls
20:13:10
jeosol
Yes, I need to gather the results back, a single result that I feed into the program, and that ends one-batch, on to the next
20:14:19
jeosol
I am running as threads using lparallel, but for all cases, to get done, if I can push 250 runs at once, get results back in approximate 30 mins, I can finish a case in about a day
20:15:02
jeosol
Good question, I have the problem crash most times when dealing with large CLOS objects. So I start SBCL with large memory size.
20:15:52
jeosol
the bottle neck is not within lisp, I make a call to another software/blackbox after writing input files for that program, do a system call, wait for the call to finish, then read the output file
20:16:47
jeosol
lisp code is the layer that manages all logic, processing etc, but that call is the most expensive part. I can't make that part go any faster
20:18:14
jeosol
no communication at all between the runs. I start slime, run the top-level application, which then runs the job
20:19:14
jeosol
then the threading functionality takes that function with different input to creates the threads
20:19:23
p_l
Cause well, I can help you get somewhere around $5/day for 16 core, 104GB machine, if your software could survive random stops and preferably finish within 24h per execution
20:21:38
p_l
from my understanding, you have a pattern of <N*lisp threads> -> 1 blackbox -> <N*lisp threads>
20:25:32
jeosol
my whole setup is in linux, but that program is a windows program, so I cheat by running it with wine
20:30:58
p_l
if it's a one off job, building a deploy image (docker might be good option) and then grabbing pretty much any cloud provider with big enough options should be good enough
20:33:43
p_l
it's important to get a grasp on resource usage, especially as different cloud providers have different "weights" to which resource costs how much
20:34:39
p_l
and then nom whatever money you have left on memory which you'll use to buffer the slow EBS ;)
20:35:33
jeosol
I see, when I asked the question before, I was told AWS is expensive, and may be able to get a reasonable size box for 30 a month on hivevelocity or sth link that.
20:36:30
jeosol
I think 250 jobs at once may be too much, if I can leave with say batches of 50, that may not be too bad.
20:37:40
p_l
I like Google Cloud Platform not just for the fact that it's usually cheaper than AWS, but also because their default networking mode leaves everyone else in the dust
20:37:40
jeosol
p_l: I see. realiability is also important as I don't have enough time. I am extensively testing on my box, if I move somewhere I don't want to job to fail as least on the LISP+SBCL side
20:38:29
p_l
if you make it into something that can be quickly deployed without worrying about setting the OS etc. you'll have much better time testing and setting things up
20:39:58
p_l
having well-done package is better than slapping together a docker container, but I assume you want to get the job done fast and that it's not going to be some production monster (and even then it can be fixed)
20:40:50
jeosol
I will like to have it in the cloud at some point with robust solution, web app, etc, but for now, I want to just run the cases for the challenge, so a quickly dirty solution is better
20:41:34
jeosol
but if well-done package is a few days, and will save headache, then it's the way to go
20:41:56
p_l
if you handle the packaging part well enough that running the code can be dropped to the level of "one line to execute on nearly any random Ubuntu install"
20:45:08
jeosol
by packing you mean the whole shebang, sbcl, blackbox, etc, and possible some executable generated to run on command line?
20:45:49
p_l
(you don't need to upload your image to Docker Hub or anywhere else, you can export it into tarball, upload to server then import
20:46:13
jeosol
that's the best option. usually it was always a pain for me, moving files, installing, etc
20:46:57
p_l
your program sounds like straightforward compute thing, so packaging and setup is going to dominate workload
20:47:30
p_l
and if you really want to get cheap on the cloud, making your workload easily transferable, and making it so that you only actually run when you have your program running, is important
20:48:50
jeosol
you are 100% right. is the packaging and setup that is the most work. I tried to make everything self contained. I only need sbcl, quicklisp, ..., blackbox, and python libs. but I have been doing all this by hand
20:49:36
p_l
and docker by packaging the whole of a linux distro will also make it easier to deal with dependencies you might have missed (wine? ;D)
20:53:40
jeosol
not really, if I understand. No GPU/Cuda or anything. I only make plots to see results sometimes, but I disable all that when doing the heavy workload
20:54:37
p_l
jeosol: you might not notice the blackbox calling graphic-dependant functions (it might not show a visible window for one)
20:57:55
jeosol
it ran ok, but usually i get some random windows socket related error at start of call. fixme:heap:RtlSetHeapInformation 0x240000 0 0x23fd40 4 stub, fixme:winsock:convert_socktype_w2u unhandled Windows socket type 5, etc
21:06:51
jeosol
p_l: thanks. I can't get you beer if you drink, but the pointers and help are appreciated.
21:09:07
jeosol
I will probably still looking to those more robust options later, but my primary need is just getting the code to run. I am testing now to make sure no problems with Lisp/SBCL end of things