freenode/#lisp - IRC Chatlog
Search
21:25:18
mfiano
(lambda (x) (declare ((u:f32 #.(expt -2f0 19) #.(expt 2f0 61)) x)) (floor (floor x) cell-size))
21:32:22
mfiano
Yeah i'm not sure what SBCL is doing. Should be 24 bits of precision and 128 bits of range
21:36:37
jmercouris
jackdaniel: why are there constant page loads in your demo? why not utilize ajax?
21:44:31
Krystof
I think SBCL is not being very smart about the fact that it includes 0, but you should probably exclude 0 if you can
21:45:09
Krystof
(declare (type (single-float (-1.0) (1.0)) x) (type (and (integer (0)) (unsigned-byte 8)) y)
21:46:53
scymtym
seems like a good time to plug https://github.com/scymtym/sbcl-ir-visualizer again. it shows derived types of intermediate results among other things
21:49:44
scymtym
jmercouris: both. you can type in a lambda expression and investigate how SBCL processes it under different optimization policies
21:49:46
jmercouris
It is a cool project, don't get me wrong, just wondering what intent you had when developing it
21:50:23
phoe
I'd place $5 that the intent was introspection into the SBCL compilation and IR generation process
21:53:05
scymtym
phoe is right since he described what the program does and i made it do that intentionally. but i'm not sure where this discussion is supposed to go
21:55:53
Krystof
or you can (trace :encapsulate nil sb-c::floor-derive-type-optimizer sb-c::floor-quotient-bound) to find what's not giving you the right answer
21:56:10
Krystof
SBCL is a bit conservative about its lower bound to floor in the presence of floating point arithmetic
5:03:39
beach
Same here. I am working on implementing my idea for a register-allocation algorithm. And, as usual, I got the abstractions wrong the first few times, so more work than the idea should have generated.
5:04:41
beach
So far, I have had more ideas per time unit than I have time to implement, so there is a fairly large backlog.
5:10:47
alandipert
ah i know what you mean. i'm perpetually in the same boat with my various (and less impressive) projects
5:11:46
jackdaniel
jmercouris: the reason is because the goal of this proof of concept wasn't to have reload-less page - I didn't need javascript yet
5:12:08
jackdaniel
mfiano: there are no dependencies outside of cl the world (except for hand-written css file)
5:12:54
jackdaniel
the final thing will have three types of frame handlers: static (get/post), ajax-based for one-way updates, and a dynamic one with websockets
5:22:12
beach
alandipert: But you work for a private company. Usually, in that world you can convince someone to invest money if the idea is a good one, and then you can hire someone to do it. No?
5:26:57
beach
alandipert: That's one problem I have with academia. What is considered a good idea, and thus subject to funding, is a complicated set of considerations like nation-wide or union-wide "strategies", and (above all) fads.
5:26:59
alandipert
well, i'm freelance currently and so have clients with disparate needs, so for my longer term and more conceptual bets, i'm the investor
5:29:12
beach
I think I have another problem with my ideas. It might be possible at this point to start some crowdfunding effort for my projects, but I don't know how to find people who are both available and qualified.
5:29:35
alandipert
yes, i have enough friends and family in academia to be acutely aware of how difficult it can be to inhabit
5:29:55
moon-child
beach: I don't think industry is worse than academia in that respect. I daresay industry usually involves a more perverse (if consistent) set of incentives
5:30:42
alandipert
i find industry incomparable to academic, but i've personally spent little time in academia, and understand there are many variables
5:30:44
beach
I would have to gather enough funding to convince a qualified person to quit the current dayjob, and that is very unlikely to happen.
5:30:59
moon-child
beach: err, I meant to say, I don't think industry is better than academia in that respect
5:32:48
moon-child
(although, I don't have personal experience with academia. So I may be mistaken. Grass is greener and all that)
5:33:49
beach
I have worked both in industry and academia, though mostly in academia. But you may be right, my memory of industry may no longer be accurate.
5:35:19
beach
1. I have 10 months to retirement. 2. My dayjob allows me to work full time on my projects already.
5:36:48
beach
That is unfortunately not an option. French law makes it impossible to continue after this date.
5:39:40
alandipert
regarding the scarcity of qualified help, you might consider how to market the project to those outside of the lisp community (although i understand at least with regard to paper abstracts, you're averse to that, and for good reasons)
5:40:44
beach
What would be the advantage? It would require some significant training to get those people to be of any use, no?
5:42:41
alandipert
well, there are vastly more programmers outside lisp than inside. and i posit good/experienced outside people usually learn lisp quickly once interested, and can have enough experience to appreciate its advantages in a way that neophytes cannot
5:50:29
Nilby
I think it's hard to get availible and highly qualified Lisp programmers to do what you want without the coercion of employment. I think there's quite a numer who live in post-scarcity and are available, but would need a mighty big carrot.
5:51:08
beach
alandipert: I am not averse to that. I just have no idea how to make such a thing happen.
5:52:00
beach
Nilby: I suspect that even with employment, it would be hard to get them to do what I want. :)
5:54:39
Nilby
I think the old Lisp companies somehow had a magic mixture of employment coercion and shared goals and belief in the work.
5:58:23
Nilby
White_Flame: Sadly, yes, that's what seemed to make it possible and then pulled the rug out.
6:07:46
pjb
beach: well, in the current paradigm, the way to make qualified and talented people do your bid is by having a lot of money. You can have a lot of money by earning it, eg. starting a web software company like Zip2, selling it, with the money, starting up an online bank like Paypal, selling it, and with the money start up a company to build and sell EV cars, another to build rockets to go to Mars, and another to dig tunnels to run
6:08:32
pjb
beach: an alternative paradigm is proposed by Bernard Frio (quite intersting), but unfortunately, we're far from achieving such a system... (even if, as he argues, we already had half of it).
6:09:47
pjb
beach: https://www.youtube.com/watch?v=o3g-A25BE2w&list=PLysam5vv8eGfHsIU3iQtRgnALGs0fdD1g
6:10:23
pjb
beach: note that this gives you a hint on how to gather work force around your project: don't aim at newbies, but at retired programmers!
6:11:24
beach
They would be amply qualified, and they don't need to spend all day making money to feed the family.
6:20:44
beach
Anyway, my current strategy is to do the implementation work myself, hoping to get to a native executable SICL system not too far in the future. Once that is done, I hope to see more interest in helping out by people who are both qualified and available. I have no idea whether this strategy will work, of course.
6:23:50
Nilby
I'm hoping that there may some kind of convergence in the Lisp community when some of the various projects that people have been working on for years might be able to used a more cohesive whole.
6:25:40
beach
Nilby: That was one of the things I hoped to achieve with the SICL project. I secretly hoped to create high-quality "modules" that would then be adopted by existing Common Lisp implementations. I now think that hope was unfounded.
6:28:04
no-defun-allowed
Looking further in time when we may ask the same questions for CLOSOS (though there is surely a similar pressure for beach's more immediate projects), I am aware that programmers around my age are also often fed up with current compilers, operating systems and so on, but discussing the proposed solutions and projects leads to "knee-jerk" reactions #lisp participants may be familiar with.
6:28:48
Nilby
I'm not sure it's unfounded, it's might just take longer, since implementations necessarily have to be quite conservative.
6:28:59
beach
One thing that has a chance of success though is McCLIM. It is maintained and developed by a bunch of good people. It is quickly becoming the best choice for Common Lisp GUI code, as opposed to FFI solutions.
6:29:15
no-defun-allowed
For the most part, I believe there are people with time, but funding them and encouraging them to act on their complaints are very hard. (Though, of course, not everyone wants to write a compiler or operating system or whatever else, and that's fine too.)
6:30:18
beach
no-defun-allowed: Yes, it is very hard to get the message across to people with a long-term investment in more traditional technology.
6:31:12
no-defun-allowed
Instead what I see is people saying self-deprecating things like "computers were a mistake" and generally just sticking to small changes. The latter would be rational, but both make me sad.
6:32:54
beach
What is very surprising to me is that people write end-user applications in a language such as C++. I am thinking of things like MuseScore.
6:33:33
no-defun-allowed
beach: I'm not sure how long "a long-term investment" is, but they don't have much in the way of investments. I suppose they are used to some technologies, but they are often hobbyists with lots of spare time, and some groups iterate through many libraries and frameworks and whatnot relatively quickly.
6:33:57
beach
I am less surprised about things like LLVM. They probably try to target existing system programmers.
6:36:24
beach
Though, even with LLVM, it would probably have been easier to write it in some high-level language with automatic memory management, and then provide bindings for C and C++, rather than the other way around.
6:36:29
no-defun-allowed
(My last attempt to change anyone's attitude was to be equally as mindlessly optimistic, trying to say that computers and programming could, in fact, be very fun. But the "mindless" part of that plan is a problem, when it is not the norm.)
6:43:18
no-defun-allowed
I should try something else, but right now I am taking a break from that project (and any substantial programming work).
6:44:25
Nilby
I have to intersperse serious work with fun work or else I might get the same feeling.
6:47:41
no-defun-allowed
On the contrary, I think programming requires a creative process, and if one is able to follow their creative process without too many restraints, then it is probably fun.
6:48:02
beach
I know of only one way that (sometimes) works to convert people, and that does not come across as proselytizing, namely to try to do good work that in some way improves on the existing state of things.
6:56:06
no-defun-allowed
Though, if everyone I was referring to had acted on what they were saying, it is likely most of them are not going to work on the projects we are looking for help with. But I would be happy if they did just about anything.
8:00:09
splittist
I think the progress on SICL has been nothing short of amazing. Particularly when the offshoots - eclector etc. - are taken into account. And the talent it has attracted is impressive.
8:01:54
beach
Absolutely right. The independent modules have become impressive thanks to the qualified people who agreed to develop and maintain them.
8:19:33
splittist
hypercube: I don't think it ever left. Perhaps it hasn't grown at the same rate as other (newer) languages, but there are pockets of lisp we rarely hear about. (Perhaps because it's in law enforcement and intelligence.)
8:21:04
splittist
When LAMBDA for Excel drops later this year, and joins the fairly recent LET, we can claim lisp IS the language of industry (:
8:23:03
hypercube
im pretty new to common lisp and got into it mainly through taking a scheme course at school, but im surprised that programming isnt done that way more
8:23:39
Nilby
splittist: for printfcl (printf "%+0.ld % .0d %+0.0ld" 0 0 0) is not entierly valid, but seems to differ from the C version.
8:24:46
beach
hypercube: It shouldn't surprise you if you know how programmers are trained and chosen, and how little management knows about software development in general.
8:25:57
lukego
Hey what's the appropriate time to split code into a separate package? I only have a few KLOC of code and I'm feeling the urge to break this up into separate logical packages but I also have a feeling that's possibly just unproductive busy-work
8:27:13
beach
lukego: I break my code up into "modules", where each module resides in a directory, has an ASDF system definition, and a component (file) containing a package definition.
8:28:17
beach
lukego: I extract a module whenever I see a reasonable (usually CLOS-based) protocol emerging.
8:28:26
lukego
beach: thanks, I was looking for a reference example of that style, and see now SICL repo is such
8:28:50
no-defun-allowed
hypercube: It makes sense to me, given whoever runs the industry wants perhaps the opposite of people doing whatever they want (for the most part).
8:29:01
Nilby
splittist: I wrote a printf in a blub language and had some old test file around which I think I got from cygwin.
8:29:13
lukego
yeah I have the vague feeling that having everything in the same package is making it too easy to have murky interfaces that I am not thinking out
8:30:26
hypercube
do you have any recommendations if i want to get serious about common lisp programming? any good books or courses?
8:30:34
beach
lukego: Yes, that's the risk. Plus, now when we have package-local nicknames, having a package for each module is not a problem.
8:30:54
minion
hypercube: look at PCL: pcl-book: "Practical Common Lisp", an introduction to Common Lisp by Peter Seibel, available at http://www.gigamonkeys.com/book/ and in dead-tree form from Apress (as of 11 April 2005).
8:31:16
lukego
hypercube: I think that Common Lisp is used in industry, mostly quietly in small groups, and seems likely to continue that way. maybe it's healthy that the amount of CL used in industry is driven by the number of geeks learning CL and looking for opportunities to work with it. better than e.g. if Gartner told the S&P500 they all need to adopt Lisp and the mess that would create.
8:45:41
Shinmera
lukego: In my mind files are for the maintainer's organisational structure, and packages are for the user's organisational structure. If you don't have users, then it doesn't matter much, but as soon as you see a part that could stand on its own, it can be useful to extract it.
8:49:34
lukego
I'm mostly asking myself whether multiple package namespaces will be a plus or a minus e.g. using symbols like BGA-NAME verses BGA:NAME verses NAME. I'm a CLOS n00b here and it's already bothering me having the same symbol for unrelated slots of different classes e.g. NAME or ID.
8:49:42
splittist
With a sufficiently smart editing environment (tm) (and perhaps a sufficiently smart programmer...) files should be a backing detail, and the programmer should be looking at whichever 'view' of the code makes sense for the task at hand (e.g. methods grouped by function or by specialised argument)
8:50:46
Shinmera
lukego: But if you want to be stricter about it, as beach mentioned, design your protocols first, and separate them out into a package per protocol.
8:51:18
lukego
splittist: but now you're describing the environment that I switched /away/ from to work in Lisp :-) i.e. GToolkit in Pharo Smalltalk
8:53:38
lukego
splittist: but I'm not really in that school of thought -- I'm more into embracing the limitations of the file-based representation e.g. as a means of putting a narrative order onto code that is lost when you slice and dice it up
8:57:08
lukego
also as an old-school DEFSTRUCT kind of Lisp hacker it bugs me a bit with CLOS - and indeed with Smalltalk - that `M-.' doesn't hop you straight to the code you want but rather makes you scroll through to the relevant method even though that's usually painfully obvious to you as a programmer. but for better or worse I'm CLOS'ing this project
8:57:27
lukego
Maybe that copy of AMOP that I ordered a month ago will turn up one day and then I'll share everyone else's enthusiasm for this stuff :)
9:02:58
Shinmera
it would need to know the type of the arguments, which is usually not available because inference around CLOS is weak.
9:04:23
lukego
I'd like to have a DWIM version of `M-.' that jumps to some dynamic but predictable place e.g. the most recent method actually invoked from the callsite where I pressed `C-u M-.'
9:11:40
scymtym
the DREI common lisp syntax has some interesting ideas about semantics-aware editing regarding completion and "undefining": https://github.com/McCLIM/McCLIM/blob/master/Libraries/Drei/lisp-syntax-swine.lisp#L434 (too bad that the more abstract parts are mixed up with the editing functionality)
9:14:59
lukego
(actually it could be an interesting form of "JIT" if SBCL would compile two copies of a function, one with lots of instrumentation for debugging and editing and so on and one without, and then enable the fast one only when it's actually "running hot")
9:15:56
lukego
Or maybe I'm dreaming of the Bad Old SBCL that had an interpreter that it used sometimes
9:16:56
lukego
I think I've asked this before but it's way too early to do real development in a SICL-hosted-on-SBCL, right?
9:17:07
no-defun-allowed
A JIT would still instrument in order to know when to give up on an optimisation, and a good one would still preserve semantics of the slow code.
9:19:10
lukego
no-defun-allowed: I meant without the various downsides of a highly dynamic JIT i.e. you still compile the same statically optimized machine code ahead of time but you also have a slow/instrumented version that you can swap in whenever you like e.g. to say "the next time we run that function let's log how each method invocation is resolved and store that for reference by an M-. command"
9:19:35
lukego
beach: SICL is more about the long game of having a complete environment unto itself right?
9:22:27
lukego
(aside: it's remarkable how much instrumentation you can put into machine code on modern out-of-order CPUs without having much impact on performance e.g. conditional branches to hooks that are speculated away by the CPU)
9:24:03
lukego
beach: SICL sounds great but as a humble practitioner I'm not sure how to connect it with anything I'm doing