jhass changed the topic of #crystal-lang to: The Crystal programming language | http://crystal-lang.org | Crystal 0.7.7 | Fund Crystals development: http://is.gd/X7PRtI | Paste > 3 lines of text to https://gist.github.com | GH: https://github.com/manastech/crystal | Docs: http://crystal-lang.org/docs/ | API: http://crystal-lang.org/api/ | Logs: http://irclog.whitequark.org/crystal-lang
jeromegn has joined #crystal-lang
<jeromegn> BlaXpirit: so you're saying there are no easy way to represent a Float64 as little-endian in bytes
<jokke> jhass: can you explain "record" to me?
<jokke> i couldn't find any docs for it
<jokke> you use it as a wrapper in the html headers
<willl> "The standard library provides a useful `record` macro that allows you to create immutable structs with some fields, similar to a `Tuple` but using names instead of indices."
<crystal-gh> [crystal] will opened pull request #1466: add Class#cast macro for runtime "as" casting (master...as-cast) http://git.io/vZXLC
leafybasil has quit [Remote host closed the connection]
NeverDie_ has joined #crystal-lang
Raimondi has joined #crystal-lang
leafybasil has joined #crystal-lang
[spoiler] has quit [Ping timeout: 268 seconds]
[spoiler] has joined #crystal-lang
Neverdie has quit [Ping timeout: 255 seconds]
leafybasil has quit [Ping timeout: 240 seconds]
havenwood has joined #crystal-lang
jeromegn has quit [Ping timeout: 255 seconds]
qard has joined #crystal-lang
leafybasil has joined #crystal-lang
leafybasil has quit [Ping timeout: 264 seconds]
NeverDie_ has quit [Quit: http://radiux.io/]
wonderbread_ has joined #crystal-lang
wonderbreadz has quit [Ping timeout: 268 seconds]
wonderbread_ is now known as wonderbreadz
qard has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
qard has joined #crystal-lang
qard has quit [Client Quit]
kulelu88 has quit [Quit: Leaving]
trapped has joined #crystal-lang
trapped has quit [Read error: Connection reset by peer]
dyulax93 has quit [Read error: Connection reset by peer]
dyulax93 has joined #crystal-lang
nakilon has joined #crystal-lang
BlaXpirit has joined #crystal-lang
havenwood has quit [Quit: Textual IRC Client: www.textualapp.com]
nakilon has quit [Ping timeout: 265 seconds]
Ven has joined #crystal-lang
nakilon has joined #crystal-lang
leafybasil has joined #crystal-lang
<crystal-gh> [crystal] ysbaddaden closed pull request #1459: HTTP::Headers: Preserve input case, indifferent access between - and _ (master...headers_compare) http://git.io/vZKJ5
leafybasil has quit [Ping timeout: 246 seconds]
<jhass> jokke: it's basically Ruby's Struct.new
<travis-ci> manastech/crystal#4d06e20 (master - Merge pull request #1459 from jhass/headers_compare): The build passed. https://travis-ci.org/manastech/crystal/builds/80194890
elia has joined #crystal-lang
<jokke> yess, the pr is merged!
leafybasil has joined #crystal-lang
leafybasil has quit [Ping timeout: 240 seconds]
Ven has quit [Ping timeout: 260 seconds]
leafybasil has joined #crystal-lang
Veejay has left #crystal-lang ["WeeChat 0.4.2"]
<dzv> is it possible to receive from a channel with a timeout?
<crystal-gh> [crystal] technorama opened pull request #1468: Inherit write buffer setting on new socket in Socket.accept. (master...f/http_server_enhancements) http://git.io/vZ1EX
elia has quit [Quit: (IRC Client: textualapp.com)]
elia has joined #crystal-lang
maxdeviant has quit [Ping timeout: 246 seconds]
<crystal-gh> [crystal] jhass opened pull request #1469: Correctly handle signal exits in crystal run (master...fix_run_signal_handling) http://git.io/vZ1yG
Ven has joined #crystal-lang
jeromegn has joined #crystal-lang
Neverdie has joined #crystal-lang
<crystal-gh> [crystal] jhass closed pull request #1468: Inherit write buffer setting on new socket in Socket.accept. (master...f/http_server_enhancements) http://git.io/vZ1EX
ssvb has quit [Ping timeout: 246 seconds]
<travis-ci> manastech/crystal#42efa7b (master - Report signal in signal handler error message.): The build passed. https://travis-ci.org/manastech/crystal/builds/80223395
<jeromegn> hmm, one cannot inherit from a struct? or is the syntax different? the docs seems to say it's possible
<jeromegn> Error in ./src/bson/undefined.cr:2: Nil is not a class, it's a struct
<jeromegn> struct Undefined < Nil
<jeromegn> ahh
trapped has joined #crystal-lang
Ven has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
Ven has joined #crystal-lang
<crystal-gh> [crystal] ysbaddaden closed pull request #1442: Logger: Flush log messages. (master...f/logger_flush) http://git.io/vZ0Ga
<travis-ci> manastech/crystal#5b98c56 (master - Merge pull request #1442 from technorama/f/logger_flush): The build passed. https://travis-ci.org/manastech/crystal/builds/80236584
<crystal-gh> [crystal] technorama opened pull request #1470: Add Number.clamp. (master...f/range_clamp) http://git.io/vZM0U
Neverdie has quit [Quit: http://radiux.io/]
Ven has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
Ven has joined #crystal-lang
<dzv> can macros conditionals be used on the type of method argument? http://carc.in/#/r/f8v
<crystal-gh> [crystal] asterite pushed 2 new commits to master: http://git.io/vZM6G
<crystal-gh> crystal/master 5bd2d12 Ary Borenszweig: Small fix in docs for `Number.[]`
<crystal-gh> crystal/master f118da0 Ary Borenszweig: Disallow dynamic constant assignments inside expressions (if, while, etc.) and blocks
nakilon has quit [Ping timeout: 268 seconds]
<travis-ci> manastech/crystal#f118da0 (master - Disallow dynamic constant assignments inside expressions (if, while, etc.) and blocks): The build passed. https://travis-ci.org/manastech/crystal/builds/80244549
Ven has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
tomchapin has joined #crystal-lang
Neverdie has joined #crystal-lang
Ven has joined #crystal-lang
nakilon has joined #crystal-lang
<jhass> dzv: I don't see a way
ssvb has joined #crystal-lang
<dzv> class C(T); include Iterable; end; Is there a way to get at T within a macro defined in Iterable?
Neverdie has quit [Quit: http://radiux.io/]
<jhass> http://carc.in/#/r/fa8 but I wouldn't recommend that at all. If a module depends on a type var it should be explicitly forwarded, like Enumerable does for instance
Regexident has joined #crystal-lang
<dzv> i'm reluctant to require a type for Iterable.
Neverdie has joined #crystal-lang
<dzv> unless you think the change would be approved
<jhass> better than assuming the type var has a special name
<jhass> implicit coupling is worse than explicit coupling
<jhass> if you have a good reason ...
<dzv> comparable
<jhass> you'll need a few more words than that. In your PR
<dzv> #1452
<dzv> waj is concerned about overhead. i'm attempting to optimize but i need access to T
havenwood has joined #crystal-lang
<jhass> I think he also pointed out that we can't assume we can memcmp just because it's not a container type
<jhass> since container types may specify a == that would allow it and non-container types may specify one that doesn't
<dzv> yes, so i'm going to optmize for Number types or possibly just int's
<dzv> which covers the common case of comparing 2 binary strings or occassional arrays of ints
<jhass> might be a lot easier to just provide overloads there
<dzv> is that possible. i can only optimize when Array(T == Int) and ==(other) is the same type
<dzv> how do i specify that in an overload?
Regexident has quit [Quit: Textual IRC Client: www.textualapp.com]
<jhass> def ==(other : self) ?
<dzv> what if T is reference?
<jhass> you need to branch out based on T
<dzv> yes
<dzv> but that's not available in Iterable
<dzv> except by your hack
<jhass> yes, I never claimed it is
<jhass> I'm not talking about placing the overload in Iterable
<jhass> or Comparable
<dzv> where?
<jhass> the leaf types
<dzv> you mean Array/StaticArray/etc?
<jhass> but I'm not sure we should do it at all
<jhass> yes
<jhass> but no matter what we do and check, it'll introduce an inconsistency to the language
<dzv> how?
<jhass> since I can just redefine == for the primitives
<jhass> not saying doing so is a good idea
<jhass> but it breaks Array#=='s etc contract
<jhass> if we no longer call it
<jhass> besides, did you experience Array#== as a practical bottleneck yet or is this just premature optimization?
dfockler has joined #crystal-lang
leafybasil has quit [Read error: Connection reset by peer]
<crystal-gh> [crystal] asterite pushed 1 new commit to master: http://git.io/vZDmg
<crystal-gh> crystal/master 4f04ab5 Ary Borenszweig: Allow accessing free variables in inline macros
leafybasil has joined #crystal-lang
Ven has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<jhass> I see Ary is listening :P
<asterite> Hehe, we noticed it didn't work some days ago, and now it was mentioned again
<jhass> ah, fake away!
Ven has joined #crystal-lang
<dzv> is there any way to see if T is a number in a macro? {% if Number === T %} doesn't work
<asterite> No
<dzv> jhass: byte by byte comparisons will always be slower than calling memcmp
<asterite> But you can do if T.is_a?(Number.class)
<asterite> but note that this won't work, BigInt is a Number and you don't want memcpy there
<asterite> You'll have to do it for specific primitive types
<dzv> at this point i'll compare UInt8 only and leave the rest alone
<asterite> I'd try to avoid these optimizations now, we can always do them later. Right now they will make the code a bit uglier and it's no bottleneck so far
<asterite> You can then do `if T.is_a?(UInt8.class)`
<asterite> In all cases that check will be gone because T is known at compile time
<travis-ci> manastech/crystal#4f04ab5 (master - Allow accessing free variables in inline macros): The build passed. https://travis-ci.org/manastech/crystal/builds/80258363
<jhass> asterite: in any case we do need to do something about <=>/Comparable. Having PartialComparable shows that something is broken in the design
<asterite> Mmm... why?
<asterite> Not all objects are comparable
<dzv> all objects can be PartialComparable
<asterite> I don't want `1 <=> false` to compile
<asterite> Then you can do `[1, 2, false].sort` and it will raise at runtime
<asterite> instead of at compile time
<asterite> That's the main reason
<dzv> by default restrict <=> to same type but still define it as the single interface for all other comparisons. other types could include Comparable when they want the other operators to work. rename <=> to some internal name if you don't ant it to work by default
<dzv> my issue is that you may need to override multiple methods and they are starting to conflict
<jhass> I think having both Comparable and PartialComparable is plain confusing
<jhass> I haven't made up a strong opinion on how, but I do think we need to get rid of one variant
thor77 has left #crystal-lang ["Leaving"]
<asterite> PartialComparable was introduced along with the compiler tools for IDE. I was kind of against it because maybe things can be done in another way
<dzv> and regardless of which is picked i think there should be a single method from which all comparisons are based. make it some internal name rather than <=> if need be. def compare(other)
<asterite> However, partial order is a mathematical thing
<asterite> but this can definitely be discussed
<jhass> at minimum it needs better docs
<jhass> it's impossible to understand the differences currently from them
<dzv> asterite: is there a quick match for if T is a int or float but not general number (like a bigint)
<jeromegn> apparently, if I subclass String, and then add that class to an alias type (along with String) (ie: alias Type = String | StringLike | Int32), the String is not present anymore in there... like: http://play.crystal-lang.org/#/r/fab
<jeromegn> and so I'm getting compile errors because String is not in there!
<nakilon> from some github comments: "deprecated def foo(bar), "use X instead""
<nakilon> I'm thinking about adding such warnings when some warnings flag enabled
<nakilon> warnings could cover such things as "Crystal for Rubyists" wiki page
<jeromegn> I updated this with a second undesirable scenario: http://play.crystal-lang.org/#/r/fad
<dzv> is there a compiler fail method?. i often want one for ifdef linux; elsif darwin; else; FAIL
<jhass> you can {{raise }} iirc
<jhass> http://crystal-lang.org/api/Macros.html#raise%28message%29%3ANoReturn-instance-method
Ven has quit [Ping timeout: 250 seconds]
shama has joined #crystal-lang
<jokke> what would be the most convenient way to turn an Array(String) into a Pointer(Pointer(UInt8))?
<jokke> Array(String) to_unsafe gives me a Pointer(String)
<BlaXpirit> jokke, you'd have to make an array of pointers and store it, then take the pointer to it
<jhass> .map(&.to_unsafe)
<jokke> jhass: ah
<jokke> nice
havenwood has quit [Ping timeout: 256 seconds]
<BlaXpirit> welp, i just made carc.in produce an offensive word
<jhass> it's not like you're the first
<jhass> or you mean like from itself?
<BlaXpirit> >> look at the url :D
<DeBot> BlaXpirit: Error in line 4: undefined method 'url' - http://carc.in/#/r/fah
<jhass> ah well
<jhass> it's base36 so all the offensive words you can imagine are eventually in there
sadin has joined #crystal-lang
Neverdie has quit [Quit: http://radiux.io/]
<jokke> jhass: how do i handle function pointers?
<jhass> "handle"?
<jokke> well i have a c function that needs a pointer to a callback
<BlaXpirit> jokke, as written in the docs :p
<jokke> oh
<jokke> sorry
<BlaXpirit> come back with specific questions
<jokke> mustve overseen it
<jokke> overlooked
jeromegn_ has joined #crystal-lang
jeromegn has quit [Ping timeout: 250 seconds]
jeromegn_ is now known as jeromegn
<jokke> oh cool
<jokke> that's really convenient
elia has quit [Quit: Computer has gone to sleep.]
Neverdie has joined #crystal-lang
kulelu88 has joined #crystal-lang
<jokke> hmm
<BlaXpirit> indeed
<jokke> the callback i pass is declared as being any kind of function accepting any kind of arguments
<jokke> and returning any kind of value
<BlaXpirit> jokke, there isn't really such thing in C
<BlaXpirit> it could accept "..." and return "void*", otherwise it makes no sense to me
qard has joined #crystal-lang
<crystal-gh> [crystal] asterite pushed 1 new commit to master: http://git.io/vZyeW
<crystal-gh> crystal/master cf0d8ab Ary Borenszweig: Fixed #1451: responds_to? && responds_to? dose not works
<dzv> @asterite is there a way to do this for every integer in 1 conditional? is there a parent integer type to test for? T.is_a?(UInt8.class)
<BlaXpirit> dzv, things like this were broken last time i tried
<travis-ci> manastech/crystal#cf0d8ab (master - Fixed #1451: responds_to? && responds_to? dose not works): The build passed. https://travis-ci.org/manastech/crystal/builds/80277004
leafybasil has quit [Remote host closed the connection]
leafybasil has joined #crystal-lang
feifan has joined #crystal-lang
leafybasil has quit [Ping timeout: 240 seconds]
havenwood has joined #crystal-lang
<jokke> BlaXpirit: you're right, but it's being casted to a void (*)(void)
apt-get has joined #crystal-lang
leafybasil has joined #crystal-lang
apt-get has quit [Remote host closed the connection]
apt-get has joined #crystal-lang
Neverdie has quit [Quit: http://radiux.io/]
leafybasil has quit [Read error: Connection reset by peer]
leafybasil has joined #crystal-lang
Neverdie has joined #crystal-lang
Neverdie has quit [Client Quit]
diegoviola has joined #crystal-lang
<diegoviola> hi, is there a repl in crystal, like irb?
<havenwood> diegoviola: Nope.
<diegoviola> package manager?
<diegoviola> I guess not yet
<BlaXpirit> diegoviola, simple built in one, and one in the works
<jhass> diegoviola: preliminary, will be replaced with https://github.com/ysbaddaden/shards
<diegoviola> cool ty
<crystal-gh> [crystal] waj pushed 1 new commit to master: http://git.io/vZyun
<crystal-gh> crystal/master 92d0021 Juan Wajnerman: Fixed bugs that prevented debug metadata to be emitted without "single module" mode
<jhass> \o/
dfockler has quit [Remote host closed the connection]
ssvb has quit [Ping timeout: 252 seconds]
Neverdie has joined #crystal-lang
<crystal-gh> [crystal] asterite closed pull request #1072: Add troubleshooting section for mac os yosemite (gh-pages...add-troubleshooting-for-mac) http://git.io/vO3ep
<travis-ci> manastech/crystal#92d0021 (master - Fixed bugs that prevented debug metadata to be emitted without "single module" mode): The build passed. https://travis-ci.org/manastech/crystal/builds/80288175
ssvb has joined #crystal-lang
ylluminate has quit [Ping timeout: 264 seconds]
<diegoviola> my code just compiled with crystal... cool
<diegoviola> so is crystal a new language or it can be seen as just another ruby vm?
<BlaXpirit> diegoviola, no, definitely a separate language
<BlaXpirit> with very different concepts
dfockler has joined #crystal-lang
<jeromegn> BlaXpirit: fyi, I ended up just doing: n = self; Slice(UInt8).new(pointerof(n) as UInt8*, 8); to get the bytes for my Float64. seems to work fine (both ways, parsing and serializing)
ssvb has quit [Ping timeout: 272 seconds]
<jeromegn> I know this was discouraged, but that's the only way I found
<BlaXpirit> i don't have anything else to suggest
<BlaXpirit> might as well use this for every data type then
<jeromegn> could I just shift the bytes from that Slice to ensure little-endianness?
<BlaXpirit> you could detect whether the system is big endian and reverse the bytes in that case
<jeromegn> well, I believe this is mostly it: https://github.com/jeromegn/bson.cr
<jhass> great! now do a pull parser and bson_mapping :P
<jeromegn> :o
<jeromegn> I'll have to understand what a pull parser is hehe. bson_mapping could be interesting!
<jhass> JSON::PullParser is fairly readable IMO
<jeromegn> I think the only usage of BSON is by MongoDB drivers hah.
<jeromegn> not a very popular format
<asterite> jhass: what's the name of "${@}" in shell?
<jhass> uhm
<jhass> symbolhound.com ;P
<jhass> okay the results there are actually useless
<jhass> idk if it has a name, it's "all parameters"
<jhass> though thinks like pop and shift drop items from it
<jhass> *things
<jhass> I guess the {} are just a common habit to make it more recognizable
<jhass> (you can put them around any var)
<crystal-gh> [crystal] asterite closed pull request #1293: Allow to run programs through a shell receiving huge argument lists (master...shell_args) http://git.io/vGe1U
<travis-ci> manastech/crystal#f88bac0 (master - Merge pull request #1293 from jhass/shell_args): The build passed. https://travis-ci.org/manastech/crystal/builds/80301073
dfockler has quit [Remote host closed the connection]
<crystal-gh> [crystal] asterite closed pull request #1299: add string#blank? (master...blank) http://git.io/vGTkj
<diegoviola> asterite: hola, ustedes son de Argentina?
<asterite> diegoviola: hola. Sí, vos también?
<diegoviola> asterite: no, soy de Paraguay ^_^
ylluminate has joined #crystal-lang
<jeromegn> getting a bit of a cryptic error trying to modify a Hash(String, TonsOfTypes). when I hash["something"] = Array, I get an error: no overload matches 'BSON::Document#[]=' with types String, Array(BSON::Document)
<jeromegn> Overloads are:
<jeromegn> - BSON::Document#[]=(key : K, value : V)
<jeromegn> I mean, when I do hash["something"] = some_array
<jeromegn> however, BSON::Document is a subclass of Hash(String, BSON::ValueType)
<crystal-gh> [crystal] asterite pushed 3 new commits to master: http://git.io/vZSIk
<crystal-gh> crystal/master b087c78 Technorama Ltd: waitpid usage bugfix
<crystal-gh> crystal/master 36fafcf Ary Borenszweig: Merge pull request #1295 from technorama/f/nowait_pid...
<crystal-gh> crystal/master d684fe9 Technorama Ltd: Waitpid enhancements:...
<crystal-gh> [crystal] asterite closed pull request #1310: Bcrypt spec (master...master) http://git.io/vGmZv
<travis-ci> manastech/crystal#36fafcf (master - Merge pull request #1295 from technorama/f/nowait_pid): The build was broken. https://travis-ci.org/manastech/crystal/builds/80305809
Neverdie has quit [Quit: http://radiux.io/]
Neverdie has joined #crystal-lang
<jhass> asterite: I've been thinking, I think we should mark RFCs we'd like to see implemented and which need discussion still. Rejected ones are closed, easy enough. What about a draft and accepted label for the other two states?
<asterite> Sounds good :)
<jhass> another thing we do at diaspora is having an orphan label for PRs and then we got this issue: https://github.com/diaspora/diaspora/issues/4340
<jeromegn> any idea why I'd get that error? http://play.crystal-lang.org/#/r/fbe
<jeromegn> the overload should be fine... hmm
<jeromegn> I mean, not that I have much visibility into it
<jeromegn> but an Array(BSON::Document) is included in the accepted values.
<crystal-gh> [crystal] asterite closed pull request #1353: IO#read* refactoring for read_partial/read_nonblock (master...f/io_read_partial) http://git.io/vGXzl
tomchapin has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
<jeromegn> I'm thoroughly confused now hehe
<crystal-gh> [crystal] asterite closed pull request #1370: Don't require a Projectfile when generating docs (master...master) http://git.io/vGN0r
<crystal-gh> [crystal] jhass closed pull request #1373: Cleanup gh-pages setup (gh-pages...gh-pages-setup) http://git.io/vGpmQ
<jhass> ah back to a single page of PRs <3
<crystal-gh> [crystal] asterite pushed 1 new commit to master: http://git.io/vZSng
<crystal-gh> crystal/master bf922d4 Ary Borenszweig: Some fixes to the last PR
dfockler has joined #crystal-lang
<jsaak> can someone point me to a discussion, or some documentation why empty Hash -es need type notations?
<travis-ci> manastech/crystal#bf922d4 (master - Some fixes to the last PR): The build was fixed. https://travis-ci.org/manastech/crystal/builds/80311738
<jhass> jsaak: because when we tried to infer the type it was really really slow
<jsaak> ohh ok, that sound reasonable
<jhass> jsaak: you'd need to track the entire objects life and then when you're sure you got all instances (which is already quite hard) you need to trace back and annotate the type
<jhass> then you get easier unions by mistake (like mixing hash and string keys because the other variant is out of sight) and then you wonder why it doesn't work and that also slows down the generated program
<jsaak> i do have a command line program, which has about 20 command line parameters, some bools, some strings, some arrays
diegoviola has quit [Quit: WeeChat 1.3]
<jsaak> and i want to make these wisible accross multiple classes
<jsaak> i tried globals vars, encampusalating them in a class,a big hash, but all of these did not work very well
<jsaak> the big problem is that all of them can be Nil
<jsaak> i have to make a local variable, and put it the logic inside an if
<jsaak> i sthink i may be missing something
luislavena has joined #crystal-lang
Neverdie has quit [Quit: http://radiux.io/]
<jhass> encapsulating them into a class should work fairly well
<jhass> I'd do that and add convenience methods
<jhass> (hard to provide examples without knowing the domain)
Neverdie has joined #crystal-lang
<jeromegn> jhass: can you help me with something? Why is that not compiling? http://play.crystal-lang.org/#/r/fbe
<jhass> idk, I think asterite could explain it better
<jhass> might be a bug, might be a missing feature but also might even be intended
<jeromegn> right
<jeromegn> should I post in the google groups or an issue on github? :)
<jeromegn> or ask again here some other time
<jeromegn> hehe
<jhass> mmh, github issue will probably work best
nakilon has quit [Ping timeout: 246 seconds]
<jeromegn> alright, submitted
Neverdie has quit [Quit: http://radiux.io/]
Neverdie has joined #crystal-lang
apt-get has quit [Quit: Quit]
fowlduck has joined #crystal-lang
havenwood has quit [Ping timeout: 265 seconds]
havenwood has joined #crystal-lang
<jeromegn> I see you replied to this issue, mine might be similar: https://github.com/manastech/crystal/issues/922
BlaXpirit has quit [Quit: Konversation]
dfockler has quit [Remote host closed the connection]
Neverdie has quit [Quit: http://radiux.io/]
dfockler has joined #crystal-lang
Neverdie has joined #crystal-lang
luislavena has quit []
ponga has joined #crystal-lang
nakilon has joined #crystal-lang
nakilon has quit [Ping timeout: 246 seconds]
dfockler has quit []
elbow_jason has joined #crystal-lang
trapped has quit [Read error: Connection reset by peer]
fowlduck has quit [Remote host closed the connection]
havenwood has quit [Quit: Textual IRC Client: www.textualapp.com]
Neverdie has quit [Quit: http://radiux.io/]