<jasom>
Demosthenex: you can just no load slime-repl in your slime-contribs
<jasom>
s/no/not
<Demosthenex>
jasom: it's the buffering
<Demosthenex>
if i use cl-charm's get-char it works
<Demosthenex>
read-char is just waiting for enter
<jasom>
ah
dented42 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<Demosthenex>
_death: cool!
<Demosthenex>
i'm trying to tinker with the idea of a simple text input field with optional autocompletion
<Demosthenex>
i was trying to be backend agnostic, which is why i went for read-char
Kundry_Wag has joined #lisp
<Demosthenex>
i was also tinkering with threads and mailboxes for async input. i wanted to allow a clock or background update to the screen while waiting for input, i thought it'd be important for popup autocomplete
<_death>
atm I use with-timeout for that
<Demosthenex>
i thought having an input thread with some hooks might work, going for event driven
lnostdal has joined #lisp
<jasom>
Most GUIs are written with an event loop; unless you have a reason to think that's the wrong way to do it...
<Demosthenex>
i don't disagree
Roy_Fokker has quit [Read error: Connection reset by peer]
<Demosthenex>
and again, i'm only trying to make an input form, not an interactive environment
<jasom>
Demosthenex: If you are having things like background updates, that might not be true anymore
Kundry_Wag has quit [Ping timeout: 252 seconds]
<Demosthenex>
jasom: true, but y only intent is for allowing autocomplete to not block input while it updates the list of completions
<Demosthenex>
i hate apps that freeze inputs, ever.
Kundry_Wag has joined #lisp
dented42 has joined #lisp
<Demosthenex>
back tomorrow =]
dented42 has quit [Client Quit]
Kundry_Wag has quit [Ping timeout: 252 seconds]
pjb has quit [Ping timeout: 260 seconds]
quazimodo has quit [Ping timeout: 245 seconds]
orivej has quit [Ping timeout: 252 seconds]
quazimodo has joined #lisp
astronavt_ has joined #lisp
astronavt has quit [Ping timeout: 246 seconds]
dented42 has joined #lisp
dented42 has quit [Client Quit]
wigust has quit [Ping timeout: 252 seconds]
dented42 has joined #lisp
astronavt__ has joined #lisp
dented42 has quit [Client Quit]
astronavt_ has quit [Ping timeout: 260 seconds]
dddddd has quit [Remote host closed the connection]
Kundry_Wag has joined #lisp
Kundry_Wag has quit [Read error: Connection reset by peer]
Kundry_Wag has joined #lisp
Kundry_Wag has quit [Ping timeout: 260 seconds]
reverse_light has quit [Ping timeout: 260 seconds]
nullniverse has joined #lisp
Kaisyu has joined #lisp
khisanth_ has quit [Ping timeout: 240 seconds]
asarch has joined #lisp
Fare has joined #lisp
Kundry_Wag has joined #lisp
<asarch>
One stupid question: why in slime if I press , the option to quit from SBCL does not appear?
dented42 has joined #lisp
<AeroNotix>
asarch: because there are more than one commands you can enter with `,`
<AeroNotix>
quit is an option, as well as a few others.
<AeroNotix>
`,` just gives you the prompt to enter the command you wish to execute
Kundry_Wag has quit [Ping timeout: 246 seconds]
<asarch>
I mean, if I press it, the , appears in the SBCL REPL
<asarch>
Not in the command line of Emacs
<AeroNotix>
Oh, do you have lisp forms in the repl already?
<AeroNotix>
`,` only works with a blank repl prompt
<asarch>
Well, I press M-x slime, wait to connect, and then I press , and... nothing :-(
dented42 has quit [Client Quit]
<AeroNotix>
asarch: does it never connect for you?
<asarch>
This is SBCL 1.4.5.openbsd, an implementation of ANSI Common Lisp.
<asarch>
Well, SBCL works fine
<AeroNotix>
I acknowledge you use OpenBSD
esrse has joined #lisp
<asarch>
GNU Emacs 25.3.1
<AeroNotix>
asarch: SBCL works fine with M-x slime or SBCL works fine outside of Emacs?
<asarch>
It works fine in both cases
<asarch>
In the terminal window emulator and in the Emacs
<AeroNotix>
In the slime repl, type C-h k , RET
<asarch>
, runs the command self-insert-command (found in global-map), which is
<asarch>
an interactive built-in function in ‘C source code’....
<asarch>
And some more text
<AeroNotix>
Weird
<asarch>
Maybe it is the Slime version
<AeroNotix>
just check you have the latest slime version, just to be sure
<asarch>
Ok
<asarch>
(sb-ext:exit) also works fine
<AeroNotix>
asarch: `,` isn't just for exiting, FYI
<AeroNotix>
any way, it looks like `,` in your prompt isn't set to the right elisp function
<asarch>
I see
<asarch>
Maybe I would need to add it to ~/.emacsrc
<AeroNotix>
add what to that file?
Kundry_Wag has joined #lisp
<asarch>
The correct key mapped to that elisp function
dented42 has joined #lisp
Kundry_Wag has quit [Ping timeout: 252 seconds]
Achylles has quit [Ping timeout: 252 seconds]
siraben has joined #lisp
khisanth_ has joined #lisp
<no-defun-allowed>
cl-vep demo went well
<no-defun-allowed>
many laughs were made
<no-defun-allowed>
minion: tell beach maybe going to els 2020 would be more feasible :/
<minion>
beach: watch out, you'll make krystof angry
<no-defun-allowed>
what
<no-defun-allowed>
minion: help message
rumbler31 has joined #lisp
jjman has joined #lisp
milanj has joined #lisp
rumbler31 has quit [Ping timeout: 252 seconds]
robotoad has quit [Quit: robotoad]
mange has quit [Ping timeout: 244 seconds]
dented42 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
xrash has quit [Ping timeout: 260 seconds]
argoneus has quit [Read error: Connection reset by peer]
nirved_ has quit [Read error: Connection reset by peer]
nirved_ has joined #lisp
argoneus has joined #lisp
fortitude_ has quit [Ping timeout: 252 seconds]
Kundry_Wag has joined #lisp
nullniverse has quit [Ping timeout: 244 seconds]
Kundry_Wag has quit [Ping timeout: 260 seconds]
robotoad has joined #lisp
zigpaw has quit [Remote host closed the connection]
ober has joined #lisp
shelvick has quit [Remote host closed the connection]
pjb has joined #lisp
milanj has quit [Quit: This computer has gone to sleep]
warweasle has quit [Quit: rcirc on GNU Emacs 24.4.1]
<no-defun-allowed>
minions pls
<no-defun-allowed>
minion: help memo
<minion>
To send a memo, say something like ``minion: memo for nick: the memo''. I'll remember the memo for any nick which is the same as the given nick, +/- differences in punctuation, and any nick which is an alias for it, and give it to them when they next speak.
<no-defun-allowed>
minion: memo for beach: maybe going to els 2020 would be more reasonable. (sorry, can't say good morning, two hour school end of term assembly.)
<minion>
Remembered. I'll tell beach when he/she/it next speaks.
<no-defun-allowed>
ty
housel has quit [Remote host closed the connection]
housel has joined #lisp
troydm has quit [Ping timeout: 240 seconds]
Kundry_Wag has joined #lisp
astronavt__ is now known as astronavt
Kundry_Wag has quit [Ping timeout: 260 seconds]
Kundry_Wag has joined #lisp
makomo has quit [Ping timeout: 252 seconds]
<beach>
Good morning everyone!
<minion>
beach, memo from no-defun-allowed: maybe going to els 2020 would be more reasonable. (sorry, can't say good morning, two hour school end of term assembly.)
<beach>
no-defun-allowed: Sure, no rush.
Kundry_Wag has quit [Ping timeout: 252 seconds]
pjb has quit [Ping timeout: 260 seconds]
Kundry_Wag has joined #lisp
Pixel_Outlaw has quit [Quit: Leaving]
Kundry_Wag has quit [Ping timeout: 245 seconds]
Kundry_Wag has joined #lisp
Kundry_Wag has quit [Ping timeout: 252 seconds]
pjb has joined #lisp
pierpal has quit [Quit: Poof]
asarch has quit [Read error: Connection reset by peer]
pierpal has joined #lisp
rtypo has quit [Ping timeout: 245 seconds]
creat has quit [Ping timeout: 264 seconds]
creat has joined #lisp
slyrus1 has joined #lisp
Fare has quit [Ping timeout: 260 seconds]
slyrus has quit [Ping timeout: 240 seconds]
slyrus1 is now known as slyrus
Fare has joined #lisp
Bike has quit [Quit: Lost terminal]
Kundry_Wag has joined #lisp
Kundry_Wag has quit [Read error: Connection reset by peer]
Kundry_Wag has joined #lisp
slyrus1 has joined #lisp
troydm has joined #lisp
Kundry_Wag has quit [Ping timeout: 272 seconds]
mkolenda has quit [Ping timeout: 240 seconds]
energizer has quit [Remote host closed the connection]
energizer has joined #lisp
pjb has quit [Ping timeout: 240 seconds]
mkolenda has joined #lisp
heisig has joined #lisp
Kundry_Wag has joined #lisp
slyrus1 has quit [Ping timeout: 252 seconds]
Kundry_Wag has quit [Ping timeout: 252 seconds]
<no-defun-allowed>
hi, i'm back
<no-defun-allowed>
morning beach
<beach>
Hey no-defun-allowed. Like I said, no rush.
<no-defun-allowed>
i'll have a year's break between high school and university so that'd be a better time
<beach>
Definitely.
ober has left #lisp ["ERC (IRC client for Emacs 26.1)"]
<no-defun-allowed>
ober on, ober off
v0|d has quit [Read error: Connection reset by peer]
<no-defun-allowed>
can i make sbcl's garbage collector more aggresive in when it collects?
<oni-on-ion>
clhs gc
<specbot>
Couldn't find anything for gc.
<beach>
You can call it explicitly.
<no-defun-allowed>
i calculated the memory footprint for my hash table to be around 250mb for 25 frames of 1080x720 but (room) reported around 1gb
<no-defun-allowed>
nvm, it's in the manual
<oni-on-ion>
o_o
<no-defun-allowed>
(sb-ext:bytes-consed-between-gcs is the magic function btw)
<oni-on-ion>
ouu
<no-defun-allowed>
i've lowered it from 256mb to 64mb
<beach>
millibits?
<beach>
Which reminds me, the electric company here now sells electricity in units of Kelvin-Watt-Henry.
<no-defun-allowed>
my bad, 256MB -> 64MB
* no-defun-allowed
adjusts readtable-case
<beach>
... or so the commercial on TV says, at least.
<no-defun-allowed>
back in my day we were lucky to get one microbit of memory in our systems...
<no-defun-allowed>
nowadays GCs throw around 256 megabytes like it's nothing
Kundry_Wag has joined #lisp
<oni-on-ion>
Khw? =)
SaganMan has quit [Read error: Connection reset by peer]
Kundry_Wag has quit [Ping timeout: 246 seconds]
jxy has quit [Ping timeout: 252 seconds]
jxy has joined #lisp
Kundry_Wag has joined #lisp
ebzzry has joined #lisp
Kundry_Wag has quit [Ping timeout: 244 seconds]
<no-defun-allowed>
i forgot what i typed into cl-vep to make it work
zigpaw has joined #lisp
Kundry_Wag has joined #lisp
<no-defun-allowed>
oops, .mov not .mkv.
Kundry_Wag has quit [Ping timeout: 244 seconds]
emaczen has joined #lisp
dented42 has joined #lisp
Inline has quit [Quit: Leaving]
dented42 has quit [Client Quit]
siraben has quit [Ping timeout: 252 seconds]
pierpal has quit [Read error: Connection reset by peer]
pierpal has joined #lisp
<no-defun-allowed>
there's still some not inlined + and *s according to sb-sprof
suskeyhose has quit [Remote host closed the connection]
dxtr has quit [Ping timeout: 240 seconds]
nirved_ is now known as nirved
Kundry_Wag has joined #lisp
Kundry_Wag has quit [Ping timeout: 260 seconds]
scottj has quit [Quit: leaving]
robotoad has quit [Quit: robotoad]
Kundry_Wag has joined #lisp
jack_rabbit has joined #lisp
phoe has joined #lisp
dxtr has joined #lisp
Kundry_Wag has quit [Ping timeout: 246 seconds]
SenasOzys has quit [Remote host closed the connection]
SenasOzys has joined #lisp
lemonpepper24 has quit [Ping timeout: 240 seconds]
Fare has quit [Ping timeout: 272 seconds]
astronavt has quit [Ping timeout: 240 seconds]
vlatkoB has joined #lisp
robotoad has joined #lisp
Kundry_Wag has joined #lisp
Kundry_Wag has quit [Ping timeout: 260 seconds]
shrdlu68 has joined #lisp
SenasOzys has quit [Ping timeout: 272 seconds]
milanj has joined #lisp
scymtym has quit [Ping timeout: 272 seconds]
Kundry_Wag has joined #lisp
mrSpec has joined #lisp
<LdBeth>
good evening
Kundry_Wag has quit [Ping timeout: 272 seconds]
<no-defun-allowed>
hi LdBeth
<no-defun-allowed>
okay, no function calls to +, * and truncate now :)
nirved has quit [Ping timeout: 272 seconds]
ebrasca has quit [Read error: Connection reset by peer]
nirved has joined #lisp
robotoad has quit [Quit: robotoad]
pjb has joined #lisp
makomo has joined #lisp
scymtym has joined #lisp
<shka_>
good morning
trittweiler has joined #lisp
nirved has quit [Ping timeout: 272 seconds]
nirved has joined #lisp
Kundry_Wag has joined #lisp
esrse has quit [Ping timeout: 272 seconds]
Kundry_Wag has quit [Ping timeout: 252 seconds]
makomo has quit [Quit: WeeChat 2.2]
orivej has joined #lisp
<no-defun-allowed>
morning shka_
makomo has joined #lisp
makomo has quit [Client Quit]
makomo has joined #lisp
frgo has quit [Remote host closed the connection]
pjb has quit [Ping timeout: 252 seconds]
ober has joined #lisp
<makomo>
morning
Kundry_Wag has joined #lisp
housel has quit [Read error: Connection reset by peer]
Kundry_Wag has quit [Ping timeout: 240 seconds]
Kundry_Wag has joined #lisp
<no-defun-allowed>
hi makomo
<makomo>
hey :-)
Kaisyu7 has quit [Quit: ERC (IRC client for Emacs 26.1)]
<no-defun-allowed>
ok so the cl-decentralise event loop should bind some variable names and will evaluate some cond-like forms
Kundry_Wag has quit [Ping timeout: 260 seconds]
<no-defun-allowed>
how should i go about it? there's upwards of ten variables that will be bound (mapping to five possible event forms) and they're all mutually exclusive
frgo has joined #lisp
frgo has quit [Ping timeout: 252 seconds]
<no-defun-allowed>
maybe putting each form in its own let could help me enforce using the correct variables for the correct types but the user would have to specify which type they're listening on
ober has left #lisp ["ERC (IRC client for Emacs 26.1)"]
frgo has joined #lisp
<LdBeth>
#'no-defun-allowed: bound them into a struct?
Kundry_Wag has joined #lisp
<LdBeth>
something like a single threaded object
Kundry_Wag has quit [Ping timeout: 252 seconds]
Kundry_Wag has joined #lisp
Kundry_Wag has quit [Ping timeout: 252 seconds]
<flip214>
Xof: this exactly, thank you so much!
v0|d has joined #lisp
<no-defun-allowed>
idk, there'll only be one per event loop
<no-defun-allowed>
binding feels more natural
orivej has quit [Ping timeout: 252 seconds]
zfree has quit [Remote host closed the connection]
marvin2 has quit [Ping timeout: 260 seconds]
Kundry_Wag has joined #lisp
pierpal has quit [Ping timeout: 272 seconds]
Kundry_Wag has quit [Ping timeout: 252 seconds]
razzy has joined #lisp
Kundry_Wag has joined #lisp
nsrahmad has joined #lisp
Kundry_Wag has quit [Ping timeout: 252 seconds]
gpiero has joined #lisp
orivej has joined #lisp
nsrahmad has quit [Remote host closed the connection]
zooey has quit [Ping timeout: 256 seconds]
zooey has joined #lisp
Colleen has joined #lisp
aeth has quit [Read error: Connection reset by peer]
Kundry_Wag has joined #lisp
steiner has joined #lisp
aeth has joined #lisp
Kundry_Wag has quit [Read error: Connection reset by peer]
pjb has joined #lisp
Kundry_Wag has joined #lisp
schweers has joined #lisp
Kundry_Wag has quit [Ping timeout: 260 seconds]
anewuser has quit [Quit: anewuser]
milanj has quit [Quit: This computer has gone to sleep]
regreg has quit [Ping timeout: 244 seconds]
zfree has joined #lisp
Achylles has joined #lisp
ober has joined #lisp
varjag has joined #lisp
pjb has quit [Ping timeout: 252 seconds]
Kundry_Wag has joined #lisp
varjag has quit [Ping timeout: 252 seconds]
dddddd has joined #lisp
Kundry_Wag has quit [Ping timeout: 246 seconds]
FreeBirdLjj has joined #lisp
Kaisyu has quit [Quit: Connection closed for inactivity]
rumbler31 has joined #lisp
FreeBirdLjj has quit [Ping timeout: 244 seconds]
rumbler31 has quit [Ping timeout: 260 seconds]
light2yellow has joined #lisp
mingus has quit [Ping timeout: 240 seconds]
m00natic has joined #lisp
mingus has joined #lisp
Kundry_Wag has joined #lisp
Lycurgus has joined #lisp
frodef has joined #lisp
Kundry_Wag has quit [Ping timeout: 252 seconds]
orivej has quit [Ping timeout: 252 seconds]
orivej_ has joined #lisp
<xificurC>
I got lost in reasoning about a double backticked form. What would be a good resource to read about how backquote is processed? If there was a part about double backquotes or macro-writing-macros that would be even better
<no-defun-allowed>
I think the cl-d protocol is sussed out now. I've finished an event loop macro and I'm going to write all the cl-d primitive requests tomorrow.
<shka_>
eh, honestly, try to avoid double `
<shka_>
it is very difficult to understand
<shka_>
ideally, you should use functions to expand macro body
<no-defun-allowed>
Yeah, if there's a loop or second stage I give that to another function.
scymtym has quit [Ping timeout: 260 seconds]
scymtym has joined #lisp
<xificurC>
you mean write a function that generates the nested part?
<no-defun-allowed>
Yes.
<no-defun-allowed>
cl-decentralise's event-loop uses a make-event which matches the event forms and e-l simply loops over with some gensyms too.
<xificurC>
one wants to torture self, one is told not to
<shka_>
xificurC: yes, exactly
<shka_>
keep it simple :-)
<xificurC>
but, but, isn't there *more* enlightenment when... oh well, ok
<shka_>
also, debugging macros that were written in torturish way is very, very, very hard
<shka_>
so it is beneficial to write this cleanly
tfeb has joined #lisp
Kundry_Wag has joined #lisp
light2yellow has quit [Quit: WeeChat 2.2]
Kundry_Wag has quit [Ping timeout: 252 seconds]
pierpal has joined #lisp
<xificurC>
wow, even this way I suck. Off to meditate
<makomo>
xificurC: i actually have a writeup regarding double backquotes
<makomo>
they might not be 100% precise, but i tried my best. suggestions welcome. :-) it's not meant to be a tutorial on backquote though, but i did mention some general techniques/things
<makomo>
what splittist is also very useful, as Steele himself describes a few patterns
<makomo>
such as ',' and so on
<makomo>
posted*
Kundry_Wag has quit [Read error: Connection reset by peer]
<makomo>
xificurC: after you start to understand it better (or perhaps you can do it in parallel), i would recommend studying ONCE-ONLY (i prefer Alexandria's version to the one found in PCL) https://github.com/keithj/alexandria/blob/master/macros.lisp#L30
<makomo>
here you'll find patterns/idioms like ,,@ and ,,
gpiero has quit [Remote host closed the connection]
<AeroNotix>
Can I turn GC off in SBCL temporarily?
<beach>
That sounds like a risky thing to do.
<AeroNotix>
beach: I'm not doing it in "real" code. I want to verify a theory, for debugging
Kundry_Wag has joined #lisp
<beach>
I mean, if, while running your application, you run out of space in one generation and the GC is disabled, then the system will fail. And if you don't run out of space, then the GC won't run.
<AeroNotix>
What kind of failure do you mean? Crash?
<AeroNotix>
I'm fine with a crash.
<jackdaniel>
it will put your pc on fire
<jackdaniel>
:-)
<AeroNotix>
fine with that, too
<beach>
So just trace GC and if it runs, consider it a crash.
<beach>
(trace GC :break t) could work.
Kundry_Wag has quit [Read error: Connection reset by peer]
<AeroNotix>
okay
Kundry_Wag has joined #lisp
shka_ has joined #lisp
<Bike>
i don't think "natural" gcs in sbcl necessarily call ext:gc
<Bike>
there's a without-gcing internal thing you could mess with
nsrahmad has joined #lisp
schweers has quit [Ping timeout: 252 seconds]
Fare has quit [Ping timeout: 240 seconds]
<AeroNotix>
i'll give it a go
<AeroNotix>
hmm, well there goes that theory. I was trying to see why two threads operating on two different hardware memory transactions were occasionally failing
<AeroNotix>
(assuming sb-sys:without-gcing works as expected)
nsrahmad has quit [Remote host closed the connection]
pjb has joined #lisp
Denommus has joined #lisp
<shka_>
AeroNotix: what are you doing?
<AeroNotix>
shka_: attempting to write code using stmx/rtm features
pjb has quit [Ping timeout: 252 seconds]
gravicappa has quit [Ping timeout: 260 seconds]
<shka_>
good
<Demosthenex>
AeroNotix: mailbox
<AeroNotix>
Demosthenex: found it, thanks
<shka_>
maybe i should checkout smtx as well
<shka_>
but petalisp goes first
<Demosthenex>
if i create a thread in a let inside a function, when i leave the let scope is the thread killed?
<shka_>
Demosthenex: no
<shka_>
you need to either kill it or wait for join
<Demosthenex>
shka_: k, so i'm using destroy at the end for now then
<AeroNotix>
Demosthenex: destoying threads is a bad idea
shrdlu68 has quit [Ping timeout: 252 seconds]
astronavt_ has quit [Quit: Leaving]
astronavt has joined #lisp
Denommus has quit [Ping timeout: 260 seconds]
<Demosthenex>
AeroNotix: i heard that, i may put in a lock to signal when to exit
<Demosthenex>
don't understand why the cursor is always going to the end of the clock though
<Demosthenex>
i'm deliberately moving it, and also trying to protect and restore the position
marvin2 has joined #lisp
pjb has joined #lisp
<AeroNotix>
Demosthenex: that code is definitely buggy
<AeroNotix>
You shouldn't destroy threads that potentially will hold locks
<Demosthenex>
AeroNotix: that's a good thought, but it spends 99% of its time sleeping, and its a POC by a noob ;]
<Demosthenex>
i'll look at making a global var to signal stop to other threads
<AeroNotix>
Demosthenex: that's one way to do it
<Demosthenex>
is there a better way to tell looping threads to quit?
<AeroNotix>
Demosthenex: I prefer using a different method of thread synchronization: channels
<AeroNotix>
but almost all channel libraries in CL aren't to my liking.
<AeroNotix>
a globally thread-safe var should work for a POC
<Demosthenex>
doesn't need to be thread safe, if it's only set once but read many
<pjb>
Demosthenex: you could use a global special variable, but there's no guarantee that they're writable atomically.
<AeroNotix>
pjb: this
<Demosthenex>
pjb: if i make a var, it's just to be checked before the next loop (ie: (loop until *quit* do ....)
<AeroNotix>
I mention thread-safe just so it's clear that it should be thread safe, setting a variable *should* be fine, without explicit locking but ymmv. I'm not clear on whether setf is atomic.
<pjb>
It really depends on the platform, on the hardware.
<Demosthenex>
i do understand that for important cross thread comms, it matters ;]
<pjb>
Now it's easy to add a mutex.
<Demosthenex>
i still haven't figured out why the cursor is on the clock :P
<Demosthenex>
ah, it was the refresh screen always going to the end
<jackdaniel>
pjb: I was referring to what whartung said
<pjb>
Yes. They are two different things.
<jackdaniel>
I don't have opinion what is a good solution because I didn't read the whole backlog
<pjb>
atomic writes don't require locks.
<pjb>
That said, it's true that you can often merge locks, but it would increase parallelism to keep one lock per data, if they're independent.
<AeroNotix>
not entirely an expert but you can try to use transactional memory with more coarse grained locks and let the cpu figure out chances for data parallelism
<pjb>
Demosthenex: for example, you are trying to access a unique resource, the screen. Instead of accessing it from multiple threads, have a single thread own it and access it, and multiple threads communicating with this screen management thread. This can be more efficient, since the screen management thread can then serialize and optimize the requests, and those requests can be built in parallel my the other threads.
<AeroNotix>
I'm just starting to use "real" transactional memory
<AeroNotix>
pjb: sounds like a poor man's actor
<pjb>
Exactly. This is how I would rather use thread, seeing them as actors.
<AeroNotix>
There's a few reasonably decent actor libraries that abstract this kind of interface
<AeroNotix>
a lot of my time in CL is spent trying to make it behave like Erlang :)
<jackdaniel>
LFE gives you lisp and erlang from what I've heard
<AeroNotix>
jackdaniel: it's absolutely rubbish
<AeroNotix>
it combines the worst of both worlds (imho)
<jackdaniel>
that's not a nice thing to say about a language
<AeroNotix>
well I've used LFE and Erlang extensively, I dunno, I feel like I understand them both well enough to say whether they bring anything useful to the table
<ober>
^^
<AeroNotix>
ober: ?
<ober>
+1
<ober>
AeroNotix: have you tried Elixir?
<AeroNotix>
ober: not in anger
<AeroNotix>
I keep meaning to delve into it
<AeroNotix>
Just that erlang is "dayjob" stuff and if I have free time I'd prefer to spend it with CL
<AeroNotix>
anyway
<AeroNotix>
OT
<AeroNotix>
Anyone used STMX?
<AeroNotix>
I don't think this behaviour is only visible with stmx, it may be just a quirk of how rtm works. I've got a single threaded loop that continually sets a variable to a random value.
<AeroNotix>
Despite nothing else (in my code, at least) accessing that variable, sometimes the transaction rolls back.
<AeroNotix>
I, at first, thought it could be the gc interfering with the variable, tried using sb-sys:without-gcing but it didn't change the behaviour
jmercouris has joined #lisp
<whartung>
also, to highlight pjb’s idea of a single controlling thread, the screen is a spectacularly low bandwidth device. Far cheaper to stuff something on a queue and have the controlling thread update, than to have everyone try it and wait for the screen to update.
<whartung>
if the controlling thread is using something like curses, it can batch all of the updates in to one hit to the display, something competenig threads potentially can not do
<Shinmera>
dim: (char string 0) would be better than eiter aref or coerce, in my opinion
<pjb>
To complement what whartung is saying, you should have a look at how emacs on the terminal does it! You'd be surprised.
<AeroNotix>
Not to mention that it'll subjectively make the code far easier to reason about and understand
<AeroNotix>
instead of minute instances of locking/unlocking. You would have send-to-screen type operations that don't care how the screen handles that operation
<whartung>
you still have locking and unlocking, but theyre ideally faster since you’re only fighting over a queue, vs a slow display.
<AeroNotix>
whartung: indeed, but the individual instances of locking can be abstracted into the "screen" API
<whartung>
naturally, but they always could have.
<AeroNotix>
sure, it's a conceptual thing rather than a technical one
tfeb has quit []
TMA has quit [Ping timeout: 276 seconds]
orivej has joined #lisp
<Demosthenex>
pjb: so the casier demo is just like the mailboxes i'm using, and really i don't need anything deep, i just wanted async input while taking forms data so i can have popup combo boxes display autocompletion options without stopping
<pjb>
So right, this is also the point I wanted to mention: usually, threads will be waiting on a queue or a mailbox like this, to receive a message and process it. So it's natural and easy to define a quit message to have the thread stop.
<whartung>
Isn’t this lparallels bally wick? job queues to run tasks?
<pjb>
it's a little like using pipes.
<whartung>
your mailbox?
<whartung>
bloking queue 1 item deep?
<pjb>
in general.
meepdeew has quit [Ping timeout: 260 seconds]
zigpaw has joined #lisp
sauvin has quit [Read error: Connection reset by peer]
<whartung>
is that your own personal gitlab pjb?
<pjb>
yes.
<AeroNotix>
btw in the area of self-hosted git sites, check out gitea and gogs. Far superior to gitlab (IMHO!!)
<whartung>
4GB of ram to host a web site on top of a source code repo…
<AeroNotix>
whartung: honestly, try gitea/gogs. mine's running in 20mb ram right now
<AeroNotix>
a bit more featureful than cgit, not much more hungry
FreeBirdLjj has quit [Ping timeout: 260 seconds]
Fare has joined #lisp
<whartung>
right now I use SVN hosted on a drop box drive.
<oni-on-ion>
i got my git repo sync'd with dropbox
Essadon has joined #lisp
Essadon has quit [Client Quit]
Essadon has joined #lisp
Arcaelyx_ has joined #lisp
Arcaelyx has quit [Ping timeout: 252 seconds]
AroPar has joined #lisp
AroPar has quit [Remote host closed the connection]
Fare has quit [Ping timeout: 240 seconds]
Jesin has joined #lisp
warweasle has quit [Quit: soon]
Jesin has quit [Remote host closed the connection]
cage_ has quit [Quit: Leaving]
Jesin has joined #lisp
Fare has joined #lisp
random-nick has quit [Read error: Connection reset by peer]
random-nick has joined #lisp
orivej has quit [Ping timeout: 260 seconds]
nowhere_man has quit [Ping timeout: 252 seconds]
angavrilov has quit [Remote host closed the connection]
<jasom>
jackdaniel: Most lisp-in-X are rubbish, mainly because it's relaly easy to make a bad one, but very hard to make a good one.
<plathrop>
every lisp I've written in lisp has turned out to be okay /troll
<jackdaniel>
bold opinion (one of these which are easy to make;)
oni-on-ion has quit [Read error: No route to host]
<aeth>
I'm having a hard enough time writing Scheme-in-Common-Lisp and Scheme's the closest Lisp to CL that's not Emacs Lisp or essentially obsolete. The hard part is getting the exact semantic match while preserving performance. Pseudoscheme never tried to do this, hence the "pseudo".
<jasom>
jackdaniel: which part is bold? I think it's relatively intuitive that the larger the distance between the difficulty of doing something poorly and the difficulty of doing something well, the more times something will be done poorly. I know it's easy to do one badly because I have done so.
<aeth>
I can't imagine doing a Lisp-in-Foo that is not just Foo with s-expressions because the semantic mismatch would be even greater than Scheme-on-CL
rumbler31 has joined #lisp
<plathrop>
welll... every language has to be written in another language. So it has to be possible to write good Lisp-in-Foo for *some* values of Foo
<pfdietz>
Even "lisp is assembler" requires tricky tricks.
<plathrop>
I'm just being overly pedantic about "doing a Lisp-in-Foo" == "Foo with s-expressions"
<jackdaniel>
bold, that /most/ are /rubbish/. first suggests you have compared at least a few, second that they are worthless (given some objective(?) metric)
<aeth>
jackdaniel: It's actually the least bold claim that most $thing_on_the_internet are rubbish
<jackdaniel>
so it sounds like an opinion easy to state, hard to verify
<aeth>
That definitely includes software post-Github
<plathrop>
I'll make an even bolder claim. All software is terrible.
<jackdaniel>
and I'll go to sleep
<jackdaniel>
good night :)
<aeth>
Well it's easy to verify informally, it's hard to objectively define.
<aeth>
The problem with bad software is it doesn't (usually) have a test suite to express how bad it is.
<aeth>
(And even then, the bad decisions could be architectural)
<plathrop>
(especially any software I had a hand in creating)
<jackdaniel>
aeth: informal verification fails short: take randomly person from this channel they'll say: python is rubbish; take randomly person from python channel they'll say: lisp is dead ;)
<aeth>
plathrop: No one has time to write good software.
<aeth>
jackdaniel: People actually can use Python for serious projects, so it's not rubbish in the context here. I would guess that there are thousands and thousands of hobby Lisps and "Lisps" out there and maybe 20-30 are usable.
<aeth>
The problem is, you'd need to try to write a project in $foo to find out that it's not a usable language implementation sometimes.
<aeth>
It's very easy to make a Lisp, so I don't think it's controversial that there are many.
<aeth>
s/make a Lisp/make a toy Lisp/
<pfdietz>
Even fewer purport to be Common Lisps.
<rtypo>
hi, is it possible to expand this code? (i'm using sbcl, emacs, slime)
<rtypo>
i'm a newbie, doing ch 8 from "Praise for..."
<pfdietz>
(macroexpand '(test-*)), perhaps?
<jasom>
rtypo: if test-+ is a macro, then you can move the cursor and do a slime-macroexpand
rumbler31 has quit [Remote host closed the connection]
<djeis[m]>
You should be able to run the macroexpand keybinding again on that subform, yea
<plathrop>
aeth: truth. I'm experiencing that now at $DAYJOB
<rtypo>
yes, i'm doing slime-expand over 'test-arithmetic, then 'combine-results
frodef has joined #lisp
<rtypo>
(and it works, in the same window)
<rtypo>
but for some reason it doesn't on the 'test-+ and 'test-*
<jasom>
rtypo: it's entirely possible (perhaps even likely) that it's a function though
<pfdietz>
Or, macroexpand on the deftest form that defines test-*.
<jasom>
actually we can be fairly certain it's a function, since deftest (in this case) expands to a defun and test-+ is defined with deftest as well
<rtypo>
pfdietz: yes that works
<jasom>
rtypo: you cam probably hit M-. on it to jump to the deftest definition
<rtypo>
jasom: this works as well
<rtypo>
i kind of wished it expanded insite the window tho :D
<rtypo>
jasom: ah, so that's why it doesn't work as the others
<djeis[m]>
There’s a package called macrostep which lets you do inline macroexpansion.
<jasom>
djeis[m]: test-+ isn't a macro
<djeis[m]>
Ah, that’d do it.
<rtypo>
i suppose that's my lack of understanding, i thought it's a macro
<rtypo>
so 'test-arithmetic is a macro, but 'test-+ is not?
<jasom>
rtypo: test-arithmetic is a function
<jasom>
rtypo: deftest is a macro
<rtypo>
ahh! i see
<jasom>
deftest is a macro that defines a function
papachan has quit [Quit: WeeChat 2.2]
<jasom>
or more pedantically deftest is a macro that expands to a function definition.
<rtypo>
i got it now. thanks
<rtypo>
i can expand "(deftest test-+ ...", but not "(test-+)"
<rtypo>
alright
<pfdietz>
Correct
joast has quit [Ping timeout: 272 seconds]
jmercouris has quit [Remote host closed the connection]
nckx has quit [Quit: Updating my GNU GuixSD server — gnu.org/s/guix]
<pfdietz>
Is there a portable implementation of the Common Lisp reader (in Common Lisp) anywhere? That is, I want to be able to modify it so I don't want to use any CL's builtin reader.
<pfdietz>
Want I want this for is this: I want to be able to trawl lisp sources for code fragments to use in testing, but I don't want to actually have to load the code, so packages may not be defined. So I want a reader that can skip over package names it doesn't know without completely aborting.
igemnace has joined #lisp
rjid has joined #lisp
<pfdietz>
I had done this by hacking sbcl's reader, but I'd prefer a portable solution.
rjid has left #lisp [#lisp]
<jasom>
pfdietz: I think climacs has a way to read possibly incomplete lisp source code
Kundry_Wag has quit [Remote host closed the connection]
orivej has joined #lisp
joast has joined #lisp
<no-defun-allowed>
Good morning
Bike has joined #lisp
<LdBeth>
Morning
jkordani_ has joined #lisp
<makomo>
evening :-)
Pixel_Outlaw has joined #lisp
jkordani has quit [Ping timeout: 260 seconds]
hitchhikingcoder has joined #lisp
hitchhikingcoder has quit [Remote host closed the connection]
Essadon has quit [Quit: Qutting]
oni-on-ion has joined #lisp
hitchhikingcoder has joined #lisp
nowhere_man has joined #lisp
orivej has quit [Ping timeout: 272 seconds]
Fare has quit [Ping timeout: 272 seconds]
meepdeew has joined #lisp
orivej has joined #lisp
meepdeew has quit [Ping timeout: 252 seconds]
anewuser has joined #lisp
rumbler31 has joined #lisp
hitchhikingcoder has quit [Quit: hitchhikingcoder]
LiamH has quit [Quit: Leaving.]
Fare has joined #lisp
kooga has quit [Ping timeout: 276 seconds]
robotoad has quit [Read error: Connection reset by peer]
robotoad has joined #lisp
Fare has quit [Ping timeout: 246 seconds]
kenu has joined #lisp
<kenu>
hi
<kenu>
I am trying to query db with postmodern's doquery, but it doesnt preserve upper cases in column names
<kenu>
is it possible to get columns with uppercases at all? :)
mutenewt has joined #lisp
<aeth>
If it's using symbols it has to assume that the user is probably going to say foo, which gets translated into FOO, and want it to represent "foo". |foo| would be how to get case-sensitivity, but if it assumes upcasing and then downcases it that wouldn't help
<aeth>
Perhaps it's overridable, but that at least explains why it is doing what it is doing
ober has left #lisp ["ERC (IRC client for Emacs 26.1)"]
willmichael has joined #lisp
<aeth>
I can't find anything in the documentation about case
<jasom>
it's possible it's case-inverting, le tme check
mutenewt has quit [Quit: Leaving]
<jasom>
I think you can just use "ColumnName" rather than a symbol
<jasom>
And you definitely can set postmodern:*downcase-symbols* to nil and use '|ColumnName|
mutenewt has joined #lisp
<jasom>
s/postmodern:/s-sql:
la_mettrie has joined #lisp
<jasom>
though since most of the forms get expanded a macroexpand time you'll have to be smart about how you set that.
la_mettrie has left #lisp [#lisp]
lnostdal has quit [Read error: Connection reset by peer]
random-nick has quit [Ping timeout: 240 seconds]
<kenu>
after setting that *downcase-symbols* to NIL I get
<kenu>
Database error 42703: column users.userid does not exist
<kenu>
HINT: Perhaps you meant to reference the column "users.userId".
<kenu>
QUERY: (SELECT users.userId FROM users)
<kenu>
before settin it QUERY: was (SELECT users.userid FROM users)
mutenewt has quit [Quit: Leaving]
<jasom>
ah "All identifiers (including column names) that are not double-quoted are folded to lower case in PostgreSQL."
<kenu>
and that's how I cal it: (doquery (:select '|users.userId| ...
<jasom>
so there is no point to enabling *downcase-symbols*
<jasom>
you'll need to do (:select "users.userID" ...)
<jasom>
you need to set s-sql:*escape-sql-names-p* to T as well
<kenu>
and I get literally "users.usersId" printed for every row in db instead of the actual value
<jasom>
yeah, I misread the s-sql documentation
<jasom>
though I object to their :auto implementation for escaping; it ought to escape any names with upper case characters for just this reason...
robotoad has quit [Quit: robotoad]
<kenu>
works :D thanks a lot!
<jasom>
they ought to provide a case-inverting version IMO, that would allow you to do 'users '|users.userId| or 'users.user\Id
<jasom>
they ought to provide a case-inverting version IMO, that would allow you to do 'users '|USERS.USERiD| or 'users.user\id
<aeth>
I'm disappointed you didn't invert everything. "THEY OUGHT TO PROVIDE ..."
<whartung>
am I to understand you’re doing case sensitive SQL?
varjag has quit [Quit: ERC (IRC client for Emacs 26.1)]
varjag has joined #lisp
<jasom>
kenu: it does look like the better solution is to just change your schema to be users.user_id
<jasom>
then you cna do 'user-id
<whartung>
I know I’m old school, but case sensitve SQL — man, life’s too short.
* whartung
loves that he can use - in lisp-variable-names
vxe has joined #lisp
<aeth>
The greatest evil in programming language syntax is forbidding foo-bar-baz just so someone can write "x-y" instead of "x - y", which makes everything slightly harder to read.
<aeth>
"Whitespace significant" languages make the *wrong* whitespace the significant part.
<whartung>
I just love that I don’t have to use SHIFT to get expressive-variable-names
<whartung>
heh lol yea
<aeth>
even if - and _ were inverted, - is just easier to read
<whartung>
I think so
<whartung>
and easier to type
<aeth>
and camelCase is only fine for short names with no acronyms, making it ironically the worst decision for something like Java
<whartung>
I use short names in other language becaueCamelCaseIsAPainToType compared-to-variables-with-dashes-which-is-easy
<aeth>
"let's use camelCase in a language with long names full of acronyms like ID and XML"
omilu has quit [Ping timeout: 264 seconds]
<kenu>
@jasom there is already some js code queryng that db and I don't feel like changing it
<jasom>
aeth: also ironic is that standard python style already recommends spaces around binops, so if you follow the style, then x-y could be unambiguously an identifier
<whartung>
all the chording and shifting is why I’m not a fan of emacs — just hard on my wrists, and I’m not really interested in remapping everything to make it easier.
<jasom>
whartung: fortunately someone already did all the remapping, and they called it "evil-mode"
<oni-on-ion>
whartung: try to type slower, or perhaps remap caps lock to control; that is what i have done. but i still dont really like it honestly.
<aeth>
jasom: Two things are imo a necessary part of style. Spaces around those operators and parentheses when mixing multiple operators so the reader and writer of the file don't need to have the precedence rules memorized. i.e. x + (c * y)
<whartung>
I’ve remapped caps lock.
<aeth>
jasom: and if you consistently always use that style then (+ x (* c y)) isn't *that* different.
<whartung>
it’s the extension and hoop jumping of the fingers I thnk, not so much the speed
<whartung>
what’s evil-mode?
<whartung>
is that vi in emacs?
<jasom>
whartung: more like vim in emacs, but yes.
<oni-on-ion>
whartung: hmm try switch up hands? ie. right shift or right alt, i dont use them as often as i should but i started to more and more.
<whartung>
wait, there’s a shift key on the right? lol
<whartung>
:)
<jasom>
whartung: I've tried several vim layers for emacs over the years and evil is the only one that didn't cause my muscle memory to get annoyed every few minutes.
<jasom>
I find thumb for alt helps a lot, fwiw
<whartung>
I would like to have tried the Canon Cat with its LEAP keys.
<oni-on-ion>
whartung: hehe. mine is missing at the moment but i still poke into the little rubber thing +)
<oni-on-ion>
i was next thinking of moving the spacebar elsewhere. like maybe if TopLeft of keyboard was backspace, and TopRight was space....
<whartung>
yea. on my mac, the CMD key is the “thumb” key, but taht’s not mapped to meta in Aquaemacs (which is a macification of emacs) that I use.
<jasom>
I've seen space remapped to be space only when not chorded I think
<whartung>
that wold be intersting, meta-space word forward, ctl-space word backwards
<whartung>
or something silly like that
<whartung>
though in some places shift-backspace is not backspace, and then I rage and bonk things...
<whartung>
I try not to go for massive customizations of, well, anything, because it’s One More Thing I have to manage and take care of and port across versions, and workstations, and then get all sort of muscle memory that doesn’t work on the kiosk at the hotel.
<whartung>
(it’s amazing how close emacs is to a canon cat and the “Humane Interface” and yet, how far away it is at the same time.
rumbler3_ has joined #lisp
<oni-on-ion>
if we can imagine something better, surely we could implement it.
Fare has joined #lisp
cl-arthur has quit [Quit: Lost terminal]
marvin2 has quit [Ping timeout: 252 seconds]
rumbler31 has quit [Ping timeout: 252 seconds]
Pixel_Outlaw has quit [Ping timeout: 252 seconds]
Blackbeard has joined #lisp
vlatkoB has quit [Remote host closed the connection]