eddof13 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
lisp123 has joined #commonlisp
lisp123 has quit [Remote host closed the connection]
hashfuncadb has quit [Ping timeout: 240 seconds]
Oladon has quit [Quit: Leaving.]
eddof13 has joined #commonlisp
s-liao has joined #commonlisp
eddof13 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
s-liao has quit [Quit: Client closed]
eddof13 has joined #commonlisp
s-liao has joined #commonlisp
amb007 has joined #commonlisp
random-nick has quit [Ping timeout: 256 seconds]
jeosol has quit [Quit: Client closed]
shka has quit [Ping timeout: 240 seconds]
<dbotton>
beach much appreciated
zacque has joined #commonlisp
<dbotton>
I agree, and will do my best refine it and thank you.
akoana has joined #commonlisp
<dbotton>
<lisp123> I am just writing it, that was the intro, I have notes I have taken while teaching myself and a few other resources. My plan is to put out something every week. I really lack much of the skills for this (and time) but my target audience are 3 of my sons (middle / high school) that are not as academic as my older boys (they are both very accomplished authors, books, journals etc not in English though)
<dbotton>
and others that tasting the joy of writing software may seek something more than HTML and JS....
hashfuncadb has joined #commonlisp
morganw has quit [Remote host closed the connection]
orestarod has quit [Ping timeout: 252 seconds]
waleee has quit [Ping timeout: 272 seconds]
eddof13 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
anticomputer has quit [Remote host closed the connection]
anticomputer has joined #commonlisp
Inline__ has joined #commonlisp
Inline has quit [Ping timeout: 256 seconds]
hashfuncadb has quit [Ping timeout: 240 seconds]
jealousmonk has quit [Quit: ERC 5.4.1 (IRC client for GNU Emacs 27.1)]
<beach>
Good morning everyone!
s-liao has quit [Ping timeout: 256 seconds]
s-liao has joined #commonlisp
semz_ has joined #commonlisp
semz has quit [Ping timeout: 245 seconds]
s-liao has quit [Ping timeout: 256 seconds]
s-liao has joined #commonlisp
tyson2 has quit [Remote host closed the connection]
aartaka has joined #commonlisp
Bike has quit [Quit: Connection closed]
epony has quit [Read error: Connection reset by peer]
epony has joined #commonlisp
<dbotton>
Good evening :)
<dbotton>
beach, I worked a bit on the start of the next part of the tutorial (on symbols), I would really like your input on it
<beach>
dbotton: You need to re-read your own stuff several times. It is not "emacs", "slime" and "sbcl". It is "Emacs", "SLIME", and "SBCL".
<beach>
dbotton: And you need to figure out how to either connect your phrases with conjunctions, or use full stops.
<beach>
But again, maybe this is your style.
<beach>
To me it is very distracting, so it is hard for me to read your writing for its contents.
epony has quit [Remote host closed the connection]
<beach>
dbotton: What is your native language?
<dbotton>
English if my first language but I spend more time in Hebrew plus after my stroke creates some issues
<beach>
Ah, yes, I see.
<beach>
I'm off for a while. Back in half an hour or so.
<dbotton>
I will for sure reread it again a few times. I just wanted to know your thoughts on presenting of symbols from start
<dbotton>
Mostly if can
aartaka has quit [Ping timeout: 240 seconds]
aartaka has joined #commonlisp
aartaka has quit [Ping timeout: 256 seconds]
<opcode>
I'm running an SBCL timer that calls into Dexador to query a REST API, and when the timer fires I get the error "WARNING: Starting a select(2) without a timeout while interrupts are disabled." Followed by a ("bogus stack frame") and a stack trace that doesn't give me any clues. Can anyone point me in the right direction for debugging this?
epony has joined #commonlisp
<beach>
dbotton: For code and natural language alike, I find it very difficult to forget about superficial distractions, and my experience is that when I have some problem like that, I am not alone. So the first thing to do (in my opinion of course) is to get rid of those distractions.
<beach>
So when you write "I am glad I have not scared you off, we are going to train hard and fast", I must pause and reread the phrases, because they are not connected right. I don't know whether you mean "I am glad I have not scared you off. We are going to train hard and fast" or "I am glad I have not scared you off, because we are going to train hard and fast", "I am glad I have not scared you off, but we are going to train hard and
<beach>
fast", "I am glad I have not scared you off, which is good because we are going to train hard and fast", or something else.
<beach>
dbotton: And if a text is full of that kind of stuff, I get so irritated that I keep searching for similar problems rather than reading the text for its contents.
<beach>
dbotton: The key binding for the Emacs command find-file is not C-x-f.
<beach>
dbotton: it is C-x C-f.
<beach>
And saving is not C-x-s, it is C-x C-s.
<beach>
"Unlike other languages, files have no semantic meaning" suggests that "files" is another language.
<beach>
I am just skimming the text and there are dozens of distractions like that.
lisp123 has joined #commonlisp
<beach>
dbotton: Symbols are created by the reader, and a function is not a symbol.
<beach>
dbotton: And you can't save symbols in a file. You can save a sequence of characters that, when read by READ, will create a symbol.
<beach>
dbotton: The macro DEFUN will definitely not create the symbol MAIN.
<lisp123>
dbotton: Might be useful to read 'A gentle introduction to Common Lisp' or whatever it is called, I think that will help in giving you the key points for an introductory text
<lisp123>
A Gentle Introduction to Symbol Computation* it is called
<beach>
minion: Please tell lisp123 about gentle.
<minion>
lisp123: look at gentle: "Common Lisp: A Gentle Introduction to Symbolic Computation" is a smoother introduction to lisp programming. http://www.cs.cmu.edu/~dst/LispBook/
<lisp123>
beach & minion: thanks!
<beach>
minion: Thanks!
<minion>
np
euandreh has quit [Ping timeout: 240 seconds]
<lisp123>
CL:AGISC doesn't have a great description of symbols
<beach>
As I recall, that's the one that assumes that a symbol has slots for the function it might name, the variable it might name, the plist, etc.
euandreh has joined #commonlisp
<lisp123>
Yes, to some degree. CLTL2e also does the same
<beach>
Sad.
<lisp123>
I don't know how accurate this is, but this seemed a good introductory line: In LISP, a symbol is a name that represents data objects and interestingly it is also a data object.
<beach>
It is accurate, but perhaps not terribly helpful to a newbie.
s-liao has quit [Quit: Client closed]
<lisp123>
It's a tricky definition to get right. I don't think I've ever read a good one
<beach>
lisp123: That site looks pretty bad.
<beach>
Look at "Basic Syntax".
<beach>
"An atom is a number or string of contiguous characters". What???
<lisp123>
Wow! LISP programs are made up of three basic building blocks - atom, list and string.
<beach>
Bad spacing.
<beach>
Yeah. Very bad.
<White_Flame>
anything that still capitalizes LISP is insta-suspect
<beach>
Indeed.
<dbotton>
Beach what creates the symbol main in this case?
<beach>
The reader.
<dbotton>
So defun instructs the reader to create it?
<beach>
No, it is read way before DEFUN sees it.
<beach>
dbotton: Sometimes you write "Lisp" and sometimes "lisp".
<White_Flame>
source code is already made up of lists, symbols, etc before the compiler or evaluator ever sees it
<beach>
dbotton: You say a alot about the REPL. Well, that's what happens. READ first turns all those characters into nested lists with symbols and other atoms at the leaves.
<dbotton>
So how would you simply express in one line the process going from source code to a symbol pointing to code object
<beach>
Well, to begin with symbols don't "point to" anything, and certainly not to a "code object", because there is no such thing. So...
<beach>
READ turns the sequence of characters into a data structure of nested lists and atoms.
aartaka has joined #commonlisp
<beach>
But the rest is very complicated since DEFUN is already a macro.
<beach>
One can perhaps simplify it.
<beach>
Then EVAL looks at the CAR of the resulting list and decides that it is the operator DEFUN. That operator turns the nested list structure into a function and associates that name with the function it creates.
<dbotton>
Ok. I’ll give a try in my morning to rewrite it. Thanks!
<beach>
Sure. I suspect that, since you don't have a clear idea of how the REPL works, you may well introduce similar problems later on.
s-liao has joined #commonlisp
lisp123 has quit [Remote host closed the connection]
semz_ is now known as semz
<dbotton>
I think the issue is how to relate the idea in a simple practical way and still be technically correct.
<beach>
Yes, and that is not an easy thing.
lisp123 has joined #commonlisp
lisp123 has quit [Remote host closed the connection]
lisp123 has joined #commonlisp
admich has joined #commonlisp
Cymew has joined #commonlisp
s-liao78 has joined #commonlisp
<pjb>
lisp123: strings are atoms, and some lists are atoms too!
s-liao has quit [Ping timeout: 256 seconds]
<pjb>
lisp123: there are only two kinds of building blocks: atoms and cons cells.
lisp123 has quit [Remote host closed the connection]
Cymew has quit [Ping timeout: 240 seconds]
epony has quit [Ping timeout: 240 seconds]
epony has joined #commonlisp
Cymew has joined #commonlisp
admich has quit [Remote host closed the connection]
<gin>
Which lists are atoms? I only know NIL.
lisp123 has joined #commonlisp
<edgar-rft>
NIL is the only list you know?
<pjb>
gin: indeed, NIL is the only list which is an atom.
lisp123 has quit [Ping timeout: 240 seconds]
lisp123 has joined #commonlisp
lisp123 has quit [Ping timeout: 256 seconds]
aartaka has quit [Ping timeout: 256 seconds]
aartaka has joined #commonlisp
lisp123 has joined #commonlisp
<lisp123>
pjb: Yeah
<lisp123>
pjb: That site had 3 (atoms, lists and strings)
<lisp123>
Although I start to get where they come from - what they could have said was there were four - numbers, strings, symbols and lists
<lisp123>
Not that that is right, but its another way to look at things
Cymew has quit [Ping timeout: 272 seconds]
<edgar-rft>
in ome very old Lisps strings were lists of characters
<edgar-rft>
but *not* in Common Lisp (what is topic of this channel :-)
aartaka has quit [Read error: Connection reset by peer]
<lisp123>
edgar-rft: as in (e d g a r - r i f t)?
aartaka has joined #commonlisp
<lisp123>
or I guess more likely (string e d g a r - r i f t)
<edgar-rft>
strings were lists of fixnums representing code-points, like Emacs Lisp represents charaters until today
aartaka has quit [Ping timeout: 272 seconds]
frgo has quit [Remote host closed the connection]
frgo has joined #commonlisp
Lord_of_Life has joined #commonlisp
frgo has quit [Remote host closed the connection]
aartaka has joined #commonlisp
shka has joined #commonlisp
aartaka has quit [Ping timeout: 272 seconds]
aartaka has joined #commonlisp
<jackdaniel>
lisp is like love, it is /you/ who gives this word a meaning! ,)
<jackdaniel>
that's why we have so many 'acceptable lisps' around
<edgar-rft>
an how many 'inacceptable lisps' do we have? :-)
<jackdaniel>
common lisp on the other hand is like a dull cube - something is a cube or isn't
<jackdaniel>
ditto, like with love - if you don't like it then it is not acceptable ,_)
<jackdaniel>
the language should be called pl - particular lisp ,p
<jackdaniel>
or "apl", "a particular lisp"
<edgar-rft>
people who don't love love will be inacceptably accepted
* jackdaniel
gasps (and gets back to other thigns)
s-liao78 has quit [Ping timeout: 256 seconds]
lisp123 has quit [Remote host closed the connection]
aartaka has quit [Ping timeout: 272 seconds]
cosimone has joined #commonlisp
aartaka has joined #commonlisp
aartaka has quit [Ping timeout: 272 seconds]
aartaka has joined #commonlisp
s-liao has joined #commonlisp
Dynom has joined #commonlisp
waleee has joined #commonlisp
lisp123 has joined #commonlisp
lisp123 has quit [Ping timeout: 256 seconds]
orestarod has joined #commonlisp
random-nick has joined #commonlisp
s-liao has quit [Ping timeout: 256 seconds]
kpoeck has joined #commonlisp
MajorBiscuit has joined #commonlisp
MajorBiscuit has quit [Ping timeout: 272 seconds]
MajorBiscuit has joined #commonlisp
cage has joined #commonlisp
kpoeck has quit [Quit: Client closed]
aartaka has quit [Ping timeout: 240 seconds]
aartaka has joined #commonlisp
tyson2 has joined #commonlisp
Cymew has joined #commonlisp
waleee has quit [Ping timeout: 252 seconds]
lisp123 has joined #commonlisp
lisp123 has quit [Ping timeout: 240 seconds]
Cymew has quit [Ping timeout: 272 seconds]
yewscion has joined #commonlisp
wyrd has quit [Remote host closed the connection]
wyrd has joined #commonlisp
Brucio-61 has joined #commonlisp
Brucio-61 has quit [Remote host closed the connection]
Brucio-95 has joined #commonlisp
s-liao has joined #commonlisp
Brucio-95 has quit [Remote host closed the connection]
Brucio-95 has joined #commonlisp
Brucio-95 has quit [Remote host closed the connection]
Brucio-95 has joined #commonlisp
Brucio-95 has quit [Remote host closed the connection]
Brucio-95 has joined #commonlisp
Brucio-95 has quit [Client Quit]
Brucio-95 has joined #commonlisp
Brucio-95 has quit [Client Quit]
Brucio-61 has joined #commonlisp
Brucio-61 has quit [Excess Flood]
X-Scale has joined #commonlisp
Brucio-95 has joined #commonlisp
Brucio-95 has quit [Client Quit]
Brucio-61 has joined #commonlisp
aartaka has quit [Ping timeout: 256 seconds]
aartaka has joined #commonlisp
aartaka has quit [Read error: Connection reset by peer]
aartaka has joined #commonlisp
cage has quit [Remote host closed the connection]
cage has joined #commonlisp
Brucio-61 has quit [Ping timeout: 256 seconds]
s-liao has quit [Ping timeout: 256 seconds]
s-liao has joined #commonlisp
Brucio-61 has joined #commonlisp
<beach>
I just uploaded an updated index of SICL papers here: http://metamodular.com/SICL and also the final version of this year's ELS paper. It is final in that it can no longer change, so there is no point in giving me remarks that require modifications to be acted upon.
Brucio-61 has quit [Remote host closed the connection]
s-liao has quit [Quit: Client closed]
aartaka has quit [Ping timeout: 260 seconds]
aartaka has joined #commonlisp
Brucio-61 has joined #commonlisp
psf has quit [Ping timeout: 268 seconds]
psf has joined #commonlisp
Brucio-61 has quit [Remote host closed the connection]
Brucio-61 has joined #commonlisp
Brucio-61 has quit [Remote host closed the connection]
aartaka has quit [Ping timeout: 256 seconds]
aartaka has joined #commonlisp
Oladon has joined #commonlisp
<Xach>
mfiano: is algae still a valid project?
igemnace has joined #commonlisp
<dbotton>
What is the correct way of saying this - "(setf *cool* 123) Now the variable associated with our symbol *cool* contains the number 123."
<pjb>
the variable *cool* is bound to the number 123.
<pjb>
The variable named with the symbol *cool* is bound to the number 123.
<dbotton>
I assume the second version the more technically correct
<dbotton>
thanks!
<Alfr>
dbotton, or rather say, changes value of *cool* to ..
<Alfr>
dbotton, is someone says bind in CL, I involuntarily think that such a binding is introduced, and that isn't the case for setf.
<Alfr>
s/is someone/if someone/
<dbotton>
so the symbol is bound to the variable and the variable's value is 123 is correct?
<dbotton>
I am trying to use the correct lingo, sorry if seems I am being difficult
<Alfr>
dbotton, say *cool* is intended to be a dynamicly bound, e.g. introduced via defvar, defparameter, or let with with a special declaration; then the binding is established by those forms. A subsequent setf would only modify such a binding, not introduce a one.
<dbotton>
If I say (defvar *cool*) and I type in the repl *cool* I get ; Evaluation aborted on #<UNBOUND-VARIABLE *COOL* {1002E3BAA3}>.
<pjb>
dbotton: there's a whole glossary in the CLHS to let you find the right words.
<pjb>
DEFVAR doesn't bind the variable, if it's not given an initial value, or if the variable is already bound.
Everything has joined #commonlisp
<random-nick>
maybe "the value of the binding of the symbol *cool* is changed to 123"
<random-nick>
or something like that
<Xach>
mfiano: actually, i can't update any of your libraries due to an ssl name mismatch
Bike has joined #commonlisp
<beach>
dbotton: No, the symbol is not bound to the variable.
<beach>
dbotton: The symbol is just the name of the variable. Symbols are not bound to anything. They are just objects that serve as the names of other things (among other things).
Oladon has quit [Quit: Leaving.]
frgo has joined #commonlisp
citizenandrew has quit [Quit: Client closed]
waleee has joined #commonlisp
attila_lendvai has joined #commonlisp
aartaka has quit [Ping timeout: 256 seconds]
aartaka has joined #commonlisp
pjb has quit [Read error: Connection reset by peer]
aartaka has quit [Ping timeout: 256 seconds]
aartaka has joined #commonlisp
Everything has quit [Quit: leaving]
MajorBiscuit has quit [Quit: WeeChat 3.4]
nature has joined #commonlisp
tyson2 has quit [Remote host closed the connection]
yewscion has quit [Ping timeout: 272 seconds]
shapr has left #commonlisp [ERC (IRC client for Emacs 27.2)]
tane has joined #commonlisp
tane has joined #commonlisp
tane has quit [Changing host]
Cymew has joined #commonlisp
tyson2 has joined #commonlisp
tyson2 has quit [Read error: Connection reset by peer]
tyson2 has joined #commonlisp
notzmv has quit [Ping timeout: 240 seconds]
Cymew has quit [Ping timeout: 240 seconds]
aartaka has quit [Ping timeout: 256 seconds]
aartaka has joined #commonlisp
dirtcastle has joined #commonlisp
Inline__ is now known as Inline
_73 has joined #commonlisp
akoana has quit [Quit: leaving]
NotThatRPG has joined #commonlisp
aartaka has quit [Ping timeout: 256 seconds]
aartaka has joined #commonlisp
<_73>
The pattern (SETF (SYMBOL-FUNCTION 'FOO) ...) makes a lot of sense when you want to define a lexical closure. Prior to discovering this pattern I would have a function INIT-FOO-CLOSURE that I would use to define a dynamic variable like (DEFPARAMETER *FOO* (INIT-FOO-CLOSURE)). This way the code is much clearer and I don't have to use FUNCALL to use the closure.
kevingal has joined #commonlisp
dirtcastle has quit [Ping timeout: 250 seconds]
mogan90 has quit [Ping timeout: 240 seconds]
vats has joined #commonlisp
dirtcastle has joined #commonlisp
lispy has joined #commonlisp
dirtcastle has quit [Ping timeout: 240 seconds]
mogan90 has joined #commonlisp
dirtcastle has joined #commonlisp
dirtcastle has quit [Client Quit]
vats has quit [Ping timeout: 256 seconds]
Oladon has joined #commonlisp
lisp123 has joined #commonlisp
lisp123 has quit [Ping timeout: 256 seconds]
eddof13 has joined #commonlisp
<gin>
Why does PROGN exist? Isn't LAMBDA sufficient where we normally use PROGN?
pjb has joined #commonlisp
<ck_>
well, many things are superfluous if you have lambda already, but would you like to program in such a restriction?
<dbotton>
lambda would be fairly restrictive without the implicit progn
<dbotton>
A better question is what something adds to a language, not why it exists.
<dbotton>
Sometimes it is convenience, sometimes optimizations, etc.
<gjvc>
anyone here used ecl and got any thoughts / verdict ?
<dbotton>
I love it.
<dbotton>
So I think on opinion alone you are good to go. Create something amazing :)
<jackdaniel>
on one hand it produces slower machine code for portable cl than sbcl and ccl, on the other hand it has much smaller memory footprint and is more portable
<jackdaniel>
it is possible to link other applications with libecl.so and incorporate common lisp in your average C runtime
<jackdaniel>
also inlining C code in CL functions comes handy at times (both for optimization and for integration purposes)
<NotThatRPG>
givc: In my experience, it's prohibitively slow.
<NotThatRPG>
Also for development I hate the compile-to-C model for interactive development.
<jackdaniel>
NotThatRPG: under some particular workload or is this a general remark?
tyson2 has quit [Remote host closed the connection]
knusbaum has quit [Ping timeout: 256 seconds]
<_73>
How would you reccomend structuring a lambda-list/parsing the arguments for a macro that allows an optional docstring as an argument in the middle of the argument list? For example (DEFMACRO MY/DEFUN (NAME DOC &body BODY) `(DEFUN ,NAME ,DOC ,@BODY)) does not work if you omit the DOC argument.
<jackdaniel>
gjvc: if you decide to use ecl and hit some problems that are specific to this implementation you may ask on the channel #ecl
<NotThatRPG>
Most things I do involve pretty substantial computation, often needing tail recursion optimization and I like incremental compilation, neither
<Alfr>
_73, you may want to use alexandria:parse-body .
Cymew has joined #commonlisp
<_73>
Alfr: ok Ill look at this. I am using Alexandria in my project already as well.
<gjvc>
dbotton excellent!
<gjvc>
NotThatRPG damn, sucks
<jackdaniel>
NotThatRPG: afaik ecl slow points are gf dispatch (so clos in general), lack of type inference (there is type propagation though) and slow compilation
<jackdaniel>
gf dispatch is being addressed. that said when there are proper tail calls ecl makes it possible for the c compiler to optimize that
eddof13 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<jackdaniel>
(and number crunching for properly declared types and speed declarations is quite fast)
<jackdaniel>
I'm sorry that you had such poor experience with it
<jackdaniel>
s/sorry/sorry to hear/
<NotThatRPG>
I should try again. For the SHOP3 project, we gave up testing because it was prohibitively slow.
santiagopim[m] has joined #commonlisp
Lord_of_Life_ has joined #commonlisp
Lord_of_Life has quit [Ping timeout: 272 seconds]
Lord_of_Life_ is now known as Lord_of_Life
sbodin has joined #commonlisp
cage has quit [Quit: rcirc on GNU Emacs 27.1]
tyson2 has joined #commonlisp
igemnace has quit [Ping timeout: 272 seconds]
Maxc4m has joined #commonlisp
cjb has joined #commonlisp
igemnace has joined #commonlisp
notzmv has joined #commonlisp
Cymew has quit [Ping timeout: 256 seconds]
Maxc4m has quit [Quit: Maxc4m]
aartaka has quit [Ping timeout: 240 seconds]
aartaka has joined #commonlisp
tane has quit [Quit: Leaving]
jrx has joined #commonlisp
aartaka has quit [Ping timeout: 240 seconds]
Dynom has quit [Quit: WeeChat 3.4]
eddof13 has joined #commonlisp
jrx has quit [Quit: ERC (IRC client for Emacs 27.2)]
eddof13 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
wyrd has quit [Ping timeout: 240 seconds]
wyrd has joined #commonlisp
mogan90 has quit [Ping timeout: 240 seconds]
pilipilihoho has joined #commonlisp
pilipilihoho has quit [Client Quit]
mogan90 has joined #commonlisp
eddof13 has joined #commonlisp
eddof13 has quit [Client Quit]
tyson2 has quit [Remote host closed the connection]
knusbaum has joined #commonlisp
VincentVega has joined #commonlisp
VincentV` has joined #commonlisp
VincentVega has quit [Ping timeout: 272 seconds]
<VincentV`>
Hi! Why is (subtypep '(simple-array (signed-byte 8)) '(simple-array signed-byte)) NIL, T? (subtypep '(signed-byte 8) 'signed-byte) yields T, T.
notzmv has quit [Ping timeout: 268 seconds]
mogan90 has quit [Ping timeout: 240 seconds]
Oladon has quit [Quit: Leaving.]
pillton has joined #commonlisp
Oladon has joined #commonlisp
cosimone has quit [Quit: ERC (IRC client for Emacs 27.1)]
lispy has quit [Ping timeout: 250 seconds]
lispy has joined #commonlisp
euandreh has quit [Ping timeout: 250 seconds]
euandreh has joined #commonlisp
Oladon has quit [Read error: Connection reset by peer]
Oladon has joined #commonlisp
euandreh has quit [Ping timeout: 250 seconds]
tyson2 has joined #commonlisp
euandreh has joined #commonlisp
eddof13 has joined #commonlisp
Bike has quit [Quit: Lost terminal]
random-nick has quit [Ping timeout: 240 seconds]
eddof13 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
igemnace has quit [Remote host closed the connection]