freenode/#lisp - IRC Chatlog
Search
11:37:20
_death
it's an improvement in some respects, but not others.. also, why would we be stuck? we use CL :)
11:37:23
myrkraverk
I've seen a recent advertisement/comment/opinion that people need programmable programming languages for today's tasks -- and my thought was "we already have had that in lisp for centuries now"
11:38:20
runejuhl
Go is a decent language IMO, it's beginner friendly (good stdlib, highly opiniated wrt style making source easy to ready), the (weak) type system saves some errors, but the main attraction @work is that we can compile a statically linked binary that's relatively small and efficient
11:39:27
runejuhl
I'd love to replace it with something lispy though, but haven't found a good fit.. And I'm sure my coworkers would object a bit, since they have just gotten fairly procient in Go...
11:48:24
beach
When I give talks to industry, I always point out that I think a project leader or manager who chooses a programming language without an independent standard should be fired. Such a choice may very well require substantial maintenance work in the future, and in some cases complete rewrites (when the single implementation is no longer supported).
11:49:25
beach
Actually, I give them one more possible choice, namely to also hire an entire team of compiler experts that are able to keep the language they chose going even when it is abandoned.
11:52:30
beach
Thanks. I have given this a lot of thought actually, so I am glad that my work is recognized.
11:53:40
beach
In a talk like that, I talk about "risk analysis", and if they had done one of those, they would have seen the light. Unfortunately, most project leaders and managers don't even know what a risk analysis is.
11:54:10
beach
myrkraverk: Ask Google about Java. They were sued by Oracle after having chosen Java, thinking it was free.
11:56:09
beach
I require the standard to be "independent", i.e., not from the supplier of the implementation.
11:56:20
_death
since there is a clear divide between the users of the language and the designers (and implementers) of the language
11:56:32
myrkraverk
beach: Google also complained about "the community" dropping the JVM implementation that was formerly an Apache project; not ever mentioning that it was Oracle's move to make it cost real world money to maintain.
11:58:02
myrkraverk
I don't remember the specifics, but Oracle made the test suite cost real world money, if it wasn't used for OpenJDK and/or GPL licensed; something along those lines.
11:58:37
_death
and there are also nontechnical reasons that make deprecating yesterday's stuff with tomorrow's deprecated stuff a thing
11:59:35
dim
beach: the risk analysis certainly weights in the expected life time of the project at hand and the cost of a rewrite, either for using a new programming language, a new version of a non-standard programming language (PHP/Python I'm looking at you guys), or maybe even for architectural changes (micro services, distributed network / serverless / k8s and such)?
12:01:03
dim
with Golang, I kind of like the default tooling, wherein you don't have much to think about before you can build a project and have a program to run, static binary, it's quite easy
12:02:40
dim
I mean, I use CL to ship a program to people who are not expected to hack it, just use it, and they know nothing about CL
12:03:33
dim
I wish we had something like that for CL, including support for shared libs, or even better, having CL implementations of common libs so that you don't need the .so at all
12:04:13
dim
pgloader, pgcharts, pginstall, those are applications that happen to be written in CL; the REPL is awesome for me as a developer, totally useless for the users
12:04:33
runejuhl
dim: that sounds like what I've been looking for -- if you do find something, I'd love a heads up
12:08:13
dim
for pgloader, my whole goal is “Continuous Migrations”, that is, a way to automate a task and do it again and again, unmanned
12:10:49
_death
a repl doesn't exclude it.. I won't elaborate on the advantages, expect them to be obvious to people here ;)
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