<< 10-12-2014 >>

00:05:40*brson quit (Quit: leaving)
00:06:09*AMorpork is now known as AFKMorpork
00:10:10*Jesin quit (Quit: Leaving)
00:12:13*Jesin joined #nimrod
00:30:01*dts|pokeball joined #nimrod
00:31:31dom96_ldlework: yes?
00:34:19*Enum joined #nimrod
00:35:15dom96_EXetoC: That looks pretty nice actually. More stuff needs to be white though I think.
00:35:15Araq_hi Enum what's up?
00:35:32Araq_dom96_: what about the news entry?
00:35:49EXetoCit was mostly about the layout though
00:36:32Enumhello, I am new to nimrod. just checking out the site
00:36:33EXetoCbut the current colors are fine with some tweaking
00:36:46dom96_EXetoC: I don't see what's different about the layout?
00:36:56dom96_Araq_: What news entry?
00:36:59EXetoCless clutter basically
00:37:11Araq_dom96_: you said mine was crap
00:37:14EXetoCfewer background colors
00:37:30EXetoCand nicer buttons imo
00:39:44dts|pokeballEnum, im new to nim too, and it is an awesome language. im currently writing a compiler in it
00:40:21Araq_Enum: the site has just been updated today. :D
00:40:38dts|pokeball:D it is?
00:41:25dts|pokeballthe forum looks the same
00:41:44Araq_the website is slightly better though
00:41:54Enumi just noticed it was updated. the new design is very good
00:42:17*Araq_ sighs
00:42:20Araq_thank you!
00:42:28Araq_I got the feeling nobody likes it
00:42:37dts|pokeballi like it
00:42:47willwillsonshould you be directing people to #nim yet?
00:42:48dts|pokeballits simple, and not flashy
00:43:25Araq_well still haven't released nim yet
00:43:31EXetoCum, where did the new design for the main page go now?
00:45:24willwillsonhttp://nim-lang.org/community.html links to #nim though?
00:46:27*Trustable quit (Quit: Leaving)
01:10:25*Jesin quit (Ping timeout: 252 seconds)
01:11:02*Jesin joined #nimrod
01:14:14*Jesin quit (Max SendQ exceeded)
01:14:47*Jesin joined #nimrod
01:35:02*Enum left #nimrod (#nimrod)
01:40:57*MightyJoe quit (Ping timeout: 240 seconds)
01:45:25*MightyJoe joined #nimrod
02:09:43*flaviu joined #nimrod
02:11:44ldleworkLETS MOVE
02:12:24dts|pokeballto?
02:12:33flaviu#nim?
02:12:43flaviuIsn't Araq supposed to set up the redirect
02:16:28dts|pokeballoh
02:38:32*q66 quit (Quit: Leaving)
02:44:31ldleworkIs there a shorthand for discard?
02:46:26EXetoCno
02:46:57EXetoCthere's nil, but it can't be used for that in the recent versions
02:47:35EXetoCexcept for object variants, which seems like a bug. discard doesn't work there
02:55:05ldleworkEXetoC: any idea where there's some code to look at for learning how to use async in Nim?
03:06:59*darkf joined #nimrod
03:28:39*flaviu quit (Ping timeout: 252 seconds)
03:43:38*dts|pokeball is now known as dts
03:43:57*willwillson quit (Ping timeout: 258 seconds)
03:44:02*dts is now known as dts|pokeball
04:44:11*fowl joined #nimrod
04:50:51Varriountldlework: nimforum is async now.
05:17:18*ARCADIVS joined #nimrod
06:08:46*khmm joined #nimrod
06:13:06*khmm quit (Ping timeout: 265 seconds)
06:17:43*khmm joined #nimrod
06:48:38*Trixar_za quit (Ping timeout: 244 seconds)
06:52:25*Trixar_za joined #nimrod
06:53:27*johnsoft quit (Ping timeout: 272 seconds)
06:53:36*johnsoft joined #nimrod
07:05:36*rpag joined #nimrod
07:10:37*gokr_ quit (Ping timeout: 240 seconds)
07:10:51*gokr_ joined #nimrod
07:21:17*jux quit (Remote host closed the connection)
07:29:16*bjz joined #nimrod
07:38:58*rpag quit (Ping timeout: 244 seconds)
07:41:43ldleworkWhy is "var build_registers = initTable[BuildRequest, JObject]()" giving me "rdlclone.nim(18, 46) Error: type expected"
07:47:16*gour joined #nimrod
07:51:03gokrGood morning!
07:51:12*johnsoft quit (Ping timeout: 258 seconds)
07:52:00*johnsoft joined #nimrod
07:52:00*gokr_ quit (Read error: Connection reset by peer)
07:52:46gokrBtw, if you like, feel free to link my other articles on Nim from the learn.html page. I also am collecting a few good links we can stuff in there.
07:53:05*gokr_ joined #nimrod
07:57:19gokrAraq_: On this page, a bunch of typos: http://nimrod-lang.org/learn.html ("comparible", "langues", "Documenation"). Further, I would personally change the title to simply "Learning Nim".
07:57:24gokrA bit simpler :)
08:07:30*kniteli quit (Ping timeout: 264 seconds)
08:08:26ldleworkgokr: you could link my article
08:08:58gokrI am not the one with power over the website
08:09:17gokrI have no power at all in fact - except over two of the buildslaves :)
08:09:31ldleworkyou mentioned you were gathering a few good links
08:09:51gokrAh, yeah, I am gathering - but haven't published yet. But your article is already in my list :)
08:10:00gokrSo you need to write more.
08:10:00ldleworkawesome :)
08:10:12gokrI will stuff it into my Nim page... hmmm, can do that immediately btw.
08:10:35gokrdts|pokeball: Started fiddling myself on porting PetitParser btw
08:10:43gokrCouldn't help myself.
08:11:01ldleworkI am getting runtime failures with the redis client :(
08:11:42dts|pokeballw(°o°)w
08:12:07dts|pokeballyou probably write better nim code than me anyways lol. could you give me the repo so i can see what you have?
08:13:25gokrHaven't set anything up yet, only started small. But will do during the day
08:13:49gokrIts interesting - how to "best" port.
08:21:21gokrToday its time: http://www.nobelprize.org/ceremonies/
08:22:12*milosn quit (Remote host closed the connection)
08:22:43*Trustable joined #nimrod
08:42:19*yglukhov___ joined #nimrod
08:57:51*dyu joined #nimrod
08:59:27*irrequietus joined #nimrod
09:01:11*milosn joined #nimrod
09:24:34gokrWill THash also be renamed to Hash etc? I presume we just haven't had time yet
09:33:33*repax joined #nimrod
09:36:39ldleworkError: internal error: GetUniqueType
09:36:42ldleworkNo stack traceback available
09:38:55ldlework"Error: internal error: GetUniqueType
09:38:57ldleworkNo stack traceback available
09:39:00ldleworkoops
09:39:04ldleworkvar labels = seq[string]
09:39:11ldlework^ this seems to break the compiler?
09:42:49*ARCADIVS quit (Quit: ARCADIVS)
09:48:19gokrYou need to do "var labels = newSeq[string]()"
09:49:42ldleworkah
09:50:03gokrOr "var labels: seq[string] = @[]"
09:50:03ldleworkthanks
09:50:27gokrI have done the same mistake :)
09:50:45ldleworkprobably should clean up that error..
09:52:05ldleworkgokr: I was thinking about a stdlib module called 'sink' which would include a number of the base stdlib modules like strutils and hashes and so on and so forth
09:52:29ldleworkor 'batteries'
09:52:33gokrHehe
09:52:53ldleworkI mean
09:53:01ldleworkwe have good deadcode detection right
09:53:23gokrI think I am going to start stuffing all my extensions into some lib - and then gradually one can see if parts go "upstream"
09:53:52ldleworkI hope that flaviu can bootstrap nimlets to the point where others can contribute
09:54:00ldleworkI feel like that will be a great resource
09:54:14gokrI missed that one, what is it?
09:54:36ekarlso-flaviu ?
09:54:38ldleworkits a github pages site where nimfiles are parse and transformed into html pages
09:55:13ldleworkso anyone can contribute tagged snippets of nim code and when it is committed it will be viewable on the searchable site
09:55:18ldleworkall done statically
09:56:00ldleworkekarlso-: I think that's how you spell his name
09:56:13gokrCould be useful
10:24:36gokrHmmm, == is interesting.
10:34:52gokrSo, if I have regular ref objects, and don't define `==`*, then... it falls back on the defined `==` for refs (pointer comparison). Fine.
10:37:43*dirkk0 joined #nimrod
10:39:04gokrIf I define my own `==`* then its used instead. Fine. If I then ... for some reason decide to do "a[] == b[]" I first erroneusly thought my own == would be used, but... no.
10:40:45gokrWhich I can understand I think, I then have... an "object" and not the "ref object". So the methods aren't resolved anymore, since they are defined for the "ref object" type.
10:41:41gokrI guess.
10:42:17gokrSo it then falls back to a "field by field" == implementation in system.nim.
10:42:49gokrBut it doesn't see inherited fields.
10:57:23*erufu joined #nimrod
10:57:29*erufu left #nimrod ("WeeChat 0.3.8")
10:57:43*BlaXpirit joined #nimrod
11:00:22gokrThe original question I had was basically how to check for identity. Doing "if addr a == addr b" seems .. not so neat.
11:16:15*dirkk0 quit (Quit: Leaving)
11:16:36gokrHaha... funky. So... you need to know that "self" can actually end up being nil. For example, let's say you define `==` in your Pumpkin "class". Then do "if nil == myPumpkin: yadda"
11:17:25gokrSince this is multidispatch, we end up in the right method, but self is nil, and "other" is a Pumpkin. Just as expected, but still a gotcha if you are not careful.
11:17:37*quasinoxen quit (Ping timeout: 252 seconds)
11:17:37*NimBot_ quit (Ping timeout: 252 seconds)
11:18:00*quasinoxen joined #nimrod
11:18:01*NimBot_ joined #nimrod
11:34:05*flaviu joined #nimrod
11:52:47*flaviu quit (Ping timeout: 245 seconds)
12:02:08*gokr watching Malala get the peace prize, seems finally like a proper choice.
12:02:29*AFKMorpork is now known as AMorpork
12:15:46EXetoCgokr: I think it's best not to rely on the fact that an instance might be a ref for example
12:16:46gokrYou refer to the idea of making a identity shortcut check like that?
12:17:46*milosn quit (Remote host closed the connection)
12:24:11*BitPuffin joined #nimrod
13:30:57*gokr_ quit (Ping timeout: 240 seconds)
13:31:04*gokr_ joined #nimrod
13:33:08*gokr quit (Ping timeout: 258 seconds)
13:33:09*gokr_ quit (Read error: Connection reset by peer)
13:36:25*gokr joined #nimrod
13:37:44*matkuki joined #nimrod
13:40:34*matkuki quit (Client Quit)
13:43:33*Amrykid2 joined #nimrod
13:43:36*Amrykid2 is now known as Amrykid
13:43:42*Amrykid quit (Changing host)
13:43:42*Amrykid joined #nimrod
13:56:00*repax quit (Quit: Want to be different? Try HydraIRC -> http://www.hydrairc.com <-)
14:11:56*khmm quit (Ping timeout: 244 seconds)
14:16:51*khmm joined #nimrod
14:23:34*untitaker quit (Ping timeout: 245 seconds)
14:25:53*gour quit (Quit: Konversation terminated!)
14:28:02*gour joined #nimrod
14:29:17*untitaker joined #nimrod
14:36:15*gour_ joined #nimrod
14:39:25*gour quit (Ping timeout: 255 seconds)
14:42:12*lyro` joined #nimrod
14:42:13*lyro` quit (Remote host closed the connection)
14:46:54*BlaXpirit quit (Ping timeout: 245 seconds)
14:51:43gokrAraq_: Is the fields() iterator meant to operate on all inherited fields? I would guess so, but it doesn't.
14:55:18*milosn joined #nimrod
15:22:38*gour_ is now known as gour
15:26:57*khmm quit (Ping timeout: 240 seconds)
15:38:34*brson joined #nimrod
16:14:14*darkf quit (Quit: Leaving)
16:23:17*willwillson joined #nimrod
16:29:07*iprignano joined #nimrod
16:29:27*iprignano left #nimrod (#nimrod)
16:35:21*cyraxjoe joined #nimrod
16:35:53*MightyJoe quit (Ping timeout: 264 seconds)
16:37:05*rHermes|webchat left #nimrod (#nimrod)
16:45:54*CARAM_ quit (Ping timeout: 244 seconds)
16:47:29*endou_____ quit (Ping timeout: 258 seconds)
16:54:17*gour quit (Quit: Konversation terminated!)
16:57:15*rpag joined #nimrod
16:57:47*gour joined #nimrod
17:02:31*kniteli joined #nimrod
17:17:32*gour quit (Quit: Konversation terminated!)
17:19:51*gour joined #nimrod
17:19:59willwillsongokr: not sure if it should return base type fields, but you can you use the typeinfo module to get the base type and then iterate over the fields of the base type
17:20:25*rpag quit (Quit: Leaving)
17:23:56*q66 joined #nimrod
17:33:13*BlaXpirit joined #nimrod
17:34:09*milosn quit (Read error: Connection reset by peer)
17:35:41*milosn joined #nimrod
17:40:27*filwit joined #nimrod
17:49:55ldleworkhello everyone
17:50:39willwillsonhi
17:51:09*endou_____ joined #nimrod
17:51:37EXetoCldlework: I've barely used the async stuff so I don't know. did anyone help you with that?
17:51:50EXetoCI think various official projects use it, and there are probably tests for it too
17:52:08ldleworkEXetoC: not really but I think its probably something I'll hold off looking into for a while
17:52:49*filwit quit (Quit: Leaving)
17:53:18Araq_damn, I missed filwit
17:54:06ldleworkAraq_: I watched your Nim talk last night
17:54:11ldleworkcongrats you're not the worst speaker alive!
17:55:53EXetoCso he's alive
17:56:03EXetoCassuming that it's not a case of identity theft
17:56:36Araq_ldlework: er ... thanks?
17:56:49ldleworkAraq_: sorry, it was indeed a compliment
17:57:27Araq_btw after 10 minutes they told me there are 5 minutes left or something
17:57:38ldleworkyeah I laughed outloud and woke up my girlfriend
17:57:42ldlework^_^
17:57:49Araq_and usually the talk takes 30 minutes
17:57:53ldleworkyour response was like "uh... okayyyyy?"
17:58:20ldleworkterm rewriting macros are crazy
17:58:23Araq_yeah and then I thought "no, I will not skip anything"
17:58:43Araq_"this talk makes no sense without the juice"
18:00:01Araq_term rewriting macros are another feature that is "obviously" wrong
18:00:54Araq_except that Haskell has them too and afaict they do not cause any damage over there
18:02:06Araq_time will tell, for now the stdlib doesn't use them. I thought about putting them in "experimental", but then there is already a global switch to turn them off
18:03:41*CARAM_ joined #nimrod
18:04:38*gokr_ joined #nimrod
18:05:10Araq_gokr_: hrm quite sure I have a test for 'fields' + inheritance, but all the fields need to be public for it to be allowed
18:08:02*nullmove joined #nimrod
18:08:59EXetoCdamn over-the-top web 2.0 websites slowing down the browser
18:09:29gokrwillwillson: If it doesn't return all - then the generic `==` will not compare all fields.
18:10:20willwillsongokr: good point, it seems like it should.
18:11:12gokrAraq_: https://gist.github.com/gokr/1013542c842f1d896f29
18:11:17gokrThat gives me only "bb"
18:11:37gokrOk, gotta run.
18:19:20ldleworkWas the irc module removed?
18:19:37EXetoCbecause it's now a standalone package
18:19:54ldleworkok
18:22:20ldleworkcurious? https://github.com/thomaslee/nim
18:22:37*gokr_ quit (Ping timeout: 240 seconds)
18:24:52*gour_ joined #nimrod
18:28:17willwillsonldlework: http://forum.nimrod-lang.org/t/562#3014 for Araq's response to that
18:29:20*gour quit (Quit: Konversation terminated!)
18:30:07*yglukhov___ quit (Ping timeout: 272 seconds)
18:32:16*gour joined #nimrod
18:35:50*gour quit (Client Quit)
18:36:21*gour joined #nimrod
18:49:21*Matthias247 joined #nimrod
18:52:38*gokr_ joined #nimrod
18:59:28*ldlework considers portin paramiko
19:00:10*Varriount considers porting ldlework
19:00:41Araq_Varriount!
19:00:49VarriountAraq_!
19:01:13VarriountAraq_: I told you I was busy with exams. That's why I haven't been on.
19:01:37Araq_yeah but I am disappointed that you keep your word
19:02:25Araq_are exams over now?
19:03:00VarriountWell, technically they are over at the end of the week. I still have an exam today, and a report to turn in by Friday.
19:03:41VarriountSo, I will soon start working on the buildbot again. I've missed it.
19:04:01Varriount(I've also been working on a cross-platform path library at work)
19:07:05Araq_how do you like our new website?
19:08:54Araq_omg ... seriously
19:09:16Araq_if you want to improve my productivity, make a tool to extract snippets from bug reports
19:09:40Araq_copy&paste from firefox is unacceptable because it often loses newlines
19:09:57Araq_(what is this ... 1970?)
19:10:46Araq_hrm Chrome doesn't have this bug
19:11:00Araq_Chrome also manages to show the URL that belongs to the tab (!)
19:11:59Araq_Varriount: PLEASE, I need the test reports
19:12:10VarriountAraq_: Yes, yes, I know.
19:12:22Araq_no merge, no features
19:12:31Araq_should what the tester produces
19:12:35Araq_*show
19:12:39VarriountYeah. I have the basic code mostly done. I just need to test it.
19:12:53Araq_don't talk to me. Test it.
19:13:03Araq_bbl
19:13:17VarriountAraq_: I'm in class. About to take an exam.
19:21:19*BitPuffin quit (Ping timeout: 264 seconds)
19:24:39*gokr_ quit (Ping timeout: 258 seconds)
19:26:55*nullmove quit (Quit: Leaving)
19:30:15*rpag joined #nimrod
19:44:04*j3rky joined #nimrod
19:46:43*gour quit (Quit: Konversation terminated!)
19:49:03*gour joined #nimrod
19:49:34*dts|pokeball quit (Quit: Leaving)
19:49:57*dts|pokeball joined #nimrod
19:51:37*dyu quit (Ping timeout: 240 seconds)
20:01:12*gour_ quit (Ping timeout: 260 seconds)
20:01:40*dts|pokeball quit (Quit: Leaving)
20:02:05*dts|pokeball joined #nimrod
20:02:40*gour quit (Quit: Konversation terminated!)
20:06:44*gour_ joined #nimrod
20:18:23*yglukhov___ joined #nimrod
20:39:56*flaviu joined #nimrod
20:48:59*yeye123 joined #nimrod
20:49:05*gour_ quit (Ping timeout: 264 seconds)
20:53:25*Mat4 joined #nimrod
20:53:29Mat4hello
20:54:05Araq_hi Mat4. how do you like our new website?
20:54:22Mat4hi Araq_
20:54:57Mat4I think it is a nice design despite somewhat to dark for my TFT display
20:55:00*gour_ joined #nimrod
20:55:32*gour_ quit (Client Quit)
20:57:35yeye123sorry for newb question: {.cdecl.} what does this pragma do?
21:00:08Varriountyeye123: http://nimrod-lang.org/manual.html#procedural-type_toc
21:00:09flaviuyeye123: don't worry about it, see: http://nimrod-lang.org/manual.html#procedural-type
21:00:17VarriountXD
21:01:18Varriountyeye123: It changes the calling convention of a procedure. It's not really needed for most code.
21:01:21flaviuI feel that I've read the docs so many times that I've transformed into a human search engine :P
21:02:23Araq_if only somebody would gather all the keywords of the language into some index ... ;-) :P
21:02:49yeye123thank you guys, I'm still just starting out finding my way in the doc
21:04:18Araq_http://nim-lang.org/theindex.html
21:04:23Araq_CTRL+F
21:04:26Araq_cdecl
21:05:30yeye123thanks araq, I'll do that next time, thank you for your time again
21:06:06Araq_no worries
21:10:11flaviuAraq_: Bug fixes over the last few month have been really impressive: http://i.imgur.com/pPXLZ5L.png
21:12:35Araq_thanks, but I need to fix 31 bugs in 20 days ...
21:13:27flaviuWell, you just did 80 in 30 days.
21:13:41flaviu31 in 20 should be a piece of cake ;)
21:13:46VarriountHm... why is the buildbot page reporting that all the builders are offline
21:16:06*gokr_ joined #nimrod
21:17:27Araq_I'm writing a "Why should I be excited?" FAQ entry
21:17:35flaviuVarriount: Looks like it may be a problem on my side for the arm builder
21:17:47flaviuI'm investigating the logs atm
21:17:51Varriountflaviu: Yeah, but on my side, I'm getting timeout errors.
21:17:55*yeye123 quit (Quit: Leaving)
21:17:58*gour joined #nimrod
21:18:02Varriount(My side being the windows builders
21:18:19VarriountAnd... I can't remember the password to the buildbot ssh. drat
21:18:36*milosn quit (Remote host closed the connection)
21:18:38flaviuVarriount: pfft, still using passwords like a pleb?
21:19:01Varriountflaviu: I tried for 3 days to get ssh keys working, and couldn't do it.
21:19:25flaviussh-copy-id -i ~/.ssh/id_rsa.pub user@target
21:20:08Varriountflaviu: I'm on windows, remember?
21:22:41Mat4use Cygwin
21:23:01*gour quit (Quit: Konversation terminated!)
21:24:58flaviuRebooting, lets see if that fixes things.
21:25:46*bjz quit (Ping timeout: 255 seconds)
21:25:55VarriountOh, remembered it.
21:26:39gokrHey
21:26:44Varriountflaviu: Aren't ssh keys supposed to be bound with a password though?
21:26:46gokrI also wondered why they are offline.
21:27:04gokrI tried getting the linux64 up again, but... not sure what is going on.
21:27:24flaviuVarriount: If you want to protect against people who break into your PC. But at that point you're screwed anyway, so I don't bother.
21:27:36*gokr watching the Nobel banquet - laureates speeches now
21:27:59flaviuApparently there are ssh agents that deal with the password, so you only have to type it once and then it's in memory.
21:28:58Varriountflaviu: I'd argue that (unless you have an encrypted partition) storing ssh keys without a password is no better than having a password stored in plaintext on your computer.
21:29:20flaviuVarriount: Luckily, I do have whole disk encryption on everything
21:31:20Mat4Araq_; building a kernel for AMD64 fails with error: Cannot open 'panicoverride'. What does this mean ?
21:37:01*NimBot joined #nimrod
21:37:44dom96_oh dear.
21:37:47dom96_What did Varriount do?
21:42:21gokrHm?
21:43:11*Varriount joined #nimrod
21:45:17gokrArgh
21:46:01gokrThe links bar (at the top) on the homepage is not consistent.
21:46:05Varriountgokr: I think something is wrong with the VPS - that's why none of the builders can connect.
21:46:14gokrThe forum has different links.
21:46:22gokrOk
21:46:34gokrJust let me know if you need me to do anything.
21:46:43dom96_Varriount: What did you do?
21:47:22flaviuVarriount: Try checking the logs. Also, if there isn't any sensitive information on it, I'd like to take a look at it.
21:48:03Varriountdom96_: I restarted the vps, after updating it.
21:48:22dom96_Why?
21:49:13Varriountdom96_: Force of habit - that's what I usually try first when a program messes up.
21:49:32VarriountOn reflection, it wasn't a terribly good idea.
21:50:52dom96_Yeah...
21:50:58dom96_Don't ever restart the VPS.
21:51:26flaviuIf restarting the VPS is a problem, I see that as a big problem.
21:51:26dts|pokeball8
21:51:43gokrHehe, the chefs are toasting in champagne out in the kitchen at the Nobel banquet. :) Out of relief.
21:51:43dts|pokeball16
21:52:03flaviuThe vps should automatically launch all it needs to launch on start up.
21:52:04dts|pokeball24
21:52:07Varriountdom96_: Do you still run the forum through an ssh session?
21:52:07dts|pokeball26
21:52:10dom96_flaviu: That's not the issue.
21:52:19dom96_flaviu: The issue is the unnecessary downtime.
21:52:27dom96_And the fact that I run BNCs up there.
21:52:37gokrBNC?
21:52:40dom96_Not fun to lose connection while you're chatting with someone.
21:52:50flaviuOh, the bouncer is on the vps.
21:52:56*milosn joined #nimrod
21:53:14dom96_Varriount: what do you mean?
21:53:19dom96_Varriount: It's ran using upstart.
21:53:56flaviuI thought there were two VPS's, one for the buildbot and another for the site.
21:54:12Varriountdom96_: Oh. I must have misunderstood you. A while ago, I asked, and you said you ran the forum manually, through an ssh session
21:54:20dom96_Another possible issue is somebody trying to post to the forum as the server dies.
21:54:27dom96_Causing them to lose their post.
21:54:53dom96_Varriount: I moved everything to that VPS recently from the old one.
21:57:34*dts|pokeball quit (Read error: Connection reset by peer)
21:57:35*Araq0 joined #nimrod
21:57:49Araq0so Varriount killed my bouncer?
21:57:58*dts|pokeball joined #nimrod
21:58:24Araq0Mat4: that is documented, you need to provide that file on your own or copy it from tests/manyloc/standalone
21:58:38*dts|pokeball quit (Read error: Connection reset by peer)
21:58:41VarriountNot intentionally... :<
21:59:07gokrOh, so a bouncer is basically to not miss out when not online?
21:59:09Mat4Araq0: thanks
21:59:24*dts|pokeball joined #nimrod
21:59:38Mat4so I get a test interpreter running
22:00:50dom96_gokr: It's an IRC client that is connected to an IRC server 24/7
22:00:53*dts_ joined #nimrod
22:01:11gokrYeah, I googled it, and I guess the primary advantage is not missing out.
22:01:15dom96_gokr: It also acts as a server, so you can connect to it and see what you missed
22:01:21dom96_yep
22:01:44*dts_ left #nimrod (#nimrod)
22:04:08Mat40.43 ms (subroutine threading) against 1.06 s ('switch' threading) for 1000000 dispatches is not that bad I think (Intel Code i3, 1.83 GHz)
22:04:40Araq0killing a bouncer is actually quite hard: https://www.youtube.com/watch?v=UfRGG-5FxkA
22:05:39VarriountPfft, I just keep my irc client on all the time.
22:06:56Araq0Mat4: tried .computedGoto pragma?
22:07:14Mat4yes, this moment
22:07:34Mat4the subroutine threading test is here: https://gist.github.com/anonymous/d0b35c40ceff69144137
22:07:50gokrAraq0: I checked the tests in tests/fields/... but I can't see any code using inheritance like my trivial test does.
22:08:04gokrAraq0: You saw my gist, right?
22:08:09Araq0gokr: well that's too bad then :-/
22:08:11Araq0yes.
22:09:59*quasinoxen quit (Read error: Connection reset by peer)
22:10:08*starless joined #nimrod
22:10:50*quasinoxen joined #nimrod
22:10:52gokrA question there, so I don't forget - if I define `==` on my ref object - then Nim will call that instead of the `==` generically defined for ref. But... can I still somehow compare two refs to check if they actually refer to the same object?
22:11:33flaviuaddr obj1 == addr obj2?
22:11:41gokrWell, that feels hackish
22:12:10gokrBut yes, is that the only way to do it?
22:12:11Araq0system.`==`(a, b)
22:12:37Araq0and please do never use: addr obj1 == addr obj2
22:12:51Araq0I can't imagine this to work for anything in practice
22:13:29Araq0if object identity is important, you should use 'ref obbject' or 'ptr object' in the first place
22:13:50gokrBut these guys are ref objects.
22:14:08Araq0then don't compare their addresses
22:14:38Araq0use system.`==`(a, b) to get the builtin equality
22:14:50gokrI was porting some code and there was an "equals" method that started out with checking if the two objects were in fact the *same*, and if so trivially could answer true.
22:15:07Araq0listen to me
22:15:15Araq0use system.== for that
22:15:44gokrWhich doesn't work :)
22:16:04gokrBut ok, given that it's fixed to work - yes, it will do a field-for-field == check.
22:16:13Araq0why not?
22:16:28Araq0no, it will do a 'ref' check
22:16:47gokrEhm, ok, sorry - yes.
22:17:02Araq0and it should really work on devel
22:17:11*Amrykid joined #nimrod
22:17:16gokrOk, got it. Although it might look pretty ugly.
22:17:26*Araq joined #nimrod
22:17:32Araq0I think it's perfectly clear
22:17:45Araq0you define an == with the help of the builtin ==
22:17:49*irrequietus quit ()
22:18:01gokrYeah, well, its ok.
22:18:26*dom96 joined #nimrod
22:19:08*jux joined #nimrod
22:21:00Araq0gokr: well please report system.== not working and the fields bug
22:21:44Mat443 ms against 46 ms
22:22:01gokrsystem.== works I think. But fields doesn't.
22:22:59Araq0Mat4: computedGoto loses?
22:23:33Araq0it's much easier to keep important stuff in registers with computedGoto though
22:24:08Mat4the computed goto version is slightly slower because of increased BTB misses
22:24:33gokrI need to test a bit how methods work on object vs ref object. It suddenly turned a bit confusing to me.
22:25:51*Araq0 quit (Quit: Page closed)
22:25:55Varriountgokr: Methods, or procedures?
22:26:11Mat4Araq0: I do not think think that matters because an efficient interpreter execute instruction combinations instead of single variants
22:26:42AraqMat4: no way. that works for Forth, but doesn't for Nim.
22:26:52AraqNim requires too many different opcoded
22:26:55Araq*opcodes
22:27:22gokrwell, perhaps both. What triggered my confusion was the fact that there is `==` for "ref T" in system.nim (comparing the pointers I presume) and that's run *unless* there is a `==` defined for the "class" itself.
22:28:09Araqgokr: well yes, it kind of works like 'override'
22:28:40Araqthough perhaps you're better off with an 'equals' method
22:29:05willwillsonbut if you dereference the objects, doesn't system.`==` only compare non-inherited fields?
22:29:08gokrAnd then... I of course realized that "a[] == b[]" ... doesn't use the `==` defined in the "class" (you know what I mean) - but falls back on the `==` in system.nim for object (recursive == check on all fields).
22:29:09Araqor with ==? or some other equality like operator
22:29:28gokrSince "a[]" is not the "ref object" type - its the object type.
22:29:37Araqwillwillson: yeah but that's a bug :P
22:30:34gokrSo... now I started wondering what happens if I use a Banana and a BananaObj type - and put methods on both those.
22:31:37willwillsonis gokr going to report that one?
22:31:43gokryeah
22:31:47willwillsoncool
22:31:53gokrIts a pretty serious bug.
22:32:22AraqI can make it a showstopper for you
22:32:45gokrIn fact... it implies that... there can't be that much OO Nim code out there. Although I kinda knew that.
22:33:02Araqno, it doesn't imply that at all.
22:33:15gokrNo? It feels like it should have been discovered.
22:33:33Araqand I know of several projects that use 'method' all over the place
22:34:08Araqgokr: why? '==' for object types is rare and when it's used the objects are tuple like
22:34:20Araqand == for ref object doesn't have the problem
22:34:20gokrRare?
22:34:49Araqyes.
22:35:02gokrIs there something specific making it rare in Nim - or are you saying that equality is a rare behavior in OO systems?
22:35:20AraqI'm saying everybody uses 'ref object' anyway
22:35:54gokrI don't get it. Perhaps I am missing something here.
22:36:15gokrIsn't == the equivalent of equals?
22:36:37Araqagain == for 'ref object' works and does work like in Python/Lua/SmallTalk
22:36:54gokrSmalltalk (lower case :))
22:37:19Araqand people either hand code their 'equals' because they don't know about fields or the current behaviour turns out to be fine
22:37:24gokrYou mean "if we point at the same guy - its true, otherwise false"?
22:37:29Araqbecause the base object is abstract anyway and has no fields
22:38:26*rpag quit (Remote host closed the connection)
22:38:37gokrI haven't looked in detail - but I presume hash and == needs to be kept in sync for Tables to work properly?
22:38:45Araqyup
22:38:55gokrI don't think that's mentioned in the Tables code btw.
22:38:59gokrI may be wrong.
22:39:09Araq- document the tables module better
22:39:11gokrIt did however explain the hash mechanism.
22:39:14Araqis in my todo
22:39:19gokrsure, got it.
22:39:39Araqthe compiler itself uses == for *objects*
22:39:40gokrSo, in Smalltalk we use == and =. The former is identity, the latter is equality.
22:40:08gokrAnd the default implementation of = is to use ==.
22:40:09Araqbut these objects don't use inheritance and so I didn't notice the bug
22:40:33gokrsure
22:40:49Araqidentify vs equality are good names, yeah
22:40:57Araq*itentity
22:41:17gokrSo anyway, its quite common in Smalltalk at least - to have custom = methods. Always synced with hash of course.
22:41:45gokrAlso, in Smalltalk we have both Dictionary and IdentityDictionary.
22:42:17gokrThe former is a general hash table. The latter uses identity of the keys, not equality.
22:42:32gokrWhich often is what you want anyway - in Smalltalk at least.
22:43:10gokrAnyway, a common pattern in = methods is to use == to check for identity as a "shortcut"
22:43:45Araqyeah. it's the same everywhere else
22:44:21gokrright
22:44:38gokrI just... am being overly explicit - since Nim may have other mechanisms.
22:45:33gokrSo... if I define == in my "ref object" type, and would like to do an identity check - I would do "if system.`==`(self, other): ..." - right?
22:45:59gokrCause that would use the one defined for "ref T", which is a magic.
22:46:45Araqright
22:46:50dom96_btw I know that the links at the top in the forum don't match up the main website. I will fix it ASAP.
22:47:15Araqdom96_: well the links at the top are not consistent on the website either
22:47:22gokrdom96_: cool. But also, the main website has an inconsistency - "community" tab.
22:47:27gokr(right)
22:47:34Araqwe have too many tabs so "news" and "community" didn't make it
22:47:37dom96_I see
22:47:48dom96_Then Araq has to fix that.
22:47:51gokrBut hey, great work anyway! ;)
22:47:53AraqI actually like this solution ...
22:48:12Araqthe website has hidden tabs, that's an easter egg
22:48:35ldleworklol oh brother
22:50:18onionhammerdom96_ also the logo flash
22:50:21onionhammerfix that too plz ;)
22:50:48ldleworklogo flash?
22:50:55flaviuA couple comments on the forum: "Online IRC" has the wrong url, "Github Issues & Requests" has a misleading name, unstable documentation isn't linked to, the links in copyright footer don't go anywhere.
22:50:59flaviuerr, the website
22:51:44Araqflaviu: yes. all known issues.
22:52:02AraqI think we should rename this channel now though
22:52:09ldleworkplease do
22:52:41flaviuA bit more subjective: I don't really like Ralph Waldo Emerson, it sounds like it's comparing the project to "Socrates, and Jesus, and Luther, and Copernicus, and Galileo, and Newton" in misunderstoodness
22:52:54flaviu*the Ralph Waldo Emerson quote
22:53:25Araqwell we renamed the language due to misunderstandings ...
22:55:09flaviuYeah, but the quote isn't very humble. You're supposed to let everyone else say you're awesome, not say so yourself.
22:56:18Araqthe website never was humble
22:57:42ldleworkhi flaviu
22:59:27Araqflaviu: but ok, come up with a good quote and I'll replace it.
22:59:43dom96_Remove the quote from the main site
23:00:02flaviuAraq: The quote at the top of this page: http://reign-studios.net/philipwitte/nim/
23:00:03Araqdom96_: we need more code snippets then
23:00:05flaviuldlework: Hey!
23:00:06dom96_It's really not important info for the user.
23:00:13dom96_Add a screenshot of Aporia
23:00:20gokrAraq: You liked Dijsktra, right? Must be quotes there :)
23:00:20dom96_or your talk
23:00:27gokrDijkstra.
23:00:30dom96_or some other cool projects
23:00:34dom96_Make it an overview
23:00:38dom96_of what people created
23:00:42dom96_or something _interesting_
23:00:47Araqomg, you always want screenshots from Aporia :P
23:00:53Araq*of
23:00:56dom96_*shrug*
23:01:01ldleworkI wouldn't advertise Aporia until it actually works
23:01:02Araqwell
23:01:20Araqas I said, I lack the content
23:01:28dom96_It's still the most impressive Nim project.
23:01:31dom96_IMO
23:01:35Araqgimme content and I'll replace it
23:01:35flaviuI think filwit's examples are great: the first thing a newcomer wants to see is example code, and it provides the code.
23:01:40ldleworkdom96_: it'll be a lot more impressive when it works :)
23:01:55flaviudom96: It may be impressive, but it isn't pretty.
23:01:55Araqldlework: that's mostly the compiler's problem though
23:02:02dom96_ldlework: It is open source.
23:02:04ldleworkAraq: right but still
23:03:08flaviuBtw, I think filwit intended for the top header to be all lowecase
23:03:24dom96_oh yeah. filwit messaged me.
23:03:27flaviuI agree, I think "FAQ" should be lowercase
23:04:00dom96_Sounds like he is not doing so well unfortunately.
23:04:04ldleworkflaviu: I highly antiticpate a minimal working version of nimlets - as it stands I don't really know the techs you're going with, etc
23:04:10dom96_Which is why he has so little time.
23:04:31Araqdamn. but at least he's still alive.
23:04:40ldleworkis he the person who was working on generics?
23:04:53ldleworkor something
23:04:55Araqno, the website and documentation generator
23:04:56dom96_no, he's the person who worked on the website.
23:04:58ldleworkah
23:12:49*Mat4 left #nimrod (#nimrod)
23:16:11Araqflaviu: please give me some small snippets from your nim by example book
23:17:03flaviuAraq: I really think that filwit's snippets at http://reign-studios.net/philipwitte/nim/ are great
23:17:17ldleworkI wonder who is going to implement Nim in Nim
23:17:40ldlework(Nim the game)
23:17:53Araqflaviu: dude, these are already online
23:18:28Araqit's a slideshow
23:18:38flaviuAh, the slideshow wasn't working because I had js off.
23:18:49flaviuSorry, give me a few moments.
23:18:51Araqhi hi hi
23:25:44gokrHmmm, found another oddity.
23:26:03gokrWill make a gist
23:30:48gokrhttps://gist.github.com/gokr/73cb41ac285611ba047a
23:31:29gokrAraq: It seems that... the inherited == from Vehicle is never called for two Cars. It uses the one in system instead.
23:31:41flaviuAraq: How is https://gist.github.com/f68af6e19c9654c1c992 ?
23:32:17flaviunim-by-example isn't too good for this sort of thing, this requires totally different standards of conciseness.
23:33:00Araqgokr: the system one matches better
23:33:14gokrSince its a generic one, right?
23:33:39Araqsince it's Car -> T aka a generic match
23:33:44gokrI mean "ref T" basically gets instantiated for Car - and... yes.
23:33:51AraqCar -> Vehicle is a subtyping match
23:34:10gokrOk, so I understand - but... it feels like a trap.
23:34:22gokrBut perhaps its not that common.
23:34:39Araqwell we can make that a subtype matches better but I consider this really weird
23:35:06gokrSo all the "ref T" in say system.nim - they can only be overridden explicitly in the leaf types.
23:35:10Araqthat said, it's really not a good idea to overload == to provide dynamic binding capabilities
23:35:23Varriountdom96: Has anything network-related changed for the VPS recently?
23:35:39gokrI was just messing with == since that's the one that got me confused :)
23:35:40Araqyou should introduce 'equals' or perhaps '==?' instead
23:36:17gokrAnd you mean, we should use == to mean identity instead?
23:36:27Araqyes
23:36:37Araqleave the system.== alone :P
23:36:58gokrWell, there is another system.== that does a "for all fields check"
23:37:04gokrFor object|tuple.
23:37:36Araqso? what else would "identity" mean for that?
23:37:47dom96_Varriount: Oh yes. I activated a firewall.
23:37:51Araqbtw I was against adding == for objects
23:37:56dom96_Varriount: Which port do you need open?
23:38:29flaviuIs there a way to tell the compiler that fields are global constants and are in fact gcsafe?
23:39:14Varriountdom96: 9989
23:39:17Araqflaviu: no.
23:40:44flaviuIs there some way of getting around it?
23:40:58dom96_Varriount: sudo ufw allow 9989/tcp
23:41:05Araqsure, but I won't show you
23:41:51AraqI'd like to see your code first
23:42:58flaviuAraq: https://gist.github.com/flaviut/a3bd2832b049fbb17385
23:43:33Araqflaviu: make the proc type .nimcall and it'll work
23:43:54*Trustable quit (Quit: Leaving)
23:44:17flaviuOk, thanks!
23:45:27flaviuI also have a global string that isn't gc safe, but I initialize it before I start with any threads and it can only die when there are no more threads.
23:46:27Araqis it a 'let'?
23:46:41flaviuYes.
23:46:55Araqthen I should make it work out of the box I guess
23:47:19Araqyou can access it in some proc and then cast the proc type to be .gcsafe
23:47:29Araqthat's the general workaround
23:47:51flaviuActually, it's a seq[string], but that should work. thanks.
23:48:56*yglukhov___ quit (Quit: Be back later ...)
23:51:35gokrdom96_: "Oh yes. I activated a firewall." :) ...could that have something to do with the builders being all offline? naaaaaaaa ;)
23:52:54Varriountgokr: Try restarting the linux x64 builder, it should work now.
23:53:04*gokr doing it...
23:53:28Araqhrm honesty requires to put 'parallel' into --experimental
23:53:37Araqbut it's too cool :-(
23:53:40dom96_I figured a couple days of buildbot downtime was better than somebody bothering me later about the VPS' security being shit.
23:54:08VarriountI don't think I ever said that the security was 'shit'
23:54:31flaviudom96_: You aren't running anything as root, are you?
23:54:45AraqI prefer insecure stuff that doesn't get into my way over secure stuff that doesn't work
23:54:48gokrdom96_: Hehe...
23:54:54Araqbut I know I am a minority
23:55:04gokrNo, you are a Windows user
23:55:08VarriountAraq: Remind me never to hire you as a sysadmin
23:55:19Araqgokr: outch :P
23:55:25gokr:)
23:55:38Varriountgokr: Hey, I run a firewall, and I'm a windows user...
23:55:40gokrBut I can agree with that approach sometimes.
23:56:09gokrAlthough IMHO MS has been pushing that a bit too far.
23:56:13flaviuAraq: I don't think I understand what I'm supposed to be doing :P
23:56:13flaviu`cast[proc() {.gcsafe.}](proc () = discard args)()`
23:56:27gokrmy eyes! it hurts!
23:56:57flaviugokr: it's not quite perl... ;)
23:57:05gokrNo, but... damn close.
23:57:27Araqit's perfectly readable to me ... *cough*
23:57:37Araqflaviu: does it work?
23:57:51flaviuNope, I get a bunch of warnings
23:58:15gokrI sure hope I will not regret getting into Nim... ;)
23:58:26flaviuIt's much easier to read with syntax coloring btw
23:58:56gokrVarriount: Linux64 woke up
23:59:06gokr(when I started it)
23:59:18Araqseriously. why is this code hardly readable? it's perfectly obvious and uses ()