freenode/#lisp - IRC Chatlog
Search
14:43:54
selwyn
i am interested in improving my coding style, particularly with respect to CLOS. i think that the best way to improve is to read and understand high quality code, but in this case google has put together a style guide consisting of purported best practices, which is certainly quicker to absorb.
14:45:42
_death
ludston: with-slots is useful when you're the one who is writing the code that's aware of the internal representation.. with-accessors is bad because it's just verbose and ugly.. symbol-macrolet or simple use is more tasteful
14:45:50
pfdietz
And accessors can be applied to things that aren't even standard objects. Reading the page for with-accessors, I don't think it's limited to standard objects.
14:46:29
beach
_death: It is very useful to make an internal protocol as well, again making slots an implementation detail.
14:47:01
_death
beach: sure.. in that case you wouldn't want to use with-slots, but that doesn't mean you want with-accessors
14:47:05
beach
_death: So your problem is specifically about WITH-ACCESSORS as opposed to accessors in general?
14:48:11
ludston
_death: I don't disagree that 'with-accessors' gives me RSI after I type it out for the 50th time, but I agree with beach, which is that it is better to abstract away implementation details. (In that it can be refactored later)
14:50:42
_death
many times classes are used as structs-that-can-be-redefined.. in such cases, you don't necessarily think about a CLOS protocol.. then WITH-SLOTS is useful for the handful of functions that implement your external interface
14:57:23
ludston
In personal projects tend to pretend all of my classes are structs (and follow the same naming conventions structs use for accessors) if only because it means that I can substitute the class for a struct trivially.
15:02:26
Posterdati
gsll won't quickload under sbcl 1.4.13 running on openbsd, probably the c toolchain is badly configured
15:02:40
_death
selwyn: I think if you want to learn good CLOS design you should read AMOP and the CLIM spec
15:05:52
selwyn
thank you death and everyone else for the advice. i do have a copy of AMOP but have been putting it off finishing it.
15:08:23
_death
selwyn: for a (really) good style guide I can recommend http://norvig.com/luv-slides.ps .. but it's not a coding standard.. I guess the most important feature of a coding standard is that it exists, so.. :d
15:09:04
jmercouris
does anyone have experience using cl-org-mode? https://common-lisp.net/project/cl-org-mode/
15:09:42
jmercouris
doesn't seem like it would be too complex of a thing to do, I start by: (read-org-file #P"/Users/jmercouris/Work/Atlas/Site/articles/why-lisp.org")
15:10:41
jmercouris
for example I hve a slot CHILD-NODES in this object, that shows up when I inspect it, but it won't let me actually do (child-nodes returned-org-file)
15:10:58
pjb
ludston: if you type with-accessors a lot, probably you're missing some abstraction, such as (with-person p (with-cat p.cat (print (list p.cat.name 'of p.name)) (incf p.age) (feed p.cat)))
15:11:31
selwyn
death: thanks for link. it reminds me somewhat of orwell's style guide for the english language which is reassuring as it is very good
15:13:02
jmercouris
here's an interesting question though, is it possible to view the accessor for a slot in the slime inspector?
15:13:13
jmercouris
in this case it was in the documentation, fine, but otherwise would I have to go to the defclass?
15:13:51
pjb
jmercouris: accessors can only be by convention, notably when they're not accessors to standard-object slots.
15:14:10
Bike
i mean the inspector could look at the class slots and get the... wait what's thea ccessor
15:15:03
pjb
Bike: but only those defined by defclass. You could define them separately: (defgeneric (setf foo) (new obj)) (defgeneric foo (obj))
15:15:12
jmercouris
you can also inspect the class as Bike suggested, but it spits out something thats a bit hard to read
15:19:46
pjb
For example, tree-node-heading is it, tree - node-heading, or is it tree-node - heading?
15:19:56
jmercouris
sure I could also make my Lisp case sensitive and have all my variables lOoK lIkE thIs
15:20:26
_death
jmercouris: you may also want to check out gigamonkey's manifest system or others like it
15:22:55
ludston
Pressing shift too much hurts my hands :(. Maybe it is worth making () the default and requiring shift for "90". I certainly type () more often.
15:24:36
_death
jmercouris: looks like quickdocs operates differently.. there are many systems that generate documentation using the introspective functions though.. for example sb-texinfo in sbcl (and others)
15:25:45
sjl_
phoe: I don't swap them -- I rebind left and right shift to "shift if held and used with other keys, parens if pressed and released on their own"
15:25:46
MichaelRaskin
You want to say that on Mac you cannot swap them back to whatever you prefer?
15:27:05
jmercouris
I have a lot to say about using shift key as an actual key and all the problems it cause with programs, but if you are only using emacs, go for it
15:27:57
MichaelRaskin
I actually use CapsLock for its proper function. I mean, switching the major layouts.
15:29:31
sjl_
And in practice I end up mostly using just the ( because paredit handles closing everything for me.
15:38:25
ludston
pjb: TY. One more keyboard trick to add to the list. Who knows how deviant I'll be when I'm 50.
15:42:43
specbot
Congruent Lambda-lists for all Methods of a Generic Function: http://www.lispworks.com/reference/HyperSpec/Body/07_fd.htm
15:43:43
mfiano
On SBCL at least, it seems to be legal to define &allow-other-keys ONLY inthe generic function, and each method using only they &key arguments they need. Is that legal, or must &allow-other-keys be present in the method lambda list?
15:44:41
phoe
"The use of &allow-other-keys need not be consistent across lambda lists. If &allow-other-keys is mentioned in the lambda list of any applicable method or of the generic function, any keyword arguments may be mentioned in the call to the generic function."
15:45:19
phoe
It should be legal to define a generic with &key &allow-other-keys and then a method that only has &key foo
15:45:50
phoe
The programmer may always define a method that has a &rest and therefore captures all the keys supplied to the GF
15:46:17
beach
mfiano: It is mentioned somewhere that it is as if the method function is called with :allow-other-keys t.
15:48:34
phoe
for a single GF with &a-o-k it is legal to define methods which do not accept other keys
15:48:44
mfiano
I always only ever used &allow-other-keys in the GF, but zulu on the other server seems to think that is illegal
15:57:22
dim
speaking of generic functions I have some code refactoring for pgloaeder that's been pending for a long time, maybe I should consider doing that...
16:01:36
dim
https://github.com/dimitri/pgloader/blob/master/src/sources/mysql/mysql-schema.lisp#L96
16:02:52
dim
the functions list-all-columns, list-all-indexes, list-all-fkeys, get-column-sql-expression exist in the packages pgloader.mysql, pgloader.mssql, and pgloader.sqlite, and maybe even in pgloader.pgsql too
16:03:35
dim
the function create-my-views and drop-my-views exist in all packages for a source database with materialized views support (MS SQL and MySQL at this point IIRC), and could be a generic function API too
16:06:12
beach
mfiano: Yes, like I said, it is as if method functions were called with :allow-other-keys t so it doesn't matter that they don't mention all keyword arguments.
16:06:12
dim
phoe: who much are you interested in the generalization of existing internal APIs in pgloader then? should I work on it or leave you some space to hack away?
16:07:53
beach
mfiano: Hmm, I think we have a discrepancy between the Common Lisp HyperSpec and the MOP.
16:08:13
mfiano
"If &allow-other-keys is mentioned in the lambda listof any applicable method or of the generic function, any keyword arguments may be mentioned in the call to the generic function."
16:10:08
dim
sure, it's quite an effort in terms of refactoring, that said it's all about CL, not much about pgloader's domain
16:10:46
phoe
Will need to take it slow this week though, my backlog is a little bit bigger than I thought it would be
16:48:16
katco
stylewarning: hey, i read some comments you made on reddit about gsll. you mentions magicl was started because gsll was so buggy. would you mind expounding a little on that?
16:53:03
selwyn
i had gsll segfault at times when i used it. magicl and gsll have overlapping but distinct use cases
16:53:37
katco
selwyn: good info, thanks. i wonder why the community isn't fixing bugs in gsl? does no one use it any longer?
16:53:55
stylewarning
katco: well contributions to it are highly welcome. If you have a better way to organize things, please file an issue sharing your ideas. There are ridiculous functions like MULTIPLY-COMPLEX-MATRICES
16:55:06
katco
stylewarning: this is a totally new space for me, so i won't likely have any useful feedback for awhile. i'm not even sure if i can get away with poking at data in lisp yet. the book i'm following uses python, and i'm new enough that it's difficult for me to find the equivalent lisp libs/fns sometimes
16:57:52
selwyn
katco: i don't know. i don't know how many people use it, but it does seem to be less maintained which is a major drawback of a library that relies on foreign function calls. i suspect that some bugs i encountered were due to GSL library updates that changed the API
16:57:57
katco
it does seem like the lisp community needs to rally around a lib though. lisp is such a good choice for data-munging
17:00:06
selwyn
katco: concerning poking at data in lisp, if you are ambitious and accept that you occasionally have to roll out your own libraries it can pay off greatly. having said that i can list lisp libraries that are better than the python equivalents. i made the switch from python and didn't look back (i am more in scientific computing than data, though i do some data things)
17:00:56
LiamH
GSLL doesn't have a lot of updates for GSL 2+. I just don't have the time; I would love to get help doing this.
17:01:11
katco
selwyn: i don't even really know python that well, but i do know CL. it seems the obvious choice for me, but it's been a bit of an uphil battle to get going on the CL toolchain
17:01:19
oni-on-ion
CL is excellent for collections of (disparate) code like this . someone somewhere brought up the topic of "immortal" software recently, i would say anything written in CL is made out of strong materials
17:01:50
katco
LiamH: hello again! do you have any opinions on the aforementioned segfaults and whether they're functions of gsl, or gsll bindings?
17:02:21
katco
oni-on-ion: i totally agree with that. i am not old, but i am old enough to want to write things once and then use them for the rest of my life
17:03:10
oni-on-ion
katco, yep. in the youth of my old phase (!) i am learning this, and also learning more that i am making software for myself rather than for everyone-except-me
17:03:28
katco
LiamH: it seems selwyn and stylewarning have. i haven't actually used gsll properly yet
17:04:00
katco
oni-on-ion: i can appreciate that sentiment as well :) the exception being working on teams :)
17:04:42
oni-on-ion
katco, i would like to say that is one person, if the team is working as a whole unit =) wishful thinking though eh
17:05:55
selwyn
i should clarify i haven't used it in a year, but this is my recollection. i don't use it now since i don't require it at the moment
17:06:47
stylewarning
katco: I see, well you’re welcome to message me about that, though I can’t guarantee anything
17:07:34
katco
stylewarning: i actually had a look at rigetti computing last night. i wasn't aware there was a market yet for cloud quantum computing
17:08:00
oni-on-ion
programming is the best 'game'. and games are more fun with others. its just that i dont like to play competitively, but cooperatively. i have a feeling that relates to lisp where it is more single-effort than teams. either that means CL users are evil and selfish, or programming itself is fundamentally competitive. --confused
17:08:42
stylewarning
katco: *shrug* I didn’t know there was a market for commercial lisp compilers either, but I guess there is.
17:09:47
oni-on-ion
the key is to convince potential customers that they want to buy *whatever* it is you're selling
17:16:39
LiamH
I have succeeded in restoring the GSLL information sheet at https://common-lisp.net/project/gsll/. The mailing list info is at the bottom.
17:19:07
katco
selwyn: i'm reading through "Hands-on Machine Learning with Scikit-Learn, Keras, and TensorFLow", and i arrived at a section that was discussing building up your own personal library of functions to munge data. it seems like a large part of this is rolling your own anyway
17:20:42
selwyn
katco: you might like to check out melisgl's libraries. i use one of them https://github.com/melisgl/mgl-gpr for differential evolution and can recommend it. he won a kaggle contest a few years back using lisp
17:22:05
katco
selwyn: thanks, i've looked at that. unfortunately my team are not also lispers. so anything regarding building the actual models would have to be something more "mainstream". but i have some wiggle-room for stuff i only use personally, i.e. poking at the data prior to building models
18:32:34
koenig
jackdaniel: I thoroughly enjoyed your post on /r/lisp a week ago called "Fun ECL hack" where you wrote a simple C REPL.
18:33:30
koenig
I keep telling myself that I'll write a WeeChat module to integrate ECL into WeeChat but never seem to find the time to do it. But your post may inspire me to follow through and get started!
18:48:07
p_l
I don't remember the nick, but someone here used ECL to make (commercial) plugins for MS Office
18:50:25
koenig
I keep thinking that using Common Lisp in general and ECL in specific could be a "secret weapon" in a lot of the work I do.
18:51:00
koenig
I guess it'd probably take just diving in and doing it for a few projects and then I'd have my own design patterns for how it works best with my style.
18:51:22
koenig
But having an accessible ECL REPL linked to a lot of my C/C++ code would probably be pretty neat.
18:55:30
jackdaniel
koenig: wait a few days, I'm going to expand this joke into something hilarious (at least to me)
19:37:46
phoe
dim: which APIs exactly do you mean? maybe we can split the work into tasks and I could grab one when I have a while
20:39:09
katco
folks should not be doing things like this, right? https://github.com/AccelerationNet/cl-csv/blob/master/cl-csv.asd#L35-L38
20:41:56
katco
selwyn: i incorrectly jumped to the conclusion that the code here was overwriting the method definition. i guess i haven't worked with clos in awhile
20:45:49
katco
Xach: the preferred way is now a `:in-order-to ((test-op (test-op cl-csv/test)))`, right?
21:50:49
anamorphic
defunkydrummer: think I got that ccl problem with iup-controls on windows sorted out
22:09:50
anamorphic
I think iupcontrol was loaded ahead of iup. SBCL didn't seem mind (and CCL too, on Linux)
22:21:12
defunkydrummer
anamorphic: i'll have to try on my windows machine then. last time i thought the right version of MS VC runtime DLL was not being present, but upon checking, it was. So i'll have to take a look what was causing the problem. Because i'm not very sure loading iup-controls before iup will cure it.
22:22:49
anamorphic
I started setting up appveyor to catch these kinds of things, but had to rage quite after an hour or so.
22:23:01
defunkydrummer
IUP lovin' had me a blast / IUP lovin', happened so fast / I met a GUI crazy for me / Met a framebuffer cute as can be // QT days drifting away / To uh, oh those IUP nights (BRIDGE) Oh well, oh well, oh well oh, uh / Tell me more, tell me more / Did you get very far? / Tell me more, tell me more / in CCL did it start?
22:25:27
defunkydrummer
anamorphic: I am not convinced of the use of Continuous Integration when you can do interactive development with a repl
22:29:20
defunkydrummer
anamorphic: No. I still have the DLL problem: can't load iupcontrols.dll, and this must be because a missing dll. I need to use those dependency walkers to find out what the f"!/#! is going on
22:32:14
phoe
make sure that you are *very* comfortable with Practical Common Lisp before you dive into it.
22:32:53
vms14
phoe: I'm just starting it, but it seems it will teach very important stuff of lisp than other books won't cover. It's right that assumption?
22:33:02
defunkydrummer
phoe: The error is the same i have on Issues: Error opening shared library <path>iupcontrols.dll : The specified module could not be found. .
22:33:29
defunkydrummer
phoe: the "The specified module could not be found" message comes straight from the Windows OS and means "I can't load some DLL that is required by your DLL, so fuck you."
22:34:04
defunkydrummer
vms14: Lisp (or Scheme) is the most powerful mainstream interactive language
22:34:42
defunkydrummer
phoe: When you load a 32-bit DLL under CCL64bits, the error message is different. In any case, I will double-check again
22:35:12
defunkydrummer
vms14: You will get the fucking enlightenment. I guarantee you. Lisp: Guaranteed enlightenment or TRIPLE your money back
22:35:30
anamorphic
defunkydrummer: I will take another look tonight. Thanks for trying it out again though.
22:36:15
phoe
Lisp doesn't magically give you galactic brain or anything, it just shows you how programming languages are and should be done
22:36:30
phoe
and once you understand that, and different layers of that, then you start utilizing that knowledge
22:36:39
defunkydrummer
vms14: the best part of using Lisp is that you can increase your smugness levels up to the max, that's when you simultaneously achieve enlightment and turns you into a Smug Lisp Weenie (TM)
22:36:41
vms14
but I guess all that stuff it's just the tools you have to create abstractions, and how thanks to having all those tools you learn and improve your knowledge about how to create abstractions
22:37:05
vms14
also, you'll get used, so your programs will be very different than what would be with C
22:37:33
phoe
on one hand it's abstractions to hide what isn't required, but on the other hand Lisp can bring you all the way to the most basic units of computation - see the SICP lecture videos for that
22:37:57
defunkydrummer
ACTION is recruiting submitters for r/LispMemes. Work compensation plan includes a Space Cadet Keyboard, an autographied copy of the Chine Nual, and a dinner with Conrad Barski
22:38:56
phoe
keep on going - one part I really liked is how s&a explain how to implement objects using closures
22:38:57
vms14
I saw them when I was just starting to learn lisp, the fibonacci recursive function fucked my mind xD
22:39:59
phoe
also how they first showed you that you don't need mutable hidden state at all, only to end with a conclusion that you actually need to have mutable hidden state
22:41:37
phoe
vms14: Common Lisp gives you a taste of Perl, see http://www.99-bottles-of-beer.net/language-common-lisp-114.html
22:44:19
defunkydrummer
anamorphic: IT SEEMS I OVERCAME THE DLL PROBLEM. Thanks to your updated Readme: "Usually this means setting LD_LIBRARY_PATH on Linux or PATH on Windows."
22:44:41
defunkydrummer
anamorphic: i didn't know i need to set the PATH, considering that CFFI was already directed to the correct directory
22:45:56
anamorphic
I was really hoping the (push (asdf:system-relative-thing :tecgraf-libs "lib") cffi:*foreign-directories-somehting*) was going to be the best way
22:46:47
selwyn
i wonder how much the lisp world would benefit from the contributions small number of windows developers maintaining the sbcl windows port, writing a windows backend form clim etc.
22:47:43
defunkydrummer
anamorphic: So it isn't enough. One really needs to set the PATH environment variable. This is counterintuitive because AFAIK when one DLL requests to load another DLL, Windoze should search in the local path too... But perhaps it looks in the local path of the process, not the path where the DLL sits in.
22:49:24
defunkydrummer
selwyn: Also, Steve Ballmer is the one and only CEO which really loves developers --> https://www.youtube.com/watch?v=rRm0NDo1CiY
22:50:53
selwyn
at ELS, christophe rhodes told me that many people requested the warning message on sbcl windows startup be removed
22:50:55
vms14
defunkydrummer: in linux,bsd sbcl has no history and no editing features like move between characters if you use sbcl from the terminal
22:51:31
defunkydrummer
vms14: this doesn't matter at all since one would be really crazy to use SBCL directly, instead of doing it through SLIME, SLY, SLIMV etc
22:51:34
selwyn
not because it is no longer necessary, but because it puts off users who may see it..
22:52:37
defunkydrummer
selwyn: I also want that damn warning message to be removed. Real fact: I had to use CCL instead that SBCL on a production system i made, because I had fear of the customer looking at this message and questioning me.
22:53:09
defunkydrummer
the fun fact is that now i use CCL more than SBCL. CCL = motorcycle, SBCL = truck
22:59:08
anamorphic
I'd say it's resonable realtive to other lisps, but relative to sbcl it could do better execution wise
23:00:10
defunkydrummer
anamorphic: Cells demo and Canvas demo work just fine :) :) :) . Thanks for your awesome lib mr. Lispnik from Austin.
23:00:59
defunkydrummer
selwyn: CCL was actually a commercial, production-quality implementation honed through many years, that is now free for the world to enjoy. Execution speed is good, not as fast as SBCL but still faster than many other implementations.
23:01:45
defunkydrummer
anamorphic: It was all a fault of the PATH environment variable not set. Sadly the Tecgraf page didn't mention one needed to do that (or i'm a bit blind.) But thanks to your wonderful, pimped-out brand new README, no noobie will make my mistake.
23:01:51
PuercoPop
The Kitten of death message may be suppressed by passing the --noinform option since quite a while ago, sbcl-1.1.11
23:03:39
defunkydrummer
thanks PuercoPop. It was long ago though, when I started entering the world of Lisp. It was a time of excitement and illusion.
23:04:32
defunkydrummer
anamorphic: the tecgraf-libs package makes IUP one of the easiest to setup GUI multiplatform libs for CL.
23:06:11
defunkydrummer
selwyn: Execution speed among Lisp implementations will vary a lot depending what you're trying to do. For example, it's not the same if you're -say- doing data compression vs something that is IO heavy, vs something that requires lots of CLOS method calls, etc. I was suprised when some math code I made ran quite fast in ABCL, despite ABCL being a
23:06:52
defunkydrummer
selwyn: as for compilation speed, CCL is much faster than SBCL. And ABCL is dramatically slow.
23:09:35
PuercoPop
CCL's CLOS is not derived from PCL right? If so, wonder how it compares performance-wise to PCL-derived CLOS implementations
23:10:21
PuercoPop
selwyn: try removing all the FASL caches and loading a system from scratch. Even starting up SL{Y,IME} should take considerable more time
23:11:28
PuercoPop
anamorphic: that seems to be my impression. There plans for some information aggregation on top of that though.
23:12:08
anamorphic
selwyn: the main thing is as a common lisp coder, you've got all these implementations to pick from when trying to satisfy some criterea. Those poor bastards in other languages, like rust, go, java and node are all stuck with whatever comes down their pipe
23:17:16
defunkydrummer
Uploaded file: https://uploads.kiwiirc.com/files/33ae4c607b56ecce176cf23f936530e3/image.png
23:18:18
anamorphic
You're missing a bit at the bottom fyi. Had the same trouble on my thinkpad x220 screen
23:18:52
defunkydrummer
anamorphic: Yes. Some part of the bottom is missing. Mine is a Thinkpad T470.
23:36:00
vms14
guys do you often see lispers being involved in things like pentesting or cracking stuff?
23:37:15
vms14
I mean, I know it's wrong to generalize, but... lispers are usually advanced programmers
23:37:42
vms14
and I want to think they are the kind of programmer who does not like to fuck other people
23:37:59
pjb
Also to work for the mob, you have to be able to crach stuff under pressure. I doubt you'd really appreciate it.
23:40:02
vms14
I mean, if I publish my code (bad code, sorry) only lispers will understand the code. Parens obfuscate the code for non lispers
23:41:39
no-defun-allowed
vms14: I wrote a pentesting program (like a less annoying metasploit), since I wanted to mess with designing one I could actually use
23:42:34
no-defun-allowed
I wouldn't try to correlate morality and programming language choice, but...
23:42:44
vms14
no-defun-allowed: yeah, but that does not mean you like to fuck other's software, or yes..
23:43:02
no-defun-allowed
... it's just that in C++ and the like, you don't trust anybody, and in CLOS you basically trust everybody. the practical result is that thieves and bums use C++ and nice people use CLOS.
23:44:13
vms14
they don't know how to program, but some of them learn and some of those create pentesting software
23:44:34
no-defun-allowed
Well...I did that once, using a 0day in a web server. I think it was justified though, and I told the developers after.
23:45:01
vms14
but I guess once you learn to program, you end by the time doing other things instead
23:45:39
no-defun-allowed
What you're thinking of is a "skiddie". There's not many skiddies that write Lisp, since JS or Python are the usual tools for doing skiddie things.
23:48:11
no-defun-allowed
Exactly. You could make a fancy scanner using CL if you liked though using those.
23:49:52
no-defun-allowed
One idea I had was to automatically analyse a firmware update for a device. You could try to find any compressed archives or file systems, decompress them, and search for hidden passwords or backdoors. It wouldn't be hard to write a declarative DSL for it.
23:52:01
vms14
I want to go for dsl, but I should read the onlisp book since I know nothing about macros
0:02:11
vms14
"Thanks to LISP, I was able to write a large, complex application which might ordinarily require a whole team of programmers to complete. Also, LISP is very easy to customize so that as users become more sophisticated, applications written in LISP can grow along with those users."
0:30:25
aeth
vms14: CLISP used to be very popular. That stopped about 10 years ago, when it stopped getting stable updates.
0:32:16
aeth
vms14: I mean there hasn't been a "stable version" since 2010-07-07, not that the implementation is "unstable".
0:35:19
no-defun-allowed
well Clozure CL is good if you're running on a Raspberry Pi (read: potato) cause it's got a faster (compile-time) compiler and want threads too
0:38:15
no-defun-allowed
SBCL (probably, not familiar with either compiler) knows more optimisation tricks, which makes the compiler slower but code faster
0:38:43
no-defun-allowed
sure, hunchentoot usually only consumes 100MiB but the pi3 also only has 1GiB of memory
0:39:20
no-defun-allowed
and that's only hunchentoot, you have a program, some libraries, SQL server, probably would be under 500MiB though
0:41:46
vms14
well a raspberry pi is not meant to be a huge server, so I guess it could do something with little websites
0:42:39
no-defun-allowed
i tested my parallel chess program on a Pi since everything's slow and you can use htop to watch utilisation at that speed
0:43:28
no-defun-allowed
turns out it didn't make enough "work" pieces so cores would run out of work early
0:44:14
no-defun-allowed
it wasn't that hard, but i have to redo it since i didn't implement quite a bit of chess and is messy as hell
1:29:39
vms14
and what I mean is https://stackoverflow.com/questions/14171849/compiling-common-lisp-to-an-executable
1:30:17
vms14
I've tried a hello world in archlinux, a friend tried the executable in ubuntu and worked
2:06:50
aeth
clothespin: If you're using reddit, I would use /r/lisp instead of /r/common_lisp because while /r/lisp is "Lisp family" like ##lisp (and not like #lisp) it is probably 90% CL and is more active than /r/common_lisp.
2:09:41
aeth
clothespin: Depending on the project, you may also want to announce on Hacker News. A lot of Lisp stuff winds up on there even though in general it's more like /r/programming. https://news.ycombinator.com/news
2:15:24
aeth
Personally, I very rarely post on reddit, but other than that I have wound down most of my social media usage. I lurk on reddit and on HN, at least for now. Both seem increasingly like a waste of time, though.
2:16:06
loke`
aeth: All social media is a waste of time. However, Masotodon tends to not try to make it seem as though you're doing anything important.
2:16:33
aeth
loke`: The quality of everything goes down considerably over time. I probably missed the good old days of Mastodon already.
2:18:09
aeth
For pretty much my entire IRC life, IRC has been that old thing that people who don't want to use the shiny new thing use. Of course, I've been using IRC since 2002 or 2003 or so, so at this point almost all of those shiny new proprietary chat apps are not only old, they're dead.
2:18:45
aeth
(And I can't wait for the new batch to go away. Discord, in particular, seems to be pushed very aggressively, but it's very limited in configuration. I don't think you can even have 24 hour timestamps, local logging, etc., on it.)
2:19:16
aeth
clothespin: The difference is that there's no company that can shut down Common Lisp when its numbers drop low enough
2:19:53
clothespin
Common Lisp is now so obscure it doesn't even get mentioned on the "Least Popular Programming Languages" surveys
2:19:55
PuercoPop
What I really dislike is how Slack has taken over the workplace and displaced email.
2:20:09
defunkydrummer
clothespin: plz announce on /r/lisp . Comp.lang.lisp is full of spam and annoyng people like Gavino
2:20:54
defunkydrummer
clothespin: Liso is still above Rust and Kotlin on the last TIOBE index so it can't be that obscure.
2:22:01
aeth
And lie detectors are commonly used as an indicator of lying. And horoscopes are commonly used as an indicator of personality.
2:25:39
PuercoPop
Btw which do check to for the 'sign bit' of a signed integer, (logbitp 31 i) vs (>= i #.(1- (expt 2 31)))
2:28:02
aeth
The location isn't fixed since it can be an arbitrary length. Iirc, it's just a bunch of leading 1s infinitely, or something like that.
2:29:54
PuercoPop
aeth: Sorry for got about the context, you are in the process of 'building' it. You have an integer from sticking together a sequence of octets and you want to know what number they represented
2:30:18
aeth
Bike: You could use INTEGER-LENGTH instead of 31 to make sure that it's always "short enough"
2:31:20
aeth
PuercoPop: You can only reconstruct it if you know its size and if it's signed or unsigned. If it's a (signed-byte 32) then whatever works works.
2:33:24
PuercoPop
aeth: you, we know the size, both when dealing with X11 requests or OSC (which is the context of the code)
2:39:20
aeth
PuercoPop: So I'm guessing you have combined a bunch of bits to get a number from 0 to (1- (expt 2 32)) and you want to shift that so it's an (unsigned-byte 32). Iirc, the conversion for e.g. 2^32 - 1 is (let ((number (1- (expt 2 32)))) (- (mod number (expt 2 31)) (expt 2 31)))
2:41:14
aeth
PuercoPop: Iirc, there's a neat branchless trick you can use here. I think this is it. (multiple-value-bind (quotient remainder) (floor number (expt 2 31)) (- remainder (* quotient (expt 2 31))))