libera/commonlisp - IRC Chatlog
Search
7:42:25
beach
UT Austin is also where J Moore (ACL2) and Gordon Novak (AKCL) work. And it was where Dijkstra had a chair position while I was there.
8:11:31
lisp123
beach: No, I use org mode at work for knowledge management (quite useful as a database). I experimented with Common Lisp at work, but the problem is if I leave, what the next person will do
8:12:07
lisp123
The other staff use python (we are not a tech company, in investment management, but cannot afford full time developers, so do a bit here and there).
8:12:21
beach
Learn Common Lisp? If they are serious developers they should have learned it already.
8:13:10
lisp123
I just interviewed for a role at my old firm, which is much larger and has a dedicated tech team. It will be partly project management of their work...however again, Python and Java are the languages of choice there
8:15:20
lisp123
I will definitely try to do that! I think we will see more usage of CL going forward, many other languages already seem to be using similar concepts, so its just a question of jumping across
8:15:36
beach
To me, the main thing that the Hudak and Jones paper shows, is that the cost of teaching the developers a new language is ridiculously small compared to the waste of time that an inappropriate language creates.
8:17:25
beach
Carol Dweck calls it "closed mindset" and it is very dangerous for software development.
8:18:30
lisp123
Bad decisions compounded onto other bad decisions to justify them, can take away millions very quickly
8:20:12
lisp123
I'd be very curious to have insight into how big tech firms work (FAANGS). From all accounts, there are a lot of closed mindsets there, and a lot of wasteful development
8:20:21
pve
Is the "Relational Lisp" mentioned in the Hudak and Jones paper based on CL? Some searching suggests it might be the case..
8:20:53
lisp123
From what I have read online, they have become quite political. Which is interesting, because they also have some cutting edge technologies & software (partly now due to the massive R&D budget they have)
8:21:40
beach
pve: I don't know. When I discuss this paper with students (for instance) I don't mention particular languages. I concentrate on what I think is the main lesson of the paper, namely that there can be a factor 20 difference in productivity depending on the language, and that's huge so should be taken into account in projects.
8:24:42
beach
pve: The way I put it is that a 5-year project could be completed in 3 months instead.
8:28:55
beach
So you can spend 4 years and 6 months training the staff on the new language. Of course, the paper shows that productivity can be obtained after two weeks.
8:30:33
Nilby
But given all that time saved, who can resist doing something more ambitious? I can't.
8:31:30
pve
beach: 3 months vs. 5 years is so incredible that, when first hearing it, people's first thought (and response) must be something along the lines of "There's no way that's possible".
8:31:48
beach
Nilby: So you are saying we should try to be as little productive as possible to limit our level of ambition?
8:33:13
beach
pve: Right, so in the next phrase (to my students), I say that even if they don't believe a factor 20, even a factor 2 or a factor 1.2 is big enough to justify taking it into account.
8:33:31
mfiano
I came from several years of Python experience, which is known to boast "rapid application development". I read a Lisp book for a week, got dirty with some code for another week, and at that point I was already faster and writing better code.
8:33:42
beach
But that right now, decisions about languages are based on what existing programmers know.
8:34:27
Nilby
beach: I don't know what to do about it, but nearly every time I do something in CL vs some blub-lang, I do it with 10x more features or more ambitious design.
8:36:30
mfiano
What helped was to take a week, month, or even longer to write a complete design document before a line of code is even written.
8:38:04
Nilby
Except when I used to do boring stuff for work, then I would just put it off until the last hour before it's due, or do it in the first few hours then goof off for a week. Doing it in CL vs C++ allowed me to do that for years.
8:40:05
Nilby
beach: But, I know non-lazy people, e.g. like you and Shinmera actually use that time to be more productive.
8:45:05
pve
My first task related to CL was porting an NLP application (between 50-100 kloc) from Allegro CL to CMUCL during a summer job. I remember it took me about a month to get comfortable with slime (already knew emacs) and complete the port, even though I didn't really know what I was doing at the time. It was mostly mechanical work.
8:45:38
hayley
There have been similar results with TLA+ (which also relates to having a good design process). "Engineers from entry level to principal have been able to learn TLA+ from scratch and get useful results in two to three weeks, in some cases in their personal time on weekends and evenings, without further help or training."
8:57:33
pve
I should also mention that I was quite open to the idea of learning CL. Later, I saw other people join (to work on components written in Java) who were effectively unable to learn CL because they weren't open to the idea (i.e. they resisted).
8:59:48
pjb
lisp123: In general, I try to leave :before :after and :around methods to client code, but they can be very useful to implement some mechanisms. For example using an :around method to implement a mutex that will be automatically applied to the primary methods even if overridene.
9:08:15
beach
pve: The "closed mindset" is a very powerful psychological force, so incredibly hard to combat.
9:13:32
pve
beach: Yeah, no kidding! I (not an expert) spent a great deal of time showing CL, slime and interactive development to people there, but it just didn't stick. One guy did get it though, so there's that.
9:14:40
beach
I estimate that, during our 15 years of using Common Lisp in our teaching , on the average around 5 our of 125 annual students understood the message.
9:24:42
hayley
Similar is that Max Stirner once wrote that everyone is an egoist, but few are "conscious" of it and make use of it. So I'd say "conscious laziness".
9:29:11
pjb
Sometimes the message is understood later. So the success count may be higher than you think (eventually).
9:37:23
madnificent
Shinmera: I'll check out Luckless. I'm looking for/at benchmarks and info now but may not find the benchmarks you mention. If you have a direct link, that'd be rad. I'm not sure what I'll learn exactly but I hope it will give me a rough idea on what to test for.
9:58:44
madnificent
The readme states that the implementation is based off NonBlockingHashMap and its Common Lisp port in Luckless. But perhaps that's more "we read it".
10:01:10
mfiano
"Improved" I suppose would depend on usage patterns, machine, and operating environment.
10:02:33
mfiano
hayley says it may have a bug and not recommended for use yet, but I still don't see that mentioned in the readme
10:04:29
madnificent
I should care about safety first, so by the time we're at the element of speed, this may be better known.
11:49:51
madnificent
mfiano: I should have asked this way earlier. mu-cl-resources has a lot of multithreading going on in suboptimal ways too. These hash-tables might make a difference for the caches it uses.
12:30:58
hayley
madnificent: Another difference is that resizing in Threadmill is not lock free, whereas it is in Luckless.
12:32:24
hayley
I basically made up the resize logic on the spot, so I'm not so sure it's correct...but it should be, based on what I watched about NonBlockingHashMap.
12:33:11
hayley
I think there might be a bug because decentralise2 sometimes drops like 1 in 10 million messages when using Threadmill, but not any other table. I'll test again tomorrow.
12:40:30
hayley
Really, I do need to get my shit together w.r.t Telekons projects. There is also the concurrent-hash-tables portability library (which is portable in that it handles Luckless, Threadmill, and a table with sharded locks), but I haven't thought of a way to specify which table implementation to use at system load time.
13:01:41
madnificent
hayley: for mu-cl-resources the drops wouldn't be the worst. this is about caching so if a cache isn't stored it'll be calculated again at another time. not clearing would be more challenging.
13:02:42
hayley
And FWIW I don't exactly know that "it drops values randomly"; I only know that decentralise2 drops messages, which might or might not have to do with the table dropping values.
13:03:11
hayley
It might not even have to do with the table at all - just going faster with concurrent programs might lead to more opportunities to expose a bug.
13:04:05
hayley
Oh, well, such is life. And I intend to simplify the code around the table, so we'll get to find out where the bug lays.
13:05:46
madnificent
also, i failed to find the time to further check out your work, but we're running a company around distributed web tech. mostly knowledge sharing with linked data, which is what ActivityPub is built on. we also co-run ipfs-search. if these 90's buzzwords or hipster-tech ring a bell and relate to your work do ping.
13:07:33
hayley
I guess so - Netfarm is what you'd get if you gave IPFS schemas and some methods, and I've written a few (not very nice) things about the Fediverse.
13:17:38
madnificent
so we do a lot in terms of letting people define knowledge in a distributed fashion and sharing that. for instance, adding data to legislation. we have no clue what they'll add, but we can make sure they'll understand each other after the fact. that seems an important piece for distributed knowledge. would love to read about your negs as it helps me see faster where you want to go to :D
13:19:13
hayley
Okay, I wrote something about protocol translation (rather than schema translation, which looked hyped at one time), but it's not very good.
13:19:39
mfiano
hayley: If it's the table it shouldn't be difficult to produce an isolated test for that
13:20:14
hayley
mfiano: Yeah, probably. Wouldn't hurt to port the Luckless tests to my portability library.
13:21:07
hayley
http://lettingthedaysgoby.altervista.org/translate-what-data/ and http://lettingthedaysgoby.altervista.org/translate-what-data/the-drive-to-2021.html
13:21:55
hayley
Right. I only use one AVX2 instruction (VPBROADCASTB) with 128 bit code, and I hope that's not buggy :)
13:23:05
mfiano
Also i would read conditionalize that library. Having something SBCL specific isn't much use, as its a moving target as it is lately
13:24:36
hayley
It's SBCL-specific for the foreseeable future (no SIMD anywhere else?) so I would advise using Luckless instead.
13:28:24
hayley
The only thing going for Threadmill, now that Luckless is catching up in performance, is that I find Threadmill to work better with a lot of "churn" in adding and removing new mappings.
13:47:05
hayley
The SIMD probing lets you skip over a lot of dead entries (which I can't reuse sadly - tried it, proof doesn't hold up), so you can run with a larger load factor and probe length with no problems.
14:09:14
lisp123
pjb: Thanks, that makes sense (leaving it client code) and definitely some advanced use cases, I guess not for daily use otherwise
18:20:06
lisp123
Is there a way to get the compiler notes from SLIME (that pop up when one C-c C-k's a file) during the ASDF load-file process?
18:32:56
scymtym
the *slime-compilation* buffer generally contains printed representations of these conditions (and can visit the corresponding source locations)