<< 04-03-2015 >>

00:00:01flaviunimnoob123: Also, if not foundyou.match(foostart): echo "yes" should work without problems.
00:00:11nimnoob123:)
00:00:48nimnoob123success!
00:01:59nimnoob123btw a warning: c:\users\xxxxx\.nimble\pkgs\nre-0.6.1\nre.nim(383, 5) Hint: 'nre.renderBounds(str: string, bounds: Slice[system.int])' is declared but not used [XDeclaredButNotUsed]
00:02:47fowlflaviu, do you have a `=~` in nre
00:04:19flaviufowl: Nope, but try let match = "assdsa".match(...); if match: ...
00:04:55nimnoob123lib/pure/future.nim is official nim lib right?
00:04:59BlaXpirityes
00:05:17flaviuNot as concise, I admit, but the readability benefits are worth it.
00:05:33fowlflaviu, i know how to do it, thats not convenient though
00:05:42nimnoob123some of those libs throw PNimrodNode errors and other Nimrod deprecated errors
00:06:13nimnoob123warnings*
00:07:07nimnoob123since the name change im guessing
00:07:45flaviufowl: Well, when type inference starts working, "aswdsad".match(...).map((match) => ...) is perfectly valid.
00:07:53*davidterry joined #nim
00:08:43*epichero joined #nim
00:09:36Araqand when the compiler gets an optimizer it's just as fast :P
00:10:08AraqI prefer to write libraries that work well with today's compiler though, but I know I'm a crank
00:10:23flaviuYep! I think that's one of the most typical FPL optmizations.
00:10:48flaviuI feel the opposite way: it's not my responsibility as an API author to work around bugs.
00:10:59BlaXpiritfowl, flaviu: about =~ https://bpaste.net/show/3ed6834012e7
00:13:28Araqone day I'll have the time to finish my regex implementation and give Nim:
00:13:32Araqmatch x:
00:13:40Araq of re"abc": ...
00:13:47Araq of re"xxyz": ...
00:14:03Araqand it's compiled like re2c does it
00:14:12Araqa real lexer generator
00:14:24Araqnot that pcre crap
00:14:34flaviuAraq: Please expose hooks so that we can do our own custom pattern matching.
00:14:56Araqyeah, like Ragel?
00:15:01flaviubtw, PCRE has a JIT compiler, so it can be pretty fast.
00:15:09Araqbtw I know that
00:15:25*brson quit (Ping timeout: 255 seconds)
00:15:42flaviuMaybe I should enable JIT by default in nre :>
00:15:51flaviubeat every other library in benchmarks.
00:16:13Araqit's still wrong, because you need to use 'if .. elif .. elif' and pcre cannot JIT accross these boundaries as it doesn't see them
00:16:19*davidterry quit (Ping timeout: 255 seconds)
00:16:43Araqyou need to build the DFA as a whole
00:17:08flaviuWhat do you mean?
00:18:43Araqthat you need to compile all the patterns into a single NFA/DFA to really optimize it
00:19:05Araqand you cannot do that with an API you need a DSL
00:19:13flaviuPCRE allows callbacks, so you can do all your branching within PCRE.
00:19:39Araqthat's neat
00:20:08Araqa DSL is still better though :P
00:27:03BlaXpiriti don't think it's important at all
00:29:05reactormonkAraq, soooo ragel?
00:37:44*reem quit (Remote host closed the connection)
00:38:16*reem joined #nim
00:41:49*randomwalk quit (Ping timeout: 246 seconds)
00:49:01*reem quit (Remote host closed the connection)
00:49:11*davidterry joined #nim
00:49:35*reem joined #nim
00:53:24*randomwalk joined #nim
00:53:53*reem quit (Ping timeout: 246 seconds)
00:56:44*davidterry quit (Remote host closed the connection)
00:59:36a5iomg
00:59:43a5iis that the OG Araq?
00:59:45a5iHi!
01:01:55*reem joined #nim
01:03:29*reem quit (Remote host closed the connection)
01:06:41*BlaXpirit quit (Quit: Quit Konversation)
01:08:00reactormonka5i, o/
01:08:41a5i \0 reactormonk
01:10:35*reem joined #nim
01:14:21a5iHey reem :~D
01:14:34ldleworklol 'OG Araq'
01:15:33randomwalkdef-: I notice that sequtils delete() does not return the seq. Can I do it some other way without your iterutils? Here's an example workaround with a temp variable: http://pastebin.com/UDxgXVUr
01:16:25randomwalkdef-: I'm intentionally throwing the first line away. (I'm really parsing a csv file.)
01:18:06randomwalka5i: I'm not sure if Araq will catch that cultural reference. :)
01:18:57def-randomwalk: you can always make your own returning version and call it "deleted"
01:20:02randomwalkdef-: Ya, I'll do that. Then I can keep the "chain" in the for argument.
01:20:32nimnoob123how do you connect to sites that use ssl through httpclient ?
01:20:47def-nimnoob123: compile with -d:ssl maybe
01:20:53randomwalkdef-: Maybe iterutils will become standard. :)
01:21:15nimnoob123ah neat
01:21:19def-first iterutils has to compile again :P
01:22:23nimnoob123thanks def-, as usual
01:28:50def-nimnoob123: you're welcome, as usual
01:29:04nimnoob123:)
01:29:12randomwalkI currently use a bare "discard" for nop placeholders. Is there a better way?
01:29:27reactormonkrandomwalk, that's the way to go
01:29:41*Trustable quit (Remote host closed the connection)
01:30:34randomwalkreactormonk: I think I want to write a #define-like macro to alias discard...maybe to 1 unused char. :)
01:31:15*reem quit (Remote host closed the connection)
01:31:19reactormonkrandomwalk, discard in nim ls like pass in python
01:32:19randomwalkreactormonk: I think I'll alias it to _ unless that's used for something else :)
01:32:28reactormonkrandomwalk, _ is not a valid identifier
01:32:37reactormonkand please don't do that, it makes code harder to read
01:32:58randomwalkreactormonk: but it's just for my file...can't I macro it?
01:33:25reactormonknope, not valid syntax. And don't do it, it makes code harder to read. And if your code is somewhat useful, other people will read it.
01:33:53randomwalkit reminds me of $_ in perl :) lol
01:34:03*reem joined #nim
01:35:53randomwalkno dice
01:37:39nimnoob123hmm nre returns weird results
01:38:24nimnoob123like the full output matches, but I have no clue how to grab the group from the find value, it just requires the first match of the full regex
01:39:53flaviunimnoob123: I'm having trouble parsing your second message. Can you rephrase that/use pseudocode?
01:39:56nimnoob123example: echo returned_html.findAll(re("<meta itemprop=\"og:customtag\" content=\"([^\"]+)\" />", "im")) returns the full html tag instead of the group
01:40:39randomwalkreactormonk: I agree. :) Underscore tends to obfuscate.
01:40:42nimnoob123can't seem to figure out how to capture just the grouped regex in parenthesis
01:40:56reactormonknimnoob123, https://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/
01:41:23nimnoob123my regex is fine
01:41:39randomwalknimnoob123 That's $1 or \1 ... I haven't tried regex in nim though
01:42:00flaviureactormonk: That's not really helpful, there are cases when it's fine. nimnoob123: hmm, good point.
01:42:01*gsingh93 quit (Ping timeout: 250 seconds)
01:42:09nimnoob123findAll in nre returns a sequence of matches, not $1 or \1
01:42:22nimnoob123seq[string] of matches * to be specific
01:42:41flaviuyep, and I think some clever API design can avoid that. I don't think you're the first to hit across that.
01:42:44nimnoob123it's not capturing my groups at all, so yeah lol idk how to do it with nre :P
01:43:06reactormonkflaviu, yes, when you're controlling the html. And then you shouldn't need to di it.
01:44:15flaviureactormonk: You can control the *ML even if you didn't generate it.
01:44:26reactormonkgo on...
01:44:41randomwalkmaybe you want findIter?
01:45:01nimnoob123hmm
01:45:09flaviureactormonk: If you know some *ML is generated by a specific tool, you know what sort of stuff it'll output.
01:46:03reactormonkflaviu, hm, I see your point. but then your tool kinda sucks
01:46:09*davidterry joined #nim
01:46:25flaviureactormonk: Someone else chose the tool, you don't get any choice but to deal with it.
01:46:30nimnoob123findIter cannot be called from nre, compiler says
01:46:39flaviunimnoob123: Please post code.
01:46:53nimnoob123sec
01:47:22flaviuOk, so I can deprecate findAll() and replace it with findIterF(string, Regex, start = 0, endpos = -1, format = "$0").
01:47:29*BitPuffin quit (Ping timeout: 252 seconds)
01:47:49reactormonkflaviu, ok, point taken. good old gluecode.
01:48:22nimnoob123Can I delete private gists?
01:48:28flaviuThat way it's possible to use a custom format string, as well being more consitant with findIter. I'm not sure I like the name, I'd appreciate it if someone came up with a better name.
01:48:29*davidter_ joined #nim
01:48:42flaviunimnoob123: You can delete all gists.
01:49:06flaviuI'd encourage you not to, for the convenience of those coming from google.
01:49:08nimnoob123https://gist.github.com/G4MR/8cc04c72d1de895ae189
01:49:28nimnoob123yeah I don't think I want this out there when I'm done
01:50:09nimnoob123btw that works, just doesn't output what I want, pulls the full tag, I mean I can work with it, but it's just an incorrect output though
01:50:39*davidte__ joined #nim
01:51:02flaviunimnoob123: I don't see any compiler errors.
01:51:13nimnoob123last message
01:51:23nimnoob123was a mistype which is why i got an error
01:51:38*davidterry quit (Ping timeout: 264 seconds)
01:52:00nimnoob123but yeah still doesn't explain why it isn't capturing the group only
01:52:43flaviunimnoob123: That's the way it's supposed to work. It's inadequately documented and not very good design either.
01:52:51nimnoob123expected output is what ever is in between: content=""
01:52:55randomwalkflaviu: Thanks for the nre lib. I'm gonna try it.
01:53:16nimnoob123so how do I get the expected result im looking for
01:53:28flaviunimnoob123: I'll add findIterf(string, Regex, start = 0, endpos = -1, format = "$0") as soon as I can find a name that doesn't suck :)
01:53:56*davidter_ quit (Ping timeout: 256 seconds)
01:54:58nimnoob123findIterFmt maybe? not sure
01:55:01*davidte__ quit (Ping timeout: 250 seconds)
01:55:02*davidterry joined #nim
01:55:30randomwalkflaviu: thx, i'll use PCRE a lot. I remember when perl was the only option. :)
01:55:45nimnoob123it describes what it does pretty well I'd say flaviu
01:55:49*davidter_ joined #nim
01:57:29*davidterry quit (Read error: Connection reset by peer)
01:57:46nimnoob123yeah idk lol
01:58:10flaviurandomwalk: Nim's re uses pcre too, but thanks! nimnoob123: That's better, I'll probably use that.
01:58:18*davidterry joined #nim
01:59:24flaviuAnyway, I've got to get to be right now, so use var myseq: seq[string] = @[]; for match in findIter(...): myseq.add(match.captures[0])
01:59:34*davidterry quit (Remote host closed the connection)
01:59:40flaviuyou may want to import optional_t.nonstrict
02:00:24nimnoob123alright let me try it
02:01:14*davidter_ quit (Ping timeout: 264 seconds)
02:01:43def-flaviu: for me it was just "import optional_t" btw
02:01:56def-nonstrict didn't work strangely
02:01:57*Jehan_ quit (Quit: Leaving)
02:02:22nimnoob123perfect
02:02:36nimnoob123thanks flaviu
02:03:01nimnoob123you should document that for the time being imo
02:03:59flaviudef-: make an issue with an example on the optional_t repo, and I'll look into it tomorrow. nimnoob123: yep, tomorrow.
02:05:23*reem quit (Remote host closed the connection)
02:07:50*reem joined #nim
02:08:42*saml_ joined #nim
02:09:52*darkf joined #nim
02:11:50*reem quit (Remote host closed the connection)
02:15:45def-flaviu: seems to work now. maybe i just had an old version of something
02:16:18MaxdamantusAraq: I cleaned some of that stuff up btw and added it to the branch in the PR (and rebased it), in case that's not something GH emails about.
02:17:58*gsingh93 joined #nim
02:24:07*reem joined #nim
02:28:38OderWat@Araq: keineschweine.nim :-P
02:46:50randomwalknimnoob123: I'm trying to use nre...after I do a match, I try to look at the capture with m.captures[0], but I get this error: Error: type mismatch: got (Option[RegexMatch])
02:47:22nimnoob123yeah i used to get that issue, what i did was the iter trick flaviu showed me, sec i'll get you a snippet
02:48:00def-randomwalk: import optional_t.nonstrict
02:48:22nimnoob123https://gist.github.com/G4MR/8bec3d4c21c1ca0f4728 try
02:48:36nimnoob123err obviously with your own variables
02:48:54*reem quit (Remote host closed the connection)
02:49:16nimnoob123trying to do it manually is weird, i'll just wait til tomorrow when flaviu put up some more examples with the other methods. for now that works for me
02:49:27nimnoob123procs*
02:49:32randomwalkthat makes gcc fail to compile pcre on windows :(
02:49:45def-randomwalk: just delete the nimcache directory, known bug
02:50:01nimnoob123yeah had to do that too earlier, forgot about that
02:50:01randomwalkwhat does nonstrict do?
02:50:08def-randomwalk: not the slightest idea
02:50:20nimnoob123it was supposed to include a None/Some type iirc
02:50:55nimnoob123i only include the optional_t
02:51:08flaviuI should be sleeping, but https://github.com/flaviut/optional_t/blob/master/src/optional_t/nonstrict.nim
02:51:12nimnoob123which actually compiles (and im not sure if I even need that)
02:51:45flaviubasically makes Option work like refs, where you can derefrence nil, you'll just get an error.
02:51:54nimnoob123ic
02:52:44*reem joined #nim
02:52:47MaxdamantusI think a decent interface for optionals that works in most languages is iteration.
02:53:31Maxdamantusfor a in Just 5: for b in Just 4: echo (a + b)
02:54:02flaviuMaxdamantus: optional_t has map, but that's a good idea.
02:54:11MaxdamantusParticularly because optionals are just a special case of arrays/lists.
02:54:18Maxdamantusie, 1- or 0-element lists.
02:56:06*chemist69_ joined #nim
02:59:13*chemist69 quit (Ping timeout: 255 seconds)
02:59:57randomwalkflaviu: Why is the return type of match Option[RegexMatch] instead of just RegexMatch?
03:00:52flaviuWhat if it fails to match?
03:01:02*reem quit (Remote host closed the connection)
03:01:10randomwalknil
03:01:58*reem joined #nim
03:02:01flaviuBut RegexMatch isn't a ref :)
03:02:21randomwalkWhat do I check?
03:02:39flaviuhttps://github.com/flaviut/nre/blob/master/src/nre.nim#L21
03:03:25flaviuNot making it a ref provides performance improvements, heap allocation and cleanup is fairly slow.
03:04:17*reem quit (Remote host closed the connection)
03:04:56*darkf quit (Read error: Connection reset by peer)
03:05:20*darkf joined #nim
03:05:37randomwalkflaviu: ok, so maybe the optimization is making it hard for me to read the docs. How do I check if my match succeeds, then grab the captures?
03:08:07flaviunre depends on https://github.com/flaviut/optional_t, which provides the Option type. You can do myOption.isSome() or if myOption: to check for match success, and nonstrict automatically retrieves the value inside the Option, or you can use myOption.get.
03:08:35flaviuYou then have access to everything described here: https://github.com/flaviut/nre#optionregexmatch
03:09:08flaviubtw, all these questions are helpful for me. They tell me which parts of the documentation are unclear.
03:09:51randomwalkok, thx. yes for nim noobs it just seems like you're talking about internals
03:12:19flaviurandomwalk: I'm not sure I understand what you said.
03:14:22*davidterry joined #nim
03:15:27*davidterry quit (Remote host closed the connection)
03:18:17flaviuI'm not really talking about language internals, and IMO whether RegexMatch is a ref or not is an implementation detail.
03:21:02*aidanh quit (Ping timeout: 264 seconds)
03:22:15randomwalkflaviu: i've only been writing nim for 2 days
03:22:25*aidanh joined #nim
03:23:58flaviuAh, I see.
03:27:24*reem joined #nim
03:31:41*reem quit (Remote host closed the connection)
03:39:59*davidterry joined #nim
03:47:10*jholland quit (Quit: Connection closed for inactivity)
03:47:16*davidterry quit (Ping timeout: 256 seconds)
03:49:49*davidterry joined #nim
03:51:41*davidter_ joined #nim
03:52:16randomwalkflaviu: Why on failure is it None[RegexMatch] not Option[None]? The notation is confusing.
03:53:43*davidter_ quit (Remote host closed the connection)
03:54:31*davidter_ joined #nim
03:55:08*davidterry quit (Ping timeout: 246 seconds)
03:55:22*randomwalk is reading the optional_t docs ...
03:56:15*reem joined #nim
03:56:43*davidterry joined #nim
03:58:16*davidterry quit (Remote host closed the connection)
03:59:03*davidterry joined #nim
03:59:44*davidter_ quit (Ping timeout: 246 seconds)
04:00:35*davidterry quit (Remote host closed the connection)
04:01:40*davidterry joined #nim
04:02:46*reem quit (Remote host closed the connection)
04:02:55*davidterry quit (Remote host closed the connection)
04:03:48randomwalkWhen I try to stringify the return type of type() I get: Error: internal error: GetUniqueType
04:04:03*davidterry joined #nim
04:05:11def-randomwalk: import typetraits and use name()
04:05:16*davidterry quit (Remote host closed the connection)
04:05:58*randomwalk thanks def-flavui-flav
04:06:20*davidterry joined #nim
04:06:55*reem joined #nim
04:08:03*davidter_ joined #nim
04:09:48*davidte__ joined #nim
04:10:56*davidt___ joined #nim
04:11:29*davidterry quit (Ping timeout: 245 seconds)
04:12:20*davidter_ quit (Ping timeout: 246 seconds)
04:12:23randomwalkDoes name() capture exceptions? echo(name(type(m.captures[0]))) prints "string", but m.captures[0] generates Error: unhandled exception: Cannot fetch value from a None [FieldError]
04:13:04*davidterry joined #nim
04:14:24*davidte__ quit (Ping timeout: 245 seconds)
04:14:37*davidterry quit (Remote host closed the connection)
04:15:35*davidterry joined #nim
04:15:46randomwalkI'll just use split() for now...maybe I'll refactor to regex later...
04:16:50*davidt___ quit (Ping timeout: 264 seconds)
04:17:25*davidter_ joined #nim
04:19:16*davidte__ joined #nim
04:20:16*davidt___ joined #nim
04:21:07*davidterry quit (Ping timeout: 255 seconds)
04:21:24fowlrandomwalk, the error says that m is None, you need to check m before trying to use its value
04:21:37*davidt___ quit (Remote host closed the connection)
04:22:11*davidter_ quit (Read error: Connection reset by peer)
04:22:46*davidterry joined #nim
04:23:03randomwalkfowl: example?
04:23:49*davidte__ quit (Ping timeout: 264 seconds)
04:24:57*davidter_ joined #nim
04:26:23*reem quit (Remote host closed the connection)
04:27:13*davidte__ joined #nim
04:27:58fowlrandomwalk, you can check with if m:
04:28:14*davidterry quit (Ping timeout: 252 seconds)
04:28:46fowlit collapses to a bool
04:29:07fowlwhen it has a value, its true, when it doesnt its false, its the isSome() function
04:29:28randomwalkfowl: Thx, I'll try that later.
04:29:54*davidterry joined #nim
04:30:17*davidter_ quit (Ping timeout: 245 seconds)
04:31:15*davidterry quit (Remote host closed the connection)
04:31:45*davidterry joined #nim
04:32:44*davidte__ quit (Ping timeout: 245 seconds)
04:33:11*davidter_ joined #nim
04:33:35*davidter_ quit (Remote host closed the connection)
04:34:14*davidterry quit (Read error: Connection reset by peer)
04:34:41*davidterry joined #nim
04:37:39*reem joined #nim
04:40:20*davidterry quit (Ping timeout: 246 seconds)
04:42:45randomwalkare there builtin equivalents of atoi and atof? I'm using the c functions currently.
04:43:04getoffmalawnrandomwalk: strutils.parseInt and parseFloat, I think?
04:43:45getoffmalawn... ignore me, I gave you the opposite
04:44:11randomwalkno that looks right
04:44:33getoffmalawnHaha! Sorry. I haven't used C for a long time, got the direction of atoi and atof confused.
04:44:45def-the other way around is just a $
04:45:28randomwalkit worked :)
04:51:07*davidterry joined #nim
04:52:40randomwalkWhen I declare a var with a name already in the namespace, does the collision always just result in a silent local shadowing (occlusion)?
04:52:48*davidterry quit (Remote host closed the connection)
04:53:39nimnoob123hmm nre doesn't like really long stringfs
04:53:43*davidterry joined #nim
04:53:45nimnoob123strings*
04:54:35nimnoob123like 662897 character length strings
04:55:09*davidterry quit (Remote host closed the connection)
04:55:14*ChrisMAN quit (Ping timeout: 245 seconds)
04:55:52*davidterry joined #nim
04:58:12*davidterry quit (Read error: Connection reset by peer)
04:58:54*davidterry joined #nim
04:59:08*saml_ quit (Quit: Leaving)
05:00:10*davidterry quit (Remote host closed the connection)
05:00:32*TEttinger joined #nim
05:00:41*davidterry joined #nim
05:02:47*davidter_ joined #nim
05:02:56*davidter_ quit (Read error: Connection reset by peer)
05:03:12*davidterry quit (Read error: Connection reset by peer)
05:03:18*davidter_ joined #nim
05:07:55*davidter_ quit (Ping timeout: 255 seconds)
05:20:23*akiradeveloper joined #nim
05:21:45akiradeveloperI am trying to use asyncnet but it doesn't work as I expect https://gist.github.com/akiradeveloper/06a3e38e0839989342ba I think server should fetch 4 byte but is 0 byte actually. What's wrong with my code?
05:28:56*a5i quit (Quit: Connection closed for inactivity)
05:30:41*aidanh quit (Ping timeout: 246 seconds)
05:32:50*aidanh joined #nim
05:38:45randomwalkWhen I create a table type, do I need to write my own add() implementation?
05:38:46randomwalkvar ot = initOrderedTable[string, float32](initialSize = 256)
05:38:46randomwalk#...
05:38:46randomwalkot.add(key: s, val: f) # compiler Error: type mismatch: got (OrderedTable[string, float32])
05:41:35nimnoob123just do
05:41:44nimnoob123ot.add("key", floatval)
05:43:13*akky joined #nim
05:47:26*akky quit (Remote host closed the connection)
05:47:59fowlot[key] = value
05:58:48*fizzbooze quit (Ping timeout: 252 seconds)
06:09:52*aidanh quit (Ping timeout: 240 seconds)
06:14:29*aidanh joined #nim
06:20:02*bavers joined #nim
06:20:09*bavers left #nim ("Quit")
06:20:11randomwalkfowl: thx, i got my program working. it grabs yahoo finance data, and very quickly thx to nim :)
06:20:53*kashyap_ joined #nim
06:22:07*gsingh93 quit (Ping timeout: 256 seconds)
06:23:03*reem quit (Remote host closed the connection)
06:34:52fowlrandomwalk, cool :)
06:36:18*bjz joined #nim
06:40:48*akiradeveloper quit (Quit: Page closed)
06:43:05*bjz quit (Ping timeout: 256 seconds)
06:46:03*reem joined #nim
06:52:22*allan0_ quit (Ping timeout: 245 seconds)
06:54:18*reem quit (Remote host closed the connection)
07:07:20*elbow_jason joined #nim
07:07:47*allan0_ joined #nim
07:16:41randomwalkref-: I have a seq[string] that I want to reduce by concatenating all the strings together; is there a standard idiom for map reduce in nim?
07:17:39randomwalkref- is asleep/gone.
07:17:53randomwalkoh i meant def- :)
07:18:45elbow_jasondef-: ^
07:19:00elbow_jasonyou have to name him to summon him.
07:23:34*reem joined #nim
07:24:43*davidterry joined #nim
07:25:22randomwalkNo prob. I got my own ugly code. I'll try to refactor later. :)
07:25:57*reem quit (Remote host closed the connection)
07:26:49Maxdamantus.eval join(@["foo", "bar". "baz"])
07:26:53MimbusMaxdamantus: eval.nim(3, 26) Error: identifier expected, but found 'baz'
07:27:02Maxdamantus.eval join(@["foo", "bar", "baz"])
07:27:05MimbusMaxdamantus: eval.nim(3, 4) Error: value of type 'string' has to be discarded
07:27:28Maxdamantuser
07:27:33Maxdamantus.eval echo join(@["foo", "bar", "baz"])
07:27:37MimbusMaxdamantus: foobarbaz
07:29:54cazovsequtils has foldl, like foldl(words, a&b)
07:30:29*bjz joined #nim
07:37:30randomwalkcazov: thx fold works
07:38:40cazovthe join max said is a little cleaner though. the bot syntax made it look more complicated to me haha
07:40:58*reem joined #nim
07:43:13randomwalkcazov: ya that worked too. :)
07:44:46randomwalkIn my code I pass a Table to a function. Does it copy the whole thing by value, or does it pass a reference? Do I need to use a TableRef to optimize it?
07:44:56randomwalkerr proc i mean
07:46:01*reem quit (Remote host closed the connection)
07:50:49randomwalkWhat is a good example use of TableRef?
07:52:22*reem joined #nim
07:55:52*reem quit (Remote host closed the connection)
07:56:56*leonlee joined #nim
07:57:58randomwalkI mean, my proc returns a table....same question for when putting a table in another table: is it deep copied unless I pass a ref?
08:02:16*getoffmalawn quit (Quit: WeeChat 1.0)
08:04:21fowlyes it is deep copied randomwalk
08:05:49fowlit is passed by reference also, you dont need to worry about that
08:06:12randomwalkfowl: which? :)
08:06:15fowlthere are byRef/byCopy pragmas you can use to control that for object types
08:07:09randomwalkso when would I refer to a TableRef, only in a pragma?
08:07:14fowlrandomwalk, well table[k,v] consists of a few seqs, seqs have value semantics (even though underlying they are refs)
08:07:39*reem joined #nim
08:09:00fowlno you would use either TableRef or Table, use TableRef if you need to pass it around by reference, the table is shared by multiple objects
08:09:27fowlor if the table is shared .. ^
08:09:47randomwalkok
08:10:57*reem quit (Remote host closed the connection)
08:14:41*Jehan_ joined #nim
08:22:04*reem joined #nim
08:22:11*randomwalk quit (Ping timeout: 246 seconds)
08:24:31*reem quit (Remote host closed the connection)
08:25:37*davidterry quit (Remote host closed the connection)
08:26:19*ruzu quit (Ping timeout: 250 seconds)
08:36:26*davidterry joined #nim
08:37:47*chemist69_ quit (Quit: WeeChat 1.1.1)
08:38:00*chemist69 joined #nim
08:38:51*davidterry quit (Remote host closed the connection)
08:41:30*davidterry joined #nim
08:43:36*reem joined #nim
08:44:23*ruzu joined #nim
08:45:54*davidterry quit (Ping timeout: 256 seconds)
08:46:15*reem quit (Remote host closed the connection)
08:48:02*reem joined #nim
08:49:27*Trustable joined #nim
08:49:50*reem quit (Remote host closed the connection)
08:58:17*reem joined #nim
09:03:52*zahary joined #nim
09:04:29*reem quit (Remote host closed the connection)
09:06:01*tumult joined #nim
09:12:19*reem joined #nim
09:13:10*d3m1gd joined #nim
09:13:40*epichero quit ()
09:14:47*epichero joined #nim
09:22:10*reem quit (Remote host closed the connection)
09:25:54*reem joined #nim
09:33:04*reem quit (Remote host closed the connection)
09:38:44*reem joined #nim
09:41:17*gokr quit (Ping timeout: 250 seconds)
09:42:09*reem quit (Remote host closed the connection)
09:43:16*chemist69 quit (Quit: WeeChat 1.1.1)
09:44:28*gokr joined #nim
10:03:17*Jehan_ quit (Quit: Leaving)
10:03:43*chemist69 joined #nim
10:10:14*l_amee joined #nim
10:11:45*l_amee is now known as l04m33
10:18:58*reem joined #nim
10:19:48*Trixar_za joined #nim
10:20:35*reem quit (Remote host closed the connection)
10:27:48l04m33I wanted to handle exceptions raised by async procs, but my program here always gets SIGSEGV: https://gist.github.com/l04m33/617bf88e3c74a88bd59b
10:27:55l04m33Am I doing anything wrong?
10:30:36l04m33Peeked around the standard lib and found no usage example of `try: await p(); except: ...`
10:31:07l04m33But seems that it's handled in asyncdispatch ?
10:31:41fowli dont have experience with asyncdispatch
10:33:28l04m33Me too, just peeking around and found that asyncdispatch mentioned `try: await p(); except: ...` syntax in the source code
10:34:26l04m33s/too/either
10:36:21l04m33https://github.com/Araq/Nim/blob/devel/lib/pure/asyncdispatch.nim#L1223
10:38:32fowlyour usage looks right but idk
10:40:08*Maxdamantus quit (Ping timeout: 246 seconds)
10:40:20*Maxdamantus joined #nim
10:42:24*BlaXpirit joined #nim
10:42:59*reem joined #nim
10:47:10l04m33fowl: thanks anyway ~
10:47:34fowll04m33, post on the forum or post an issue!
10:48:29l04m33fowl: OK I'll try the forum then
10:50:15*epichero quit (Remote host closed the connection)
10:52:49*Tennis joined #nim
10:52:49*Tennis quit (Changing host)
10:52:49*Tennis joined #nim
10:54:30*reem quit (Remote host closed the connection)
11:39:35*davidterry joined #nim
11:44:10*davidterry quit (Ping timeout: 265 seconds)
11:48:05*zahary quit (Ping timeout: 252 seconds)
11:51:06*epichero joined #nim
11:51:57*reem joined #nim
11:54:59*reem quit (Remote host closed the connection)
11:55:53*epichero quit (Ping timeout: 256 seconds)
12:02:27*reem joined #nim
12:03:40def-flaviu: any idea about "could not import: pcre_stack_guard"? https://github.com/kanaka/mal/pull/20#issuecomment-77097742
12:03:48*reem quit (Remote host closed the connection)
12:04:13*zahary joined #nim
12:04:15def-Oh right, I guess I know why
12:08:42gokrAraq: That async snippet fails for me on 0.10.3 too.
12:13:59*johnsoft quit (Ping timeout: 245 seconds)
12:14:05*TEttinger quit (Quit: Leaving)
12:14:54*johnsoft joined #nim
12:18:26*reem joined #nim
12:19:22*reem quit (Remote host closed the connection)
12:23:40*reem joined #nim
12:25:43*reem quit (Remote host closed the connection)
12:26:50OderWatCheck your C knowledge http://kukuruku.co/hub/programming/i-do-not-know-c ... I failed multiple times to give the right answer :(
12:43:21*pafmaf joined #nim
12:44:49*Jehan_ joined #nim
13:07:50*a5i joined #nim
13:08:31novistwow, c is backwards..
13:08:49*pafmaf quit (Ping timeout: 264 seconds)
13:15:03*BitPuffin joined #nim
13:18:43*pafmaf joined #nim
13:18:52*kashyap_ quit (Ping timeout: 246 seconds)
13:23:13*pafmaf quit (Ping timeout: 264 seconds)
13:23:46*pafmaf joined #nim
13:25:13Jehan_novist: In what way?
13:25:35novistunexpected things happening
13:26:34Jehan_Well, that's sort of par for the course for what's essentially a portable assembly language. :)
13:28:05*johnsoft quit (Ping timeout: 246 seconds)
13:28:28*johnsoft joined #nim
13:33:22*NimBot joined #nim
13:38:49*pafmaf quit (Ping timeout: 264 seconds)
13:40:07*pafmaf joined #nim
13:50:34*reem joined #nim
13:55:21*jasondotstar quit (Quit: Leaving)
13:55:53*reem quit (Remote host closed the connection)
14:04:31*pafmaf quit (Quit: This computer has gone to sleep)
14:14:26*leonlee quit (Ping timeout: 264 seconds)
14:16:59*joelmo joined #nim
14:17:08*joelmo left #nim (#nim)
14:17:17*davidterry joined #nim
14:20:29BlaXpirit.eval echo uint(-1) # Is this guaranteed?
14:20:32MimbusBlaXpirit: 18446744073709551615
14:21:54*davidterry quit (Ping timeout: 245 seconds)
14:22:15dv-no
14:22:26dv-.eval echo uint64(-1)
14:22:29Mimbusdv-: 18446744073709551615
14:22:33dv-but that is
14:22:38*reem joined #nim
14:24:19*reem quit (Remote host closed the connection)
14:24:41BlaXpiritwell yeah, obviously
14:24:49BlaXpiritbut this is undefined behavior in C
14:25:34BlaXpiritoh, nim evaluated this beforehand. bad example then.
14:26:17BlaXpirit.eval let a = -1; echo uint64(a) # Is this guaranteed?
14:26:20MimbusBlaXpirit: 18446744073709551615
14:29:30BlaXpirit"pretty much any system you’ll encounter these days uses two’s complement arithmetic"
14:39:21nimnoob123lets say my main file has a simple object, but i split my code off into 2 files (but both files need to use the same object) is there a way to basically forward declare a type in nim? what's a good approach to that?
14:40:14*randomwalk joined #nim
14:48:11BlaXpiritnope, cant do that
14:49:04def-nimnoob123: you can add a "types.nim" file and import that from both files
14:49:46nimnoob123i think the official httpclient does a when declared check thingy, could that work to temporarily create a nill object of the same type?
14:50:01def-no
14:50:04nimnoob123nil*
14:51:17def-BlaXpirit: unsigned ints are guaranteed to wrap around, signed ints can do whatever they want in C
14:51:24nimnoob123it just feels pointless creating a 2-5 line file and importing it
14:57:02*randomwalk quit (Ping timeout: 246 seconds)
14:57:58def-OderWat: i think it's finished: https://github.com/kanaka/mal#nim-0103
15:04:28*epichero joined #nim
15:08:56*jholland joined #nim
15:18:20*mal`` quit (Ping timeout: 252 seconds)
15:24:56*BlaXpirit quit (Quit: Quit Konversation)
15:27:28*mal`` joined #nim
15:36:18*aidanh quit (Ping timeout: 244 seconds)
15:37:52*aidanh joined #nim
15:38:53*gmpreussner|lapt joined #nim
15:40:11*darkf quit (Quit: Leaving)
15:52:07*aidanh quit (Ping timeout: 265 seconds)
15:54:56*aidanh joined #nim
15:56:30*brson joined #nim
16:04:26*ChrisMAN joined #nim
16:06:19*davidterry joined #nim
16:09:07*dhasenan quit (Remote host closed the connection)
16:10:46*davidterry quit (Ping timeout: 252 seconds)
16:13:30*Boscop_ joined #nim
16:14:44*gmpreussner|lapt quit (Ping timeout: 272 seconds)
16:15:25*aidanh quit (Ping timeout: 256 seconds)
16:16:58*Boscop quit (Ping timeout: 256 seconds)
16:19:21*mnemonikk joined #nim
16:21:15*aidanh joined #nim
16:31:48def-http://hookrace.net/blog/make-a-lisp-in-nim/
16:32:12nimnoob123hmm htmlparser's entityToUtf8 is weird, modified it to my needs https://gist.github.com/G4MR/42d52305fabc0c5619ec
16:32:30OderWat@def- very very cool!
16:33:31OderWatI think that also answers the question why I pointed out this project to you @def-
16:35:01*nimnoob123 quit (Quit: Page closed)
16:35:38gokrdef-: Cool stuff!
16:35:53def-A bit more complicated than the brainfuck interpreter
16:36:02gokrBtw, I
16:37:28gokrfowl showed me his glossolalia today, that's also slick stuff.,
16:37:28gokrMuch like PetitParser, but more nimish, so I am dropping that port off my list :)
16:37:52OderWatWhat about getting stuff like this to the frontpage of Nim? Like "Project of the Week / Month" with a backlog archive?
16:38:13def-gokr: that looks cool
16:54:23*wb_ joined #nim
16:57:22*wb quit (Ping timeout: 240 seconds)
16:58:46def-OderWat: a "Planet Nim" would be nice as a start in that direction, I think
16:59:57def-OderWat: Or someone starts making something like "This week in Rust/D/..."
17:02:34OderWatOr .. we put it on as "featured" on the website and are done for the next few weeks :)
17:05:13*phira quit (Excess Flood)
17:05:43*phira joined #nim
17:05:46*aidanh quit (Ping timeout: 252 seconds)
17:07:09*aidanh joined #nim
17:12:25gokrOderWat: Yeah, I will set up the planet, I dropped that ball a bit
17:12:48gokrI am also making a list of urls to articles - that I think we can maintain somewhere.
17:16:50*aidanh quit (Ping timeout: 264 seconds)
17:18:58*aidanh joined #nim
17:21:46*tumult quit (Ping timeout: 246 seconds)
17:55:05*davidterry joined #nim
18:00:02*davidterry quit (Ping timeout: 252 seconds)
18:20:13*nande joined #nim
18:23:33*fizzbooze joined #nim
18:24:19*aidanh quit (Ping timeout: 250 seconds)
18:27:35*aidanh joined #nim
18:31:03*johnsoft quit (Ping timeout: 252 seconds)
18:32:23*johnsoft joined #nim
18:36:22*aidanh quit (Ping timeout: 240 seconds)
18:36:46*gsingh93 joined #nim
18:46:29*kasprosian joined #nim
18:46:43kasprosianwhere can I find examples of nim source code on github?
18:48:00def-kasprosian: https://github.com/trending?l=nimrod
18:49:09kasprosiani'm a little surprised by the beauty of nim
18:49:12kasprosiantbh
18:49:30kasprosianquestion: has anybody had experience using a REPL with nimlang?
18:49:54gokrkasprosian: There is one buts a bit broken. But there are plans to renew it.
18:50:19kasprosianwhat exactly are those plans?
18:50:20gokr"buts"? I need coffee.
18:50:32*Menche quit (Ping timeout: 272 seconds)
18:50:38def-kasprosian: https://github.com/Araq/Nim/wiki/GSoC-2015-Ideas#create-a-new-repl-for-nim-using-tinycc
18:50:49def-without the gsoc part now since we were not accepted
18:51:16gokrWell, rest assured 3DICC wants this :)
18:51:44def-gokr: me too, i'm a bit worried it would not have ideal performance
18:51:46*aidanh joined #nim
18:51:53def-would probably have to hack into tinyCC at some point
18:52:34kasprosianany nim clones of nodejs?
18:52:43gokrI would also say that... dynamic reloading (using regular compiler) is similar.
18:52:49gokrAnd that we want.
18:53:45def-kasprosian: no clones, but you can look at jester and the async* stuff in the standard library for networking
18:54:20kasprosiannodejs's main idea is event-driven programming. I suppose that wouldn't be too hard in num, right?
18:54:31*Matthias247 joined #nim
18:57:16def-So I asked about why were rejected for GSoC but not much to improve in here: https://gist.github.com/def-/cb01b21094e34ece4c30
18:57:50*fizzbooze quit (Ping timeout: 246 seconds)
18:57:54*Menche joined #nim
18:58:28gokrdef-: Yeah. AFAICT, from the list of accepted - only relatively large language projects got in.
18:59:38def-gokr: If I had known that they'd only accept 137 projects this year I don't know if the application would've been worth it
18:59:54def-organizations*
18:59:56gokrdef-: Agreed. How many was it last year?
19:01:26def-190
19:01:41def-Increasing every year
19:01:45def-So I assumed ~200 this year
19:03:23onionhammeri dont think the REPL needs ideal performance
19:03:46onionhammermore just for rapid prototyping and experimenting, no?
19:06:13kasprosianI agree with onionhammer
19:06:35kasprosianthe REPL is to optimize human time instead of machine time.
19:06:53def-I've used the scala repl and when you can see it taking 1 second to do 1+1 that's no fun
19:07:18onionhammerwell, i dont think tinycc is that slow
19:07:46def-with the current approach the program inside your repl would grow and grow and the entire thing would have to be recompiled all the time
19:07:55onionhammerthats more about compilation speed probably def-
19:08:15onionhammertcc advertises quick compilation speed, but slower runtime
19:08:31onionhammerscala has to compile/jit everything before it actually starts up
19:09:44gokrPharo compiles, jits and runs "2+3" in... 0.04 seconds. :)
19:10:15gokrNo, wait...
19:10:41gokr0.04 ms I mean.
19:11:04onionhammerokay, im just saying thats probalby why scala is slow
19:11:12onionhammernim wouldnt have that issue
19:14:46*kasprosian quit (Quit: Page closed)
19:23:28onionhammerdef- I just did a 1+1 with tcc and it was 0.002s :P
19:23:42onionhammerit was actually a loop of 100 hello worlds
19:26:57*aidanh quit (Ping timeout: 256 seconds)
19:28:39*brson quit (Ping timeout: 265 seconds)
19:40:08*aidanh joined #nim
19:44:24*aidanh quit (Ping timeout: 245 seconds)
19:46:06*aidanh joined #nim
19:47:48*fizzbooze joined #nim
19:52:58*johnsoft quit (Ping timeout: 252 seconds)
19:53:34*johnsoft joined #nim
20:07:22Jehan_def-: That's really a JVM/Scala thing.
20:11:02Jehan_I can't think of pretty much any other JIT-based REPL that's so sluggish.
20:11:09*aidanh quit (Ping timeout: 256 seconds)
20:13:38*aidanh joined #nim
20:21:32dom96def-: That's really disappointing to hear.
20:23:59*elbow_json joined #nim
20:23:59*elbow_jason quit (Read error: Connection reset by peer)
20:28:55*sampwing joined #nim
20:36:59*BlaXpirit joined #nim
20:45:01*fizzbooze quit (Ping timeout: 265 seconds)
20:49:22reactormonkdef-, the 1+1 is only the first time usually, because it tends to load some stuff later
20:50:45*sampwing quit (Ping timeout: 252 seconds)
20:54:38def-reactormonk: the first one takes 10 seconds for me, from then on it's 1 second
21:02:18*bjz quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
21:04:06*BlaXpirit quit (Remote host closed the connection)
21:06:00*BlaXpirit joined #nim
21:08:12*fizzbooze joined #nim
21:12:35*aidanh quit (Ping timeout: 246 seconds)
21:16:55*sampwing joined #nim
21:17:46*aidanh joined #nim
21:22:46*d3m1gd quit (Quit: WeeChat 1.1.1)
21:25:39*rkj-b joined #nim
21:34:05*rkj-b quit (Quit: ChatZilla 0.9.91.1 [Firefox 35.0.1/20150122214805])
21:35:31gokrAnyone played with fuzzers to find bugs? Wondering if we could use it to harden Nim
21:40:47def-gokr: I have some experience with it. You'll need to know what part you want to test and make a test that can run really fast (< 1 ms ideally)
21:41:33gokrDid you play with the American Fuzzy Lop?
21:42:24def-yes: http://felsin9.de/nnis/software/#fuzzing-open-source-software-(2014)
21:42:31*brson joined #nim
21:43:05gokrdef-: Oh, wow :)
21:46:57*johnsoft quit (Ping timeout: 245 seconds)
21:47:10*johnsoft joined #nim
22:06:00*skroll3 is now known as skroll
22:16:13*reem joined #nim
22:21:28*fizzbooze quit (Ping timeout: 252 seconds)
22:22:47*sampwing quit (Ping timeout: 252 seconds)
22:31:42OderWatBTW I modified tcc to run on os x in jit mode and can run a lot of nim code with that. I just don't really understand why it can't find symbols like fputs or mmap. So I wrote replacement and stub functions for that. Using the same tcc on linux I can't get it to work because tcc does not like the inlcude files at all. Which I again don't understand as it bails on stuff like size_t even if I added that by hand. So all in all: yes it works for me to use tcc to
22:31:42OderWat directly run nim code on osx but it's very raw what I have so far.
22:35:41OderWatI basically call tcc with the stub and all files in nimcache. It is very fast and could easily made into a repl I guess.. my simple script for running nim code is: https://gist.github.com/oderwat/cef72aaab2ab6ea9a590
22:36:40OderWatThe "hard" part (if you wonder) is making it work on os x at all as tcc does not really like to run the nim generated c-sources because of missing symbols without the stubs.
22:45:35*fizzbooze joined #nim
22:45:43*reem quit (Remote host closed the connection)
22:47:11*sampwing joined #nim
22:55:48keldarissilly question: if I have a proc with the signature f(A: var cint) and call it using a cint a as f(a), it still passes a pointer as if I had called a f(A: ptr cint) with f(addr(a)), correct?
22:57:05Jehan_OderWat: You may want to look at https://bitbucket.org/behrends/nimr (it's not using tcc, but that could be addressed).
22:57:51Jehan_keldaris: Well, both compile to approximately the same code.
22:58:33Jehan_However, proc foo(x: var T) is closer to foo(T& x) in C++ than to foo(T* x).
22:59:10keldarisgood, foo(T& x) is what I'm trying to get
23:02:16OderWat@jehan_ I think thats something quite different as it compiles and runs the executable "just" from another (hidden) nimcache folder. The tcc thing I am into does not compile at all and loads all stuff dynamically (i call it nimjit atm). It even works with my own raw mysql experiments, loading mysqlclient and runs everything as "just in time" code.
23:03:04Jehan_OderWat: Yeah, I know. I mean as a basis instead of a shell script.
23:04:01*reem joined #nim
23:04:41def-OderWat: there is also a tinycc included with nim as well as a basic nim wrapper: https://github.com/Araq/Nim/blob/devel/compiler/tccgen.nim
23:05:04OderWat@jehan_ Well yes. I actually planed to make that an nim compiler feature :) (-jit) but I am not sure how much time I want to invest. It really bugged me that the same stuff which runs on my os x machine does not work in ubuntu "out of the box". I had to modify tcc to support $ in symbol names.
23:06:01OderWatI saw that @def- but it didn't work as I tried it. I don't remember why actually. Have to recheck that.
23:06:02Jehan_Huh. I hadn't realized Nim used $ in symbols? At least I've never seen it.
23:06:48OderWatThats the problem. When I used tinycc to compile system.nim it was missing stuff like _fputs$UNIX2003 and I can't find that anywhere
23:07:36def-OderWat: I tried using it like this, I think it worked so far: https://github.com/def-/Nim/blob/tcc-repl/compiler/tccgen.nim#L89-L120
23:09:20OderWatSo I modified system.nim to use fprintf() instead (and a lot other stuff) :) but thats not really a solution. I thought: just create stub versions of those missing stuff and ran into the problem that tinycc jsut don't like $ in symbol names. Which I could fix after finding how that works. I may have spent some time "for nothing" as I think there must be a way to get it compiler fputs() but how ... :(
23:10:50OderWatwas any of that on Darwin @def- ?
23:13:17def-OderWat: linux only
23:15:10*fizzbooze quit (Ping timeout: 256 seconds)
23:15:16OderWatSee.. my problem was this: https://gist.github.com/oderwat/48bee2d617ea3ec4c432
23:15:17*reem quit (Remote host closed the connection)
23:16:23OderWatI literally scanned my whole system to find anything containing this symbols but did not find anything!
23:16:37def-strange, i don't get any identifiers with a $
23:17:22*jjgedney joined #nim
23:17:38OderWatIf you search the net you find something about $UNIX2003 being some old versions of the libc which where there in the past. now apple seems not to include them anymore
23:21:32OderWatI replaced fputs with fprintf and (anonymous) mmap with (tadaa) malloc. That works to an extend. But as I said. This is so special I don't know if I want to spent more time with that.
23:22:02*reem joined #nim
23:25:50*OderWat quit (Read error: Connection reset by peer)
23:25:52*Jehan_ quit (Quit: Leaving)
23:25:54*Demos joined #nim
23:25:56*OderWat_ joined #nim
23:29:48*keldaris quit (Quit: Page closed)
23:30:59*sampwing quit (Ping timeout: 252 seconds)
23:31:12OderWat_Haha.. kernel panic because I plugged in a yubi-key.. way to go apple :(
23:31:26*filwit joined #nim
23:33:27*untitaker quit (Ping timeout: 256 seconds)
23:34:50*reem quit (Remote host closed the connection)
23:36:13*BlaXpirit quit (Quit: Quit Konversation)
23:38:42*untitaker joined #nim
23:41:08*reem joined #nim
23:43:45*brson quit (Quit: leaving)
23:49:59Varriountfilwit: I liked your forum post regarding Rust. I have the same feelings as well.
23:50:40filwitVarriount: good to hear
23:53:11Maxdamantuscomplimentary or complementary?
23:53:24*Maxdamantus suspects the latter.
23:54:21filwityou're probably right... i suck at spelling.. one sec
23:54:34VarriountI think its the latter as well.
23:54:35*Maxdamantus does too.
23:54:56Varriountfilwit: Your post is very well written though. Very... eloquent.
23:55:01*Maxdamantus usually struggles to spell things like "existence"
23:55:20filwitVarriount: thanks again :)
23:55:28filwitMaxdamantus: thanks for the typo catch
23:56:51*Maxdamantus hopes someday security will be practical.
23:57:10MaxdamantusRelated: https://www.youtube.com/watch?v=iSmkqocn0oQ
23:59:15*reem quit (Remote host closed the connection)