00:02 (quit) francisl: Quit: francisl 00:08 (quit) spiderweb: Quit: ERC Version 5.3 (IRC client for Emacs) 00:13 (join) ambrosebs 00:14 mithos28: What is the difference between raco test -s main file.rkt and racket -e "(require (submod \"compiler.rkt\" main))" 00:15 (quit) dnolen: Ping timeout: 252 seconds 00:19 mithos28: And the answer is heap pressure causing a garbage collection invalidating my callback 00:29 (join) vu3rdd 00:29 (quit) vu3rdd: Changing host 00:29 (join) vu3rdd 00:41 (join) neilv 00:42 (quit) hash_table: Ping timeout: 244 seconds 00:45 (join) mye 00:47 mithos28: http://docs.racket-lang.org/raco/make.html?q=with-out&q=command-line#(def._((lib._setup/parallel-build..rkt)._parallel-compile-files)) 00:48 mithos28: No where in that documentation does it say that that function will call exit if there is an error 00:51 (join) sw2wolf 00:52 (part) sw2wolf: "ERC Version 5.3 (IRC client for Emacs)" 00:52 (quit) ambrosebs: Ping timeout: 252 seconds 01:21 (quit) mye: Quit: mye 02:07 (join) jeapostrophe 02:07 (quit) jeapostrophe: Changing host 02:07 (join) jeapostrophe 02:29 (quit) Twey: *.net *.split 02:37 (join) Twey 02:40 (quit) neilv: Quit: Leaving 02:47 ozzloy: is there a way i can do "raco test file.rkt" and have the (module+ test ...) stuff in "file-test.rkt" ? 02:48 mithos28: thats not how test works 02:48 ozzloy: and "raco test file.rkt" still runs those tests? 02:48 ozzloy: i'm glad you're up! 02:48 mithos28: just have file.rkt have (module+ test (require "test.rkt")) 02:49 mithos28: Its not even midnight yet 02:49 ozzloy tries that 02:51 ozzloy: yeah, that's what i thought. test.rkt can't see the stuff from file.rkt 02:51 ozzloy: and i could have test.rkt require file.rkt 02:51 ozzloy: but then i'd have to (provide (all-defined-out)) 02:51 ozzloy: in file.rkt 02:51 mithos28: Oh do you not want file-test.rkt to be a module 02:52 mithos28: if you don't put a #lang line in file-test.rkt you can use include instead of require 02:52 ozzloy: i'm not sure what i want 02:52 ozzloy: maybe that's what i want 02:52 ozzloy tries 02:54 ozzloy: mithos28, that is what i want! 02:54 ozzloy: now i can put all my tests in some other file, but still do "raco test file.rkt" and everything will work nicely 02:54 mithos28: Why do you want the tests in a different file? 02:55 ozzloy: i have a lot of tests 02:55 mithos28: reasonable answer 02:55 ozzloy: i'm using lex/yacc 02:55 ozzloy: and there's a lot of test cases to cover very small amounts of actual code 02:56 ozzloy: i also suspect i could make my tests smaller 02:56 ozzloy: there's a lot of repeated stuff in each of the tests 02:56 ozzloy: it seems like i want macros, but i'm not confident enough in them to do that yet 02:58 ozzloy: hm... 03:00 ozzloy: http://pastebin.ca/2293772 mithos28 care to make suggestions? 03:01 mithos28: Well first use check-equal? and check-not-equal? instead of check-true (equal? 03:02 ozzloy: i would, but i have to use my own position-token-equal? 03:02 ozzloy: because position-tokens don't compare 03:02 mithos28: What are position-tokens? 03:02 ozzloy: i use check-equal? when i can though 03:03 ozzloy: they're a struct with a symbol, line, column, and offset 03:03 mithos28: Did you define them or did someone else? 03:03 (quit) jonrafkind: Ping timeout: 246 seconds 03:04 ozzloy: someone else. http://docs.racket-lang.org/parser-tools/Lexers.html 03:04 ozzloy: they're actually a symbol, start-pos and end-pos 03:04 mithos28: And whats wrong with equal method? 03:04 ozzloy: and start-pos and end-pos are position structs, which have line, col, offset 03:05 ozzloy: rudybot, init 03:05 rudybot: ozzloy: your sandbox is ready 03:05 ozzloy: rudybot, (require parser-tools/lex) 03:05 rudybot: ozzloy: Done. 03:05 ozzloy: (require rackunit) 03:05 ozzloy: rudybot, (require rackunit) 03:05 rudybot: ozzloy: Done. 03:05 mithos28: If they don't compare equal that is likely a bug 03:06 ozzloy: rudybot, (define a-start (make-position 0 0 0)) 03:06 rudybot: ozzloy: Done. 03:07 ozzloy: rudybot, (define a-end (make-position 0 0 0)) 03:07 rudybot: ozzloy: Done. 03:07 mithos28: You have a lot of tests which are the same setup work, you should abstract that out 03:07 ozzloy: this is taking more time than i thought, i'll write a simple thing and pastebin it 03:08 mithos28: I understand the issue 03:08 mithos28: Its a bug 03:08 ozzloy: oh cool 03:08 ozzloy: cuz that would be really awesome to use check-equal? 03:09 mithos28: You should write a function tokenize-vtjson-string that opens it up, counts lines, and calls tokenize-vtjson 03:09 ozzloy: oh genius 03:11 (join) asvil 03:11 mithos28: If for many of the examples you are not going to be using more than 1 column for the positions than you should find a way to not have to say column 1 03:12 asvil: Hi all, are there owners of Windows with more than one cores? Do stable racket releases work for you? 03:12 mithos28: column -> row 03:12 mithos28: asvil: Sorry, don't use Windows 03:12 mithos28: ozzloy: Also automatically compute offset 03:13 mithos28: Until the fix goes in, you should write a check-position-equal? and a check-position-not-equal? 03:15 (quit) myx: Quit: ัƒัˆั‘ะป 03:16 ozzloy: mithos28, i wrote a position-equal? and position-token-equal?, are they good starting points for fixing the problem? 03:16 ozzloy: i'd like to write a patch like that 03:17 ozzloy: i've submitted a few doc spelling fixes, but never actual code 03:18 mithos28: ozzloy: Maybe, but the fix may be to just add a transparent on the struct definition 03:18 ozzloy: mithos28, i was wondering if it would be that, or if there was a reason to keep it ... opaque? and to write a struct compare method thing 03:19 mithos28: idk 03:19 ozzloy: there's a way to attach a "this is how to check if i'm equal?" to structs, rigth? 03:19 ozzloy: right* 03:21 ozzloy: so i guess that's over my head for now 03:21 ozzloy: i'm not sure what you mean by "you are not going to be using more than 1 column for the positions" 03:21 mithos28: column->row 03:22 mithos28: in all your examples you only have on row 03:22 mithos28: so make it easy to write that case out 03:23 (quit) zuurr: Quit: computer sleeping 03:24 (join) soegaard 03:24 ozzloy: mithos28, you mean all of my lexed text is only 1 line? 03:25 ozzloy: so i could eliminate that part? 03:25 mithos28: in your test cases yes 03:25 mithos28: have a helper which always fills in the row as 0/1 03:25 ozzloy: yeah, that's a good idea 03:26 ozzloy: even if i did add multiple lines, i could do it the long way for those 03:29 ozzloy: mithos28, thanks! 03:29 ozzloy: mithos28, are you going to file a bug report, or should i? 03:30 mithos28: you should, I'm about to head to bed 03:30 ozzloy: heh, me too actually 03:30 ozzloy: i'll fill one out tomorrow. i'll write up a minimal test case too 03:30 ozzloy: thanks again, and goodnight 03:50 (quit) mithos28: Quit: mithos28 03:51 (quit) karswell_: Remote host closed the connection 04:01 (join) karswell_ 04:05 (quit) jackhammer2022: Quit: Textual IRC Client: http://www.textualapp.com/ 04:11 (quit) karswell_: Remote host closed the connection 04:12 (quit) jeapostrophe: Ping timeout: 260 seconds 04:21 (join) karswell_ 04:57 (join) bitonic 05:53 (join) cdidd 06:02 (join) errstr 06:19 (join) nathanpc 06:22 (nick) otterdam -> mrsotterdam 06:22 (quit) karswell_: Remote host closed the connection 06:24 (join) MayDaniel 06:30 (join) bjz 06:32 (join) karswell_ 07:26 (quit) bitonic: Ping timeout: 256 seconds 07:27 (join) kofno 07:29 (join) jao 07:29 (quit) jao: Changing host 07:29 (join) jao 07:38 (quit) soegaard: Quit: soegaard 08:34 (join) masm 08:37 (quit) karswell_: Remote host closed the connection 08:38 (join) mizu_no_oto 08:42 (join) Blkt 08:47 (quit) kofno: Remote host closed the connection 08:47 (join) karswell_ 09:05 (quit) karswell_: Remote host closed the connection 09:15 (join) karswell_ 09:19 (join) mye 09:21 blubberdiblub: is there something in Racket's library that can represent ranges/intervals? in particular, i'm looking for something that has a lower bound and an upper bound, with the lower bound being at least a fixnum and the upper bound at least a fixnum or infinity. Sequences are no good match, since I don't need the individual members, need to extract the lower and upper bound as easily as possible and need to do an intersection between ranges/intervals. d 09:21 blubberdiblub: o i need to implement that myself? 09:35 greghendershott: blubberdiblub: Maybe data/interval-map ? http://docs.racket-lang.org/data/interval-map.html 09:36 greghendershott: I haven't tried it, just recalled having seen it in the docs and went looking for it now. 09:43 blubberdiblub: greghendershott, thanks, but it looks like it has a completely different purpose. i don't need any mapping functionality. it also needs to be continuous and really needs a way to represent an infinite upper bound 09:50 greghendershott: blubberdiblub: Oh OK. So you want something like (struct from upto) but you were hoping not to write the intersection yourself? 09:50 blubberdiblub: greghendershott, the intersection and infinity handling, yes 09:50 (join) masm1 09:50 (quit) mye: Quit: mye 09:51 (quit) masm: Ping timeout: 256 seconds 09:52 (quit) mizu_no_oto: Quit: Computer has gone to sleep. 09:52 blubberdiblub: greghendershott, anyway, i could write it myself. i should probably read the guide on modules first, tho 09:53 greghendershott: blubberdiblub: I think so. BTW there is a +inf.0 constant. Just keep in mind it's float not integer, in case that matters. 09:54 (join) kofno 09:54 blubberdiblub: greghendershott, yes, thanks, i'm aware of that, tho ;) i think i prefer something like 'inf or 'infinity for my case 10:00 (join) mye 10:03 (quit) masm1: Ping timeout: 245 seconds 10:08 (join) soegaard 10:17 (join) masm 10:21 (quit) karswell_: Remote host closed the connection 10:26 (quit) masm: Ping timeout: 248 seconds 10:28 (join) zyoung 10:31 (join) karswell_ 10:43 (join) spiderweb 10:55 (join) jeapostrophe 11:10 (join) mizu_no_oto 11:13 (quit) karswell_: Remote host closed the connection 11:15 (quit) mizu_no_oto: Ping timeout: 248 seconds 11:19 (quit) Nisstyre: Quit: Leaving 11:22 (quit) jao: Ping timeout: 245 seconds 11:23 (join) karswell_ 11:51 (join) masm 11:52 (quit) karswell_: Remote host closed the connection 11:55 (join) hash_table 11:57 Haffe: Hmmm. 11:57 Haffe: It sounds like intervall arithmetic. 12:00 (join) anRch 12:02 (join) mithos28 12:03 (join) karswell_ 12:04 (quit) soegaard: Quit: soegaard 12:13 (join) soegaard 12:16 (quit) spiderweb: Quit: ERC Version 5.3 (IRC client for Emacs) 12:17 (quit) jeapostrophe: Ping timeout: 260 seconds 12:33 (quit) anRch: Quit: anRch 12:34 (quit) karswell_: Read error: Connection reset by peer 12:44 (join) karswell_ 12:47 (quit) karswell_: Remote host closed the connection 12:47 (join) anRch 12:49 (quit) masm: Ping timeout: 255 seconds 12:52 (join) mizu_no_oto 12:59 (join) karswell 13:42 (quit) mithos28: Quit: mithos28 13:42 (join) masm 13:42 (quit) soegaard: Quit: soegaard 13:45 (quit) anRch: Quit: anRch 13:52 (join) soegaard 14:06 (join) Nisstyre-laptop 14:12 (quit) kofno: Ping timeout: 245 seconds 14:16 (join) kofno 14:17 (join) jao 14:17 (quit) jao: Changing host 14:17 (join) jao 14:21 (quit) mye: Quit: mye 14:32 (join) netrino 14:36 (quit) kofno: Remote host closed the connection 14:37 (join) nejucomo 14:44 (join) mithos28 14:52 (quit) mizu_no_oto: Quit: ["Textual IRC Client: www.textualapp.com"] 14:52 (join) kofno 14:58 (quit) dca: Ping timeout: 255 seconds 15:01 (join) dca 15:01 (join) francisl 15:03 (quit) mithos28: Quit: mithos28 15:04 (quit) francisl: Client Quit 15:13 (quit) kofno: Remote host closed the connection 15:14 (join) h11r 15:27 (quit) soegaard: Quit: soegaard 15:28 h11r: Hi, I've got a quick question about polymorphism and racket. Some time ago I asked myself if it is possible to extend racket datatypes in the way you can extend classes in CLOS by adding a dynamically dispatched method outside of the data-types definition. The intend is to extend an existing type (struct, class or whatever) by an additional interface. Someone gave me the link to the really interesting paper ' Modular Object-Oriented Programming wit 15:29 (join) francisl 15:31 offby1: Did you really describe that as a "quick" question? 15:31 offby1: yes, you did 15:31 h11r: :D 15:32 h11r: Depends on the answer ;) 15:34 (join) soegaard 15:35 h11r: I ask because by this feature of CLOS Common lisp allows to extend the base system in a rather easy way and racket with its emphasize on language design seems like a candidate for a similar feature. But I didn't find one yet and I'm about to decide whether to use CL, Clojure or Racket for my next project. So I may have missed something 15:38 soegaard: h11r: Are you looking for something like this? http://docs.racket-lang.org/reference/struct-generics.html 15:45 h11r: Yes, in principle. But I have to define the methods for the struct inside the struct definitions, am I right? So I tried something like (struct () #:super struct: #:methods ... ) to override the original definition by a struct definition that implements the new interface. But racket/set seems not to export the struct-id (It fails with 'struct:set: undefined;' at least). Is there another way to use the generics for this pu 15:45 h11r: I'll be back in about 15 minutes because now is my last chance to get some food for the weekend ;) 15:46 (quit) francisl: Quit: francisl 16:05 h11r: So, I'm back. Any Ideas :) ? 16:11 (quit) hash_table: Ping timeout: 255 seconds 16:12 (join) zuurr 16:13 (join) RacketCommitBot 16:13 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/TJfczA 16:13 RacketCommitBot: racket/master 0b09538 Robby Findler: improve the performance of typing a close paren 16:13 (part) RacketCommitBot 16:17 soegaard: h11r: Try asking your question on the mailing list. 16:23 h11r: soegaard: Yes, I'll give it a try. And thanks anyway. 16:26 h11r: soegaard: But maybe you can tell me if there is a way to get the type of an object in form of a symbol or identifier so that I can build some kind of dispatch table on my own. I know the predicates but ids could come in handy in this case. 16:27 soegaard: Maybe http://docs.racket-lang.org/reference/inspectors.html?q=describ#(def._((quote._~23~25kernel)._object-name)) 16:27 soegaard: ? 16:29 soegaard: If you are working with structs, then see: http://docs.racket-lang.org/reference/structprops.html?q=struct&q=struct&q=describ 16:29 rudybot: http://tinyurl.com/cog7b2r 16:29 (join) dyoo 16:32 (join) dzhus 16:34 h11r: Yes, but either I don't get the inspectors or they have the same problem as my struct-replace approach: The racket primitives seem to not provide these. 16:34 h11r: The structure type properties seem promising and I'll take a look at them. Thanks for the tip. 16:37 dyoo: h11r: can you use struct-info to get at this information? 16:37 dyoo: Let me see if I can code up an example... 16:41 (join) bitonic 16:41 h11r: (struct-info (set 'a 'b)) returns #f 16:43 soegaard: rudybot: (struct? (set 'a 'b)) 16:43 rudybot: soegaard: your sandbox is ready 16:43 rudybot: soegaard: ; Value: #f 16:43 soegaard: Sets are not represented as structs. 16:44 dyoo: h11r: here's a small example of struct-info: https://gist.github.com/4299528 16:44 (join) mizu_no_oto 16:45 dyoo: The thing is that the reflective API will not open up the abstraction unless it's allowed to, either with the structs being transparent, or the current inspector having high enough authority to look. 16:49 (quit) nejucomo: Ping timeout: 276 seconds 16:51 dyoo: h11r: here's another example that explicitly plays with inspectors: https://gist.github.com/4299589 16:52 h11r: oh. I didn't realize that define-struct does not define a struct? ... But this kind of illustrates the whole issue. With all this different ways of representing data it seems really difficult to implement an efficient displatch mechanism. 16:52 h11r: And thanks for the examples. 16:53 soegaard: ? define-struct does define structs. 16:53 soegaard: It just happens that sets are implemented in C. 16:53 soegaard: I think. 16:53 h11r: (define-struct a ()) 16:53 h11r: (struct? (make-a)) => #f 16:55 soegaard: huh? 16:56 dyoo: soegaard: struct? is poorly named. It's a predicate that returns true if the value is inspectable via struct-info. 16:56 soegaard: Okay. 16:58 soegaard: rudybot: (define-struct a() #:transparent) (struct? (make-a)) 16:58 rudybot: soegaard: (struct? (make-a)) => #f 16:58 dyoo: rudybot: (define insp (current-inspector)) 16:58 rudybot: dyoo: your sandbox is ready 16:58 rudybot: dyoo: Done. 16:59 dyoo: rudybot: (define child-insp (make-inspector insp)) 16:59 rudybot: dyoo: Done. 16:59 soegaard: Fwiw that evaluated to #t in DrRacket. 16:59 bartbes: it does? 16:59 dyoo: rudybot: (current-inspector child-insp) 16:59 rudybot: dyoo: Done. 17:00 bartbes: oh, toy mean the transparent one? 17:00 bartbes: *you 17:00 soegaard: yes 17:00 dyoo: rudybot: (define-struct a ()) 17:00 rudybot: dyoo: Done. 17:00 dyoo: rudybot: (struct? (make-a)) 17:00 rudybot: dyoo: ; Value: #f 17:00 dyoo: rudybot: (current-inspector insp) 17:00 rudybot: dyoo: Done. 17:00 dyoo: rudybot: (struct? (make-a)) 17:00 rudybot: dyoo: ; Value: #t 17:01 (quit) bitonic: Ping timeout: 264 seconds 17:01 dyoo: DrRacket has to be doing something with inspectors to make the results different from base Racket. 17:02 bartbes: the transparent one worked for me in the cli 17:03 (join) anRch 17:08 h11r: I mean you could wrap all the primitives in tagged types (like lists) as they do in the generic programming examples in sicp, but this is a lot of work that you may have to do for every project your on. And since this idea is not too exotic compared to the other ideas in racket, i thought there would be a build in way. But i discovered the multimethods planet package and I am reading the docs at the moment. This could be a solution for the problem. 17:11 dyoo: h11r: yeah. As far as I know, things that dispatch in Racket have a structure like the following: handle the base types via explicit case analysis, and expose a general protocol for hooking into the dispatch. e.g. the serialization protocol http://docs.racket-lang.org/reference/serialization.html explicitly knows how to handle base Racket types, with a hook (serializable-struct) to extend the dispatch. 17:13 (join) jackhammer2022 17:14 (join) kofno 17:16 (join) Rajah 17:16 (quit) Rajah: Client Quit 17:16 (join) Rajah 17:19 h11r: I wonder how much effort it would be to build some kind of generic type function that words on all objects (lisp objects not object-system objects) and returns a id that can be ordered. Than you could build some dispatch mechanism using balanced trees that would perform well. At the moment an idea would be to store the predicates in the dispatch table but than you would have to try all predicates in sequence until one succeeds. 17:21 h11r: I mean the system should require such type info anyway. 17:22 dyoo: h11r: I suspect we can do this, but we have to be willing to break abstractions. It should all be technically accessible http://docs.racket-lang.org/inside/im_values_types.html , using the FFI 17:30 (quit) soegaard: Quit: soegaard 17:30 (join) bitonic 17:30 h11r: Using the FFI for this kind of thing seems a bit brittle. But if this gives a neat solution and the solution would be integrated into standard racket than i suppose it would work. The question is how well you can incorporate user defined structs into this solution. 17:33 (join) Kiloneie 17:33 Kiloneie: hi 17:35 Kiloneie: Anyone here ? 17:36 (quit) bitonic: Ping timeout: 264 seconds 17:36 (join) nejucomo 17:37 Kiloneie: hi 17:39 h11r: Hi 17:42 h11r: dyoo: The multimethod package is kind of useful but also has the problem with getting the type of an object. The solution in the package is that you have to pass the multimethod an signature-generator, a procedure that retrieves the types/signatures of the passed objects. And I can't come up with an implementation for this signature generator that isn't a single big cond expression => slow and cumbersome. 17:42 h11r: But I'll give it a rest and think about it. Maybe someone on the mailing list has an idea. 17:43 h11r: So, good night and thanks for your help and opinion. 17:43 h11r: Bye. 17:43 dyoo: h11r: yeah. I suspect Asumu and the others have been thinking about this, with regards to generics 17:43 dyoo: good luck! 17:43 h11r: Thanks :) 17:44 (join) soegaard 17:48 (quit) h11r: Ping timeout: 264 seconds 18:13 (quit) anRch: Quit: anRch 18:15 (quit) dyoo: Quit: dyoo 18:17 (quit) masm: Ping timeout: 255 seconds 18:21 (quit) MayDaniel: Read error: Connection reset by peer 18:26 (join) francisl 18:28 Kiloneie: Why does noone talk here ? 18:30 jao prefers to whistle and sing 18:30 Kiloneie: o.O 18:30 Kiloneie: O.o 18:30 Kiloneie: O.O 18:31 (quit) Kiloneie: Quit: Page closed 18:31 (quit) francisl: Quit: francisl 18:33 (join) neilv 18:33 (quit) dzhus: Remote host closed the connection 18:37 (join) francisl 18:39 (join) masm 18:40 (quit) Rajah: Remote host closed the connection 18:41 (quit) mizu_no_oto: Quit: Computer has gone to sleep. 18:41 (join) spiderweb 18:47 (quit) soegaard: Quit: soegaard 18:52 (join) masm1 18:54 (quit) masm: Ping timeout: 248 seconds 19:07 (quit) Blkt: Read error: Connection reset by peer 19:15 (quit) francisl: Quit: francisl 19:19 (join) jonrafkind 19:41 (quit) cdidd: Remote host closed the connection 19:53 (quit) masm1: Quit: Leaving. 20:00 (join) dnolen 20:13 spiderweb: what is the name of racket's init file? 20:18 spiderweb: .racketrc 20:41 (join) mizu_no_oto 21:04 (quit) neilv: Quit: Leaving 21:06 (quit) spiderweb: Ping timeout: 256 seconds 21:16 (quit) mizu_no_oto: Quit: Computer has gone to sleep. 21:18 (join) mizu_no_oto 21:21 (join) sw2wolf 21:28 (quit) netrino: Quit: Ave! 21:38 (quit) jackhammer2022: Ping timeout: 245 seconds 21:41 (quit) mizu_no_oto: Quit: Computer has gone to sleep. 22:00 (join) jackhammer2022 22:02 (quit) nathanpc: Quit: Computer has gone to sleep. 22:07 (quit) nejucomo: Ping timeout: 276 seconds 22:11 (quit) jackhammer2022: Ping timeout: 245 seconds 22:12 (part) sw2wolf: "ERC Version 5.3 (IRC client for Emacs)" 22:16 (join) gcr` 22:16 gcr`: So if I do (define-cstruct _Name ()), the blank cstruct makes racket spit out the cryptic "internal error: ffi_prep_cif did not return FFI_OK" 22:16 gcr`: just letting others know in case they run into that 22:19 (join) ambrosebs 22:22 (quit) Demosthenex: Ping timeout: 244 seconds 22:24 (join) Demosthenex 22:37 (join) nathanpc 22:40 (join) jackhammer2022 22:44 (quit) nathanpc: Quit: Computer has gone to sleep. 22:49 (quit) jackhammer2022: Ping timeout: 264 seconds 22:54 (join) jackhammer2022 22:58 (quit) Shviller: Ping timeout: 245 seconds 22:59 (join) Shviller 22:59 (join) mizu_no_oto 23:07 (quit) mizu_no_oto: Quit: Computer has gone to sleep. 23:26 (join) spiderweb 23:38 (quit) kofno: Read error: Connection reset by peer 23:41 (join) kofno 23:50 (quit) spiderweb: Quit: ERC Version 5.3 (IRC client for Emacs)