freenode/#lisp - IRC Chatlog
Search
11:37:09
MrMc
I am trying to use (bordeaux-fft:fft source) and get an error: debugger invoked on a TYPE-ERROR in thread The value #(#C(-1197.0d0 2047.0d0) .... ) is not of type (SIMPLE-ARRAY (COMPLEX DOUBLE-FLOAT) (*))
11:39:09
no-defun-allowed
You might get some slack from bordeaux-fft using bordeaux-fft:sfft, but otherwise it expects an array with :element-type (complex double-float).
11:40:36
MrMc
The array I am passing to the function is created as folows (make-array samples-to-allocate :element-type '(complex double-float) :initial-element (complex 0.0d0 0.0d0) :fill-pointer 0)
11:41:45
no-defun-allowed
Are you sure you need it? It looks you likely know how many samples you are going to transform.
12:02:12
MrMc
no-defun-allowed:removing the fill pointer did not resolve my problem but bordeaux-fft:sfft works
12:26:11
beach
jackdaniel has done some work on a CLIM-based documentation system. Either way, something like that (Concordia, was it?) would have to be defined to be used in something like CLIM, and McCLIM is quite usable now.
12:29:56
beach
an inspector (which we also have) that can do much more than the SLIME inspector, ...
12:30:03
beach
an editor (that we don't have, but it is being worked on) that can do much more than Emacs can for Common Lisp code, ...
12:30:07
beach
and a debugger (that we don't have, and for which we only have some ideas) that would be worthy of the name, unlike what we now have.
12:32:24
beach
ACTION is assuming, perhaps incorrectly, that "gd" means "good day" or something like that.
12:36:34
beach
LdBeth: There are two main ideas with Clordane. One is that I want a debugger to much more than something that lets me examine a backtrace when things go wrong. I also want to be able to set breakpoints, including in some system code. The other is that I want it to be possible for one thread to debug the code in another (or several other) threads in the same image.
12:54:39
beach
Oh, and the IDE should obviously contain ways of accessing the documentation in various ways: choosing from menus, clicking on code parts, etc.
12:58:36
beach
LdBeth: The thing about a Zmacs-like is that it is not that simple to do. For example, heisig is working on Trucler that provides incremental lexical environments. Those are needed for a sophisticated analysis of the code. And then it needs support from a compiler too, because only a compiler can determine the role of each expression in the code.
12:59:23
beach
LdBeth: And scymtym is maintaining Eclector, which is going to be used to parse the code in the buffer.
13:00:12
beach
Then that code will be "compiled" using Trucler incremental environments, either by a native compiler or by Cleavir.
13:03:06
beach
Then, errors and warnings signaled by the reader and the compiler need to be handled and presented to the user as appropriate feedback.
13:04:41
beach
LdBeth: As you can see, there are a lot of mutual dependencies here, and all the modules are being worked on. But getting them all done and working together is going to take some more time.
13:19:00
LdBeth
beach: yes. I’m planning on a tool help deriving code from specification and documents and keep docs updated with them. All these seem can be fit into my design, but I should keep up with the progress now
13:30:00
beach
scymtym: Speaking of which, did you ever get around to extracting that new function in Eclector, the one that reads either something that can be returned or something that is skipped?
13:31:56
beach
scymtym: As it turns out, in Second Climacs I couldn't find a suitable way of customizing the SICL reader to do what I need, so I copied the main reader function and modified it. That solution is clearly undesirable, so I would like to rip out that code and replace it with Eclector at some point.
13:43:02
beach
ebrasca: In American English, it means "orgasm", and in Russian it means "menopause".
13:43:50
beach
ebrasca: I'll explain the plan for Second Climacs. The plan is to use a very efficient buffer implementation, and to use the Common Lisp READ function to parse the contents of the buffer, as opposed to using regular expressions. Then the result of parsing the buffer will be handed to the compiler, for further analysis, all at typing speed.
13:46:54
jackdaniel
ecl depends on posix features. unless you put a posix system in your bios it will be hard
13:48:36
beach
ebrasca: So that the feedback will be instantaneous and without any particular keystrokes on the part of the user.
13:50:05
LdBeth
Emacs does that by saving file to disk and call the lint tool on it, which makes me worried about my disk life
13:50:11
ebrasca
beach: Can you destroy your system with it? (Like if you editing tcp of your system and you are working remotely on it.)
13:52:11
p_l
v0|d: it's possible to build ECL as EFI app, though it might take some wrangling in libs
13:52:50
beach
LdBeth: Emacs doesn't analyze Common Lisp code at typing speed. Maybe it does it with some other language.
13:53:58
p_l
the difference is that instead of crappy mishmash of CP/M emulation you're getting interesting API and modern environment
13:55:54
p_l
v0|d: the biggest issue, IMO, is intel pulling bytecode compiler behind expensive license, so bytecode use dropped heavily
13:57:27
p_l
because the only available tools stopped being available for free and now involve hefty license fee
14:00:58
p_l
the devkit remained open source (though was hard to find for some time) but the compiler ended up with high license fee
14:01:26
p_l
v0|d: significant changes between 1.10 and 2.0 which also became something actually deployed to more than just Itanium or experimental boards
14:02:26
p_l
then they put whole reference implementation (also place where some vendors put their extensions) as open source again, with all the changes since 1.10
14:05:07
p_l
v0|d: part of the complexity of UEFI API is that, like in Lisp or Smalltalk, it's very late-binding
14:07:37
p_l
you have "protocols" which have static definitions (essentially an array of function pointers), and which are identified by GUID
14:10:19
p_l
anyway, it's very nice in the sense that you can for example write a disk editor that will understand the same kind of disks that your firmware supports, without actually caring about details other than "block device"
14:11:16
v0|d
p_l: my eyes bleed when I see those new bios config screens, they are better than win3.1
14:12:07
p_l
v0|d: some people go crazy on designing them, yes. OTOH, UEFI having a gui toolkit built in means I could actually safely use serial terminal to configure everything on several machines I managed in the past
14:12:53
p_l
becuse you have a toolkit for defining menus, variables available for editing, things like that, and this is then consumed by a component which renders it on console
14:15:12
v0|d
llvm ir is so common these days, why don't uefi use it, maybe i'm wrong that llvm doesnt do real 16 code, and this sentence doesn't make sense.
14:17:14
p_l
(hell, x86 real16 code was better choice than LLVM bitcode, because you could reasonably write an emulator for that, and LLVM bitcode is extensible)
14:19:45
p_l
I switched to saying "If it's algol derived I probably can write it, and very probably read it"
14:25:22
p_l
more like UEFI. ACPI bytecode itself isn't that capable, even if it's theoretically turing complete (so is x86 page fault...)
14:47:07
beach
ebrasca: But people often need some initial training in order to know how to learn in an efficient and effective way.
14:49:21
beach
I frequently say something like "in software development, many developers don't have 5 years of experience, but 1 year of experience 5 times". Because they don't learn from it.
14:50:18
dlowe
you know what I find weird is that I never see job openings for more than 5 years experience
14:52:29
Josh_2
"in software development, many developers don't have 5 years of experience, but 1 year of experience 5 times"
14:52:59
Oladon_work
dlowe: I actually hate "years of experience" as a metric, partly because of the "1 year of experience 12 times" issue, but also partly due to the fact that people learn and grow and _experience_ at different rates
14:53:08
beach
Josh_2: It's a way of saying that people don't learn and train themselves according to what they did in the past.
14:53:25
p_l
dlowe: dunno, I'm currently banking of bedazzling people with "I have as many years of experience as the *TERM* is used"
14:54:15
Oladon_work
dlowe: Unfortunately, I haven't been able to figure out a way around using it to weed out all the brand-spanking-new "developers" who just graduated from a coding school and think they're qualified for a senior developer role.
14:54:37
Oladon_work
Josh_2: Obviously not beach, but typically I see it when someone's been doing the same thing, over and over and over again, for x years
14:54:41
beach
dlowe: That would require management to realize that this kind of experience is needed. And they usually don't.
14:55:40
Oladon_work
p_l: Eh, it does help with weeding people out, but I assume you're saying hard to replace it without going to an interview — that's what I've found, but I'm still hopeful that I can discover a way :)
14:55:45
beach
Josh_2: They stick to the same language category. If they program in (say) C++, they don't try out a language with automatic memory management, or a dynamic language. They assume all languages are basically the same. They don't analyze their mistakes to improve in the future.
14:56:07
p_l
when outside of FAANG 10 years of experience tends to not get you anything better than if you had 3y of experience....
14:57:13
p_l
for example, I'm starting to get why first three rungs of hierarchy at Google involve "promoted or out"
14:57:18
Oladon_work
But my experience with them thus far is (limited, but) that they all drink the Kool-Aid and think they've been working with "the best of the best" at <company>
14:57:50
dlowe
Oladon_work: just because the best people work at a place doesn't mean you're one of them
14:57:55
Oladon_work
For one, it means that if you saw something not working at <company>, it can't possibly work anywhere
14:58:30
p_l
Oladon_work: people who end up at FAANG straight from uni where they didn't do much work outside of coursework are worst
14:59:01
p_l
Oladon_work: OTOH, I figure it's exactly why L3 and L4 (with new grads starting at L3) aren't levels you can stay at at Google
14:59:06
dlowe
I can't imagine the warped perspective that would come from being hired right from education
14:59:30
Oladon_work
I'm looking forward to when I can afford to hire promising juniors and train them up myself (well, I and my team)
15:00:00
Oladon_work
In the meantime, I'm stuck looking for really good _actual_ senior developers... and finding people who think they're "senior" because they've been doing it for 2 years.
15:02:33
beach
Josh_2: I often give talks to people who have been working for many years with software development. But they have no idea about the difference between static and dynamic languages, and they have no clue how a static memory allocator works, nor how automatic memory management works. They know nothing about compiler design, so they have no clue about the relationship between the code they write and what ends up being executed by the
15:03:43
beach
So they think that a dynamic language has to be interpreted, and they think manual memory management has no cost and no pauses, whereas they think that automatic memory management is expensive and gives long pauses.
15:05:55
schweers
beach: please tell me that at least the part of not knowing about the differnce in static and dynamic languages is hyperbole.
15:07:04
beach
schweers: They sometimes know about the difference between static and dynamic *typing*, but I am talking about the separation (or no separation) between compile time and run time.
15:15:22
schweers
I still find an idea that Steve Yegge put forth at some time quite interesting. According to him, many programmers only know a single language (or few languages which are very similar to each other). They think that learning a second language will be as hard as learing the first. During this time they will be unproductive and hence they fear for their livelihood.
15:16:17
Oladon_work
The second language (as with human languages) is generally _almost_ as hard as the first, minus the concepts you learn the first time around which aren't language-specific
15:16:38
Oladon_work
The thing I encounter a lot is people who claim to know multiple languages, but write them all as if they're the same
15:16:45
ecraven
Oladon_work: ah, but aren't those concepts very close for most mainstream languages?
15:17:04
beach
schweers: I don't think most developers even think that much about what they know and what they should learn.
15:18:20
Oladon_work
ecraven: Those concepts don't have to be re-learned when learning a second language — but they also aren't technically part of learning the first language
15:19:03
schweers
Learning a new language is also not a thing you do while dropping everything else, although it does help to have proper time and attention for this task.
15:19:49
beach
schweers: I tell the industry people I give talk to, to take 4 hours per week for self study.
15:20:47
beach
If their manager does not allow that, then the manager does not have the best interest of the company and its stakeholders in mind.
15:22:09
schweers
I mean: why did the company ask you to give that talk in the first place? They could have enjoyed the food without you :D
15:22:21
beach
schweers: I also tell them that there is such a huge difference in productivity between developers and that this difference is so hard to measure, that nobody will notice that they work on their own stuff 4 hours per week.
15:22:55
beach
schweers: Usually because their is a company-wide policy to organize talks, and someone knew me.
15:24:06
schweers
So the people who decide to ask you for a talk, and the people who should follow your advice are different people. This kind of makes sence, in a sad way.
15:25:11
beach
Often the people organizing the talks are admin or management people with no training in software.
15:25:38
beach
They do ask the participants for feedback, which is why I get invited back regularly.
15:26:01
Oladon_work
Also, we like to convince ourselves we're "doing stuff" by listening to people tell us to do stuff.
15:26:57
beach
As a professor, I have gotten used to that a talk or a lecture is understood by around 10% of the participants. But that's better than 0.
15:28:45
schweers
Is is actually a normal thing that professors give talks at private companies? My employer is quite small, so I guess we won’t enjoy this luxury (also I’ve only been working in industry for 2 years).
15:30:23
beach
I don't know how common it is. I am close to retirement, so I do it for fun. And I only require that I not lose money, so I just ask for the travel and the hotel room to be reimbursed or paid for.
15:30:56
schweers
So booking you isn’t all that expensive for the company, depending on where they are.
15:32:30
beach
One company said their "budget is 1000€" which was plenty to cover travel from Bordeaux to Gothenburg and a few nights of hotel.
15:35:02
beach
I did my military service there, and I spent one summer working as an intern there. :)
16:13:30
jonatack
beach: true, though too many tourists here ATM and then in nine days there's the g7 summit that locks down the whole city/region
16:25:20
Xach
I think the term I want is "callback" - I mean a function passed to another function that may be called with some arguments if that is the agreed-upon protocol
16:28:35
Xach
I do often write docstrings that say something like "FUN must be a function of two arguments that blah blah ..."
16:50:42
scymtym
Xach: in the context of CALL-WITH-* functions accompanying a WITH-* macros, McCLIM uses the term "continuation" which is kind of accurate but also has suboptimal connotations
17:04:43
Josh_2
describe in clos is no longer a thing right? am looking at page 40 of OO pogramming in CL 1989 by Sonya Keene
17:08:12
scymtym
DESCRIBE is an ordinary function whose behavior can be customized by defining methods on DESCRIBE-OBJECT
18:58:35
vms14
did you play with images and lisp? I'm looking at cliki, there are a lot of libraries to choose
19:00:58
aeth
although technically speaking since that's true any implementation is free to build it in :-p
19:02:11
vms14
CL-PNG depends on libpng (your operating system distribution may have a separate package, called libpng-dev or
19:03:51
aeth
vms14: pngload was written to replace pngread in opticl and other places according to the readme, I think. https://github.com/HackerTheory/pngload
19:03:56
pjb
And sometimes you want to read jpeg, but cl-jpeg can't read JPEG format C2 (and others).
19:06:20
aeth
ImageMagick is nice on Unix in general. I use import all of the time as my main screenshot program for stumpwm since stumpwm afaik doesn't come with one. Using all-in-CL libraries reduces headaches, though.
19:07:01
pjb
If you keep using FFI, you're not putting pressure on the lisp ecosystem (implementations, libraries) to improve!
19:07:49
Xach
vms14: when i was running a server that did a lot of image stuff, i wound up using sb-ext:run-program with imagemagick tools. i wrapped it up with functions so it looked like lisp code rather than shell code. i processed tens of thousands of files per day, worked fine for me.
19:07:53
jackdaniel
(or implementations which operate in FFI land! - that leaves movitz and mezzano)
19:07:59
aeth
pjb: You generally have to eventually use FFI somewhere for input/output unless it's built into the particular implementation. clx is quite possibly the only exception there due to how X works.
19:08:18
vms14
Xach: xD I was thinking on doing that, but I thought meh, better if I just use a library from lisp
19:08:59
Xach
e.g. i would do something like (combine (make-caption-file "Hello!" "caption.png") (scale-base-image "original.jpg" "scaled.jpg")) or some nonsense like that!
19:09:07
aeth
pjb: hence "unless it's built in". You don't need to use FFI to be part of a Unix pipe, for instance.
19:13:15
aeth
although a full unix-philosophy OS where everything's a file wouldn't need FFI either, I guess, if that's what you meant
19:16:57
aeth
I prefer function-level/module-level composition to program-level composition like Unix or, more recently, microservices
19:17:17
vms14
so having imagemagick which handles image stuff I have yet something that does "one" thing, not one really,
19:17:55
White_Flame
it's generally impossible to "make one thing well", because different usage cases want different access styles & prioritization of its feature sets
19:18:43
aeth
White_Flame: There's only a finite amount, though. So what if different people need 10 PNG libraries with different use cases? There's room for them as long as their names are unique.
19:19:21
White_Flame
vms14: push vs pull semantics are an example of function-level impedance mismatches
19:20:32
aeth
Somewhat tangentially, https://news.ycombinator.com/item?id=20689932 about Amiga was on HN recently and it referred to https://news.ycombinator.com/item?id=9935892 about how Amiga handled images through an OS-level abstraction called "datatypes"
19:21:36
aeth
beach: I wonder what your thoughts on that are, and if something similar could work for Lisp, since you're the OS expert here
19:23:34
aeth
Essentially, it made programs forwards compatible so proprietary Amiga programs that haven't been touched in decades can handle things like PNG, apparently.
19:23:53
White_Flame
aeth: well, it also introduced a lowest common denominator that you access stuff through as well
19:24:31
White_Flame
afaik, datatypes were more about generic display than actual data processing, but I'm not sure
19:24:37
aeth
White_Flame: If you're saying that as a disadvantage, I don't see how. Nothing stops an application from also supporting other things.
19:24:54
jackdaniel
vms14: you need to differentiate html/js/css (which is input for a browser) from a language it is written in
19:25:41
vms14
jackdaniel: xD yeah, but in a browser written in lisp we would be able to implement this stuff quicker
19:25:48
aeth
I know Firefox can't be written in HTML, but I'm not sure why Firefox isn't written in XML. You can program with XML! It definitely was a mistake to (mostly) kill XHTML.
19:26:35
jackdaniel
I think I'm lost and I'm sure I don't want to follow anyway ,) I can only say that we are getting into offtopic
19:28:41
White_Flame
aeth: re-googling the topic, yeah it was basically for showing pictures, playing sounds, and displaying some documents, with minimal program interaction with the data
19:28:53
jackdaniel
you can't have lisp browser, but what about lisp checkers, hmm? https://imgur.com/XvjBCp3 ;-)
19:29:40
White_Flame
certainly handy for generic presentation use, but it's not a programmatical data access mechanism for program code to be able to process arbitrary file contents
19:30:01
aeth
White_Flame: I think you could also convert it to the standard IFF format? at least according to a reply to https://news.ycombinator.com/item?id=20690995 if I'm reading it correctly
19:30:40
aeth
White_Flame: and no need to wait for a LispOS, it could be added to something like CLIM (if it's not already there)
19:35:14
semz
vms14: lynx can display images if you install xli (read: make a shell script of that name that calls your favorite image viewer). it's not a bad browser
19:39:31
vms14
but never tried, just showed them to the people to say lisp makes you able to write stuff you couldn't write in other languages
19:41:04
vms14
pjb pointed that we shouldn't use ffi in order to increase the number of lisp libraries instead of relying the existing ones
19:42:18
ebrasca
vms14: It is alive , I have add fat12/16/32 read and write , ext2/3/4 only read and more.
19:43:40
semz
why is mass adoption a goal in itself? i'd definitely not want it if that means rotten compromises like lots of libraries that rely on C blobs
19:44:51
vms14
also, I think lisp is a very powerful language and I'd like to make others realize that
19:45:00
aeth
semz: even if 90% of every library is garbage, then more users => more developers => more libraries => more non-garbage options that can save you time
19:47:12
aeth
ebrasca: afaik, what was going on is that AmigaOS had a library that could handle the presentation of multimedia formats, and possibly even (not sure here) convert that to a standard format on demand, in a way where an application wouldn't need to be recompiled to support a new file format
19:48:10
aeth
This means that any application that used that, at least as a fallback, would be forwards compatible
19:48:42
semz
aeth: this did not happen in many popular languages though. PHP and JS come to mind as particularly offensive examples. polemicizing a bit here, but if the ecosystem's full of shit this fact also drowns any effort to counteract that and causes the users to expect more of the same
19:49:34
minion
The URL https://gitlab.common-lisp.net/users/sign_in?secret=523128fa will be valid until 20:00 UTC.
19:51:11
White_Flame
it's crazy seeing the C version cobble together asm instructions, compared to lisp's solution
19:52:28
jackdaniel
native lisp checkers game, that's what we need in the ecosystem if you ask me ;-) (sorry, I had to, I'll keep quiet about checkers for a few days)
19:55:01
aeth
semz: JS is a unique case because (1) it's (or was) a tiny language and (2) because of the way it's distributed, microlibraries make sense because you don't want to load what you're not using because that will directly add to page load times.
19:55:29
aeth
semz: A lot of other popular languages (e.g. Java) prefer to have (or at least do have) gigantic frameworks
19:56:59
aeth
dlowe: I'm not actually sure if that would break (or at least wouldn't break *everything*) because I think the programs were giving control to the OS for the rendering of the image
19:59:17
vms14
btw about images, do you know if there is a library which will let me convert images to xlib images?
20:46:56
pjb
vms14: you right, the first priority is to make programs the users want to use. Given the choice between no program and a program using FFI, the later is better. But given the choice between a program using FFI and a program using pure lisp code, the later is better too!
20:49:20
ebrasca
Yea mezano can start bare metal , it can see images , videos , probably audio and it support mcclim.
21:09:31
whartung
I’ve forked to imagemagick in the past. It’s great if you can handle the overhead of the fork and the copying of the data. It would work fine. Given that, you can instead of using imagemagick, just go straight to Postscript and render using that (since someone mentioned writing text on images). I honestly don’t know if there is a “postscript” server (that is, something besides a printer which IS a postscript server) that you can connect to more
21:10:00
whartung
I don’t know if there’s a standalone SVG renderer avaliable or not either, but that may be another option.
21:11:09
whartung
as for not using FFI, it’s all a matter of timing and whether you can wait for a native CL implementation of a functionality.
21:11:59
whartung
In java, I avoid JNI in general simply because most of my work is with app servers and an NPE in Java is an exception, but an NPE in a .so is a core dump — not a happy state for an app server.
21:12:44
whartung
That siad, I have exec’d imagemagick from Java in teh past, as I was getting better results from it than native java code. I could have JNId and use the imagemagick directly in Java, but see my previous comment about JNI
21:23:51
whartung
I’m casually working on an ecad board layout to in CL…pretty sure nobody wants that. Especially being it’ll be command driven vs a GUI.
21:24:25
whartung
but, hey, I actaully saw someone the other day ask for a CLI based ecad program, so, who know what niche I may tap in to.
21:52:17
aeth
What makes people run Windows are games and random niche professional tools which are different for every profession