<< 18-08-2014 >>

00:34:05*darkf_ joined #nimrod
00:36:21*darkf quit (Ping timeout: 240 seconds)
00:39:16*darkf_ is now known as darkf
01:27:23*q66 quit (Quit: Leaving)
01:32:22*willwillson quit (Ping timeout: 260 seconds)
01:38:13*darkf_ joined #nimrod
01:39:33*darkf quit (Ping timeout: 240 seconds)
01:42:27*saml_ joined #nimrod
01:43:08*darkf_ quit (Ping timeout: 272 seconds)
01:43:13*mwbrown joined #nimrod
01:46:36*BlameStross joined #nimrod
01:48:38*saml_ quit (Ping timeout: 272 seconds)
01:49:26*saml_ joined #nimrod
01:53:10*OrionPK quit (Read error: Connection reset by peer)
02:28:05*Varriount joined #nimrod
02:28:42VarriountAraq, dom96: Ok, the repository for the file event monitoring module is up at github.com/Varriount/Filemon
02:29:26VarriountThe repository contains a patch file with the changes required to make the filemon module work with the nimrod source tree.
02:30:26*darkf joined #nimrod
02:47:22*darkf_ joined #nimrod
02:48:45*darkf quit (Ping timeout: 240 seconds)
02:49:26*darkf_ is now known as darkf
03:00:40*Varriount_ joined #nimrod
03:00:45*darkf quit (Ping timeout: 240 seconds)
03:01:11*darkf joined #nimrod
03:03:45*Varriount quit (Ping timeout: 246 seconds)
03:09:14*OrionPK joined #nimrod
03:35:11NimBotVarriount/NimLime master 31df13b Erik O'Leary [+1 ±2 -0]: Fixed issue highlighting on procs
03:39:32*mwbrown quit (Ping timeout: 260 seconds)
03:50:10*kshlm joined #nimrod
04:06:57*saml_ quit (Ping timeout: 245 seconds)
04:23:52*flaviu quit (Ping timeout: 260 seconds)
04:25:08*darkf quit (Ping timeout: 250 seconds)
04:26:56*darkf joined #nimrod
04:47:20*ARCADIVS joined #nimrod
05:30:56*kshlm quit (Quit: Konversation terminated!)
05:41:17*gkoller joined #nimrod
05:44:15*Demos quit (Read error: Connection reset by peer)
06:18:57*filwit quit (Quit: Leaving)
06:19:43*gsingh93 quit (Quit: Connection closed for inactivity)
07:06:27*bogen quit (Quit: Leaving.)
07:09:18*kunev joined #nimrod
07:51:33*Araq quit (Ping timeout: 240 seconds)
07:52:04*Amrykid quit (Ping timeout: 240 seconds)
07:52:34*dom96 quit (Ping timeout: 240 seconds)
07:53:12*Araq_bnc joined #nimrod
07:54:11*Amrykid joined #nimrod
07:55:34*Araq_bnc is now known as Araq
07:57:11*dom96 joined #nimrod
08:06:51*ARCADIVS quit (Quit: WeeChat 0.4.3)
08:29:19*Matthias247 joined #nimrod
09:12:08Skrylaro_O
09:13:25*Trixar_za joined #nimrod
09:27:38*darkf_ joined #nimrod
09:29:18*darkf quit (Ping timeout: 260 seconds)
09:35:06*noam quit (Quit: Leaving)
09:35:45*darkf_ is now known as darkf
10:02:22*Boscop_ quit (Read error: Connection reset by peer)
10:02:47*Boscop_ joined #nimrod
10:03:24*zahary quit (Quit: Leaving.)
10:08:04*kunev quit (Ping timeout: 255 seconds)
10:08:49*kunev joined #nimrod
10:12:33*[CBR]Unspoken joined #nimrod
10:59:14*Fr4n quit (Ping timeout: 255 seconds)
11:06:01*ome joined #nimrod
11:16:03*will joined #nimrod
11:20:28*kokozedman joined #nimrod
11:21:10kokozedmanhello everyone, I'm new here and also am new with Nimrod; I'm really interested in this finding and have some questions
11:21:58kokozedmanI'd like to try this to build applications for embedded routers (MIPS32 architecture), has there been any past success in that area?
11:24:12*Boscop__ joined #nimrod
11:27:03*Boscop_ quit (Ping timeout: 240 seconds)
11:28:31*io2 joined #nimrod
11:52:45kokozedmanlooks like a success, I tried to compile the example the in JSON module and it worked ... I just hard to use --cpu:i386 to disable an error about pointer size being negative
11:53:33*Araq_ joined #nimrod
11:54:02Araq_kokozedman: welcome
11:54:28Araq_we regularly build for ARM and powerpc64, no MIPS32
11:55:00Araq_if you can provide some testing machine, I'll update the necessary installers
11:55:45Araq_but hey, the better if --cpu:i386 is a possible workaround
11:55:49kokozedmanAraq_: well, it seems that it works on MIPS32 ... it's a very very little example, but the good thing about Nimrod is that it goes down to C, and C compilers are not very hard to come by these days, even for really rare/old routers
11:56:10kokozedmanyes, I am already using that flag to make it compile
11:56:49kokozedmantesting machine ... it's an OpenWrt router that happens to have MIPS32 instruction
11:57:39kokozedmanit's not very practical to have router exposed on the internet ... OpenWrt is kind of widespread, so anyone, including you Araq_ can use it on your own router and you have yourself a "testing machine"
11:57:57kokozedmanjust check your router if it's compatible with OpenWrt
11:58:37Araq_ok, plus I guess we can always setup a virtual machine
11:59:13kokozedmanAraq_: I don't think there is a proper virtual machine for MIPS32 ... I might be wrong, but there was time I tried to search for that, but I couldn't find
12:00:19Araq_ok too bad. what's your OS?
12:02:05Matthias247can't qemu to mips32?
12:03:03kokozedmanI develop on Arch Linux, I build the toolchain on it in order to get a GCC that compiles native codes for the router/MIPS32 ... Then, so far (actually just found Nimrod about 2 hours ago) I have just played some short program on the Arch Linux, ensured it worked on the PC, then I created a small bash script that simply calls the GCC/toolchain for the router/MIPS32 in order to generate an executable for the router
12:03:43kokozedmanMatthias247: hmm... I have no idea, never used qemu before
12:04:05Matthias247seems like it should: http://www.linux-mips.org/wiki/QEMU
12:05:01kokozedmanwow!... what a finding, it appears that it does indeed
12:05:44kokozedmanmy router's CPU matches the one listed on that page: MIPS '24Kc'
12:08:35kokozedmanone thing's for sure: Nimrod appears to work fine on OpenWrt routers ... for all the people out there who's looking for a C/C++ replacement to develop close to metal language that is productivity friendly, Nimrod seems to be an interesting choice
12:09:18Araq_btw there is some documentation dealing with cross-compliling
12:10:00Araq_http://nimrod-lang.org/nimrodc.html#cross-compilation
12:10:00Matthias247kokozedman: do you use it with linux or bare-metal?
12:10:23Araq_but unfortunately -gen_script is quite broken these days
12:11:06Trixar_zaYeah, I noticed QEMU does support a lot of architecture
12:12:28*kokozedman_ joined #nimrod
12:12:40kokozedman_got it ... nice :)
12:12:55*kokozedman quit (Ping timeout: 246 seconds)
12:12:56kokozedman_thanks for these infos
12:14:53Matthias247but don't take the "quick" too seriously :)
12:15:15Matthias247it's probaby still 10times slower than a native program
12:20:20*Jehan_ joined #nimrod
12:24:02kokozedman_Matthias247: why do you say that? something with the way Nimrod works?
12:24:35Matthias247say what? The performance of qemu?
12:24:59Matthias247That's just a general statement - has nothing to ddo with nimrod
12:26:07kokozedman_well, generally, routers are all really slow compared to PCs ... and this is one reason why Nimrod is an interesting choice because it is a "compiled" language, interpreted language performance on routers are really really slow
12:31:06*darkf quit (Quit: Leaving)
12:42:56willwhen I use the {.Bycopy.} pragma, my objects still seem to be passed by refererence? Am i doing something wrong?
12:46:58willhere is an example: https://gist.github.com/cowboy-coders/1d33b5dfb371f6dd986f
12:47:48*gkoller quit (Ping timeout: 250 seconds)
12:57:08Jehan_will: You're using a `var` parameter, which requires call-by-reference.
12:57:26willthanks
13:03:01*Fr4n joined #nimrod
13:05:12willIn a generic proc, is there a way to determine if I can call isNil for a given specialization? I was just going to conditionally assert references weren't nil.
13:06:31Araq_when compiles(isNil(x))
13:06:38willthanks
13:07:17Araq_and don't use ': void'
13:08:00Araq_nimrod is not c++ where you constantly have to write things that you don't want
13:08:09kokozedman_out of curiosity, why was the name Nimrod chosen?
13:08:59willthanks for the advice
13:10:44Araq_kokozedman_: it was the first king who also happened to build the tower of Babel
13:11:30Araq_but we're renaming the language to 'Nim' btw since nobody ever understood the joke
13:12:19kokozedman_so, it's based on the Bible?
13:12:38Araq_yes
13:13:03willwhat was the joke?
13:23:29Jehan_will: I guess it'd be this: http://en.wikipedia.org/wiki/Confusion_of_tongues
13:24:26willthanks, I'll check it out. Is it seriously being renamed, 'Nim', or was that part of the joke?
13:25:01Araq_lol
13:25:50willahh, I see... It all makes sense now.
13:26:00Araq_well we already have the URL if you don't believe me: http://nim-lang.org
13:26:13Trixar_zaYes, but then we'll have confused 'island of nim' people coming in here
13:26:14willyou guys sure know your biblical references!
13:26:50willI liked the name Nimrod :D
13:27:05Trixar_zaWell, atleast he didn't name it Lot
13:28:20*io2 quit (Quit: ...take irc away, what are you? genius, billionaire, playboy, philanthropist)
13:30:55Trixar_zaBut for that to work, you'd have to have a fork that turned to crap and two offspring languages that got merged back into main
13:32:39willit's nothing to do with the 2008 Austrailian adventure-fantasy film, Nim's island, then?
13:33:26Trixar_zaOh and a backstabbing friend that let you die in a flood
13:34:16*Boscop__ is now known as Boscop
13:42:51*Fr4n quit (Ping timeout: 246 seconds)
13:48:03kokozedman_hmm... how do I fix this problem: Aporia/aporia.nim(11, 7) Error: cannot open 'glib2'
13:50:48*saml joined #nimrod
13:51:09Araq_install babel and with babel glib2
13:55:04kokozedman_ok, thanks
13:59:17*Fr4n joined #nimrod
14:05:12*clone1018_ joined #nimrod
14:05:46Trixar_zaHey dom96, how did you originally create the bootloader?
14:11:58*[CBR]Unspoken quit (*.net *.split)
14:11:59*clone1018 quit (*.net *.split)
14:11:59*lyro quit (*.net *.split)
14:11:59*skroll quit (*.net *.split)
14:16:50*[CBR]Unspoken joined #nimrod
14:18:08*lyro joined #nimrod
14:18:54*skroll joined #nimrod
14:20:11kokozedman_Araq_: babel install glib2 ... unsuccessful => Error: unhandled exception: Package not found. [EBabel] ... I don't get it
14:20:34Araq_babel install gtk2
14:21:34kokozedman_alright ... got it
14:25:33*gkoller joined #nimrod
14:29:33*EXetoC joined #nimrod
14:32:23*gkoller_ joined #nimrod
14:34:30*gkoller quit (Ping timeout: 260 seconds)
14:38:29kokozedman_"Der Mensch ist doch ein Augentier -- schöne Dinge wünsch ich mir" ... what does that say? Google translate doesn't make proper sense
14:38:48*noam joined #nimrod
14:41:50Araq_"Man is an animal of the eye. I wish for beautiful things." or something like that
14:57:25*gkoller joined #nimrod
15:07:30*io2 joined #nimrod
15:12:57Jehan_I'd translate the first line as "Man is a visual animal".
15:20:31*kokozedman_ quit (Ping timeout: 246 seconds)
15:25:09*Fr4n quit (Ping timeout: 240 seconds)
15:33:43*Boscop quit (Read error: Connection reset by peer)
15:34:15*Boscop joined #nimrod
15:34:16*Boscop quit (Changing host)
15:34:16*Boscop joined #nimrod
15:38:26*Fr4n joined #nimrod
15:43:13*Boscop_ joined #nimrod
15:46:33*Boscop quit (Ping timeout: 240 seconds)
15:48:49*gkoller quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
15:51:35EXetoCwhat are some modern, production-ready statically typed languages that are almost as good as nimrod?
15:56:43EXetoCor better than nimrod, if that is indeed possible ;)
15:57:59Matthias247depending on your criteria for "better" it could be basically anything :)
15:58:27Matthias247or nothing
16:00:29Araq_EXetoC: F#, C#, C++, ML, Haskell, Ocaml, ... ;-)
16:06:49*brson joined #nimrod
16:13:28*mwbrown joined #nimrod
16:16:46*kunev quit (Quit: leaving)
16:16:57*Fr4n quit (Ping timeout: 245 seconds)
16:16:59EXetoCC++? never again :p ML? I wonder how good the library support is. Haskell? don't think so. Ocaml? it's a good language with a couple of annoying warts apparently.
16:17:40EXetoCF# might be a little more interesting than C# I suppose, though I haven't used either. I wonder how many libs are supported on linux though. I'll have to do some research
16:20:56Matthias247library support for f# on linux should be the same as for c#
16:21:02Matthias247which is quite good
16:22:46*bjz quit (Quit: Textual IRC Client: www.textualapp.com)
16:23:56willdon't you have to be wary of the community promise... something about how microsoft could sell the patents on?
16:25:02EXetoCsome people claim it's only fearmongering
16:26:08willI wouldn't like to take the risk ;D
16:26:14Matthias247you could also certainly think about Java, Scala or Go. But I guess araq left them out intentionally ;)
16:27:24Araq_I didn't
16:27:37EXetoCJava is another language that I wouldn't want to touch
16:28:51Matthias247I think Java8 is quite ok. Not a dream but I can work with it
16:29:34Matthias247but it has nothing that c# can't do better ;)
16:29:39EXetoCand scala also relies on that main-as-a-class-function bullshit, but it's probably much less tedious than Java, so I guess I could overlook that
16:30:10*Fr4n joined #nimrod
16:30:22Araq_well "modern" and "almost as good as nimrod" is highly subjective
16:30:38EXetoCsure
16:30:46Araq_that leaves us with "production-ready statically typed languages"
16:30:57Araq_and so Java, Scala and Go count
16:33:03*gkoller_ quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
16:33:46Matthias247I think the choice also depends on your project goals and further requirements but also on your team and it's knowlegde\fs26
16:34:28EXetoCI'm pretty sure that many of the programmers in here have preferences that I'd agree with
16:42:21Matthias247My personal preference when I have no special requirements is c#. But that doesn't help when I have to interface something native, or use a Java lib, or whatever :)
16:42:56*Boscop_ quit (Read error: Connection reset by peer)
16:43:00Jehan_EXetoC: The primary annoyance factor I have with OCaml is that (like C++) it forces you to write interfaces separate from implementations. Other than that, possibly the verbosity of functors.
16:43:32*Boscop_ joined #nimrod
16:45:10willI say press ahead using nimrod, fix the bugs as you go ;)
16:45:11EXetoCyeah ok
16:45:18Jehan_Matthias247: Well, P/Invoke is one of the saner ways to interface with native code.
16:46:10Matthias247of course, but it still asks for trouble
16:46:47Matthias247and then you have to maintain multiple native libraries plus your c# application. In that case a single c++ project might be easier
16:46:48Jehan_Matthias247: Yeah, the (relative) ease of interfacing with C in Nimrod is one of its major attractions for me.
16:48:04Jehan_For what it's worth, Scala and NImrod are the two languages I am using primarily (when given the choice).
16:51:03Matthias247libraries are also a huge decision factor. Scala might be great for writing a web app. But for a user interfaces c++ and c# might offer better support
16:53:12Jehan_Matthias247: I'm not using Scala for web apps.
16:53:53Matthias247that was just an example of a domain where I think Scala is heavily used at the moment (through Akka and Play)
16:54:01EXetoCwill: the support for things like widget toolkits and (secure) web development is still lacking
16:54:23Araq_for UI apps I'd still use Lazarus with a Nimrod backend. Depending on the app though you might not need a "backend"
16:54:40EXetoCand I barely have any motivation atm when it comes to personal projects. anyway, I consider the language itself to be one of the best
16:55:35Araq_too bad that interfacing with FPC is not that easy. (been there, tried that.)
16:55:36EXetoCI haven't heard of lazarus
17:00:30*q66 joined #nimrod
17:04:03*Araq_ quit (Quit: ChatZilla 0.9.90.1 [Firefox 29.0/20140421221237])
17:04:45*gsingh93 joined #nimrod
17:09:23*bjz joined #nimrod
17:13:13*Trustable joined #nimrod
17:23:41*gkoller joined #nimrod
17:24:56*Fr4n quit (Ping timeout: 244 seconds)
17:25:58*kunev joined #nimrod
17:26:27*io2 quit (Quit: ...take irc away, what are you? genius, billionaire, playboy, philanthropist)
17:30:25*io2 joined #nimrod
17:36:51*Fr4n joined #nimrod
17:37:43EXetoCany production-ready web frameworks in C? :-)
17:49:37AraqEXetoC: http://www.reddit.com/r/programming/comments/2dwcny/dyadc_a_lightweight_easy_to_use_asynchronous/
18:01:10EXetoCnot really a web framework though. KORE maybe. it would of course be better to interface with a C lib rather than having to use another language
18:01:54Araqnot sure what you mean, nim's async+await is stable now
18:02:03Araqdom96 is porting other modules to use it
18:02:21EXetoCbut then you have things like HTTPS
18:03:28Araqwe support that too
18:03:35EXetoCI'm just toying with different ideas
18:13:03*filwit joined #nimrod
18:14:53Araqhi filwit
18:15:03filwithello, Araq
18:16:13dom96hello
18:18:20dom96EXetoC: C? Why C?
18:18:40EXetoCbecause of what I wrote after that
18:19:30dom96because you're just toying with different ideas?
18:19:41EXetoCand then you have things like password hashing, and it's a good idea for people who aren't experts to use high level interfaces made by knowledgeable people
18:19:51EXetoCno, because you could wrap it
18:20:30dom96But Nimrod compiles to C, surely you can wrap it too.
18:21:27EXetoCas in creating a nimrod wrapper
18:22:37dom96oh
18:22:47filwitI ran my RayTracing multi-threaded benchmark on an i7 (arch linux) last night... very good results (~2sec compared to ~8.4sec single thread).
18:22:53dom96You're better off improving Nimrod's async
18:23:21filwitthis is a bit off-topic from what I'm doing right at the moment, but does anyone know a "good practice" way to divide workload by CPU-count?
18:23:34dom96Trixar_za: I used GRUB as the bootloader.
18:24:45EXetoCthen what? security does indeed seem like rocket science at times
18:25:44filwitwith the ray-tracer, I found that there's a definite "sweet spot" for the amount of work-load-to-cores ratio, and to keep all cores active the most, it was by spawning about 4*cpuCount
18:26:03filwitjust wondering if there are any multi-threading experts out there
18:26:04dom96EXetoC: That's why we're not implementing our own SSL lib
18:27:38*Ven joined #nimrod
18:27:58Araqfilwit: well in theory threadpool should adapt to the optimum number of working threads
18:28:10EXetoCwell, libs can take care of timing attack issues for example. I don't know what else one needs to be wary of
18:29:43filwitAraq: the problem is if i just divided the work across 4 spawns (one for each core of my cpu), then some cores would complete much fast than others, and remain idle for a long time (causing the overall time to be more than if i divided the workload up more).
18:30:09filwitAraq: of course, maybe this isn't so much a "how many cores" but a "how large a task" problem...
18:31:38filwitAraq: although, it might also be nice if there was some sort of async response protocol ThreadPool would call when a thread completed (instead of just `sync()`)? That way you could keep all cores active by waiting to spawn more until others are done.
18:32:05filwitAraq: a bit out of my depth here though, so I'm not sure if that's a good idea or not.
18:32:54EXetoCdom96: it seems like a good idea to be very pedantic when it comes to security, if anything
18:33:12dom96EXetoC: well then you should simply use Ada
18:33:48EXetoCor any language with plenty of industry support?
18:34:28Araqfilwit: that already should work when you return something
18:34:55Araqthen you can do var foo = spawn f(a); echo(^foo)
18:36:31Araqor awaitAny
18:37:12filwitAraq: interesting. Is there more examples of ThreadPool somewhere? I see there's no docs.. but i kinda remember a blog post awhile ago you did?
18:37:26Araqno, it's too new
18:37:31filwitk, np
18:37:48Araqhowever, for your case I think what you're doing is optimal
18:38:02Araqaka measuring and hardcoding stuff
18:38:27filwityeah, i'm just thinking beyond the ray-tracer
18:38:34filwitfor game-engine stuff
18:38:41EXetoCdom96: such as python or any of the other popular languages, but I don't know how hard it is to create secure web apps using only core technologies such as SSL and bcrypt directly
18:38:50*Jesin joined #nimrod
18:39:10filwitwhere the tasks aren't so clear-cut
18:39:12EXetoCwhat about ada? does it have suitable libs?
18:39:37AraqAda is a PITA for everything non-embedded, IMHO
18:39:59filwitAraq: but this isn't what I'm working on, and the ray-tracer works well with what's there, so I'll revisit the ThreadPool stuff once documentation is more available.
18:40:04EXetoCI don't know why I should use it then :p
18:40:28Araqbecause it's very safe :P
18:43:44EXetoCI suppose I don't have to care *that* much
18:44:52Araqfilwit: I'm no expert but I'd have 1 thread per logical "task" (sound, keyboard handling, ...) and then some heavy tasks use 'parallel'
18:47:13filwitAraq: keyboard handling, UI, etc is usually done on the main thread, while "best practice" afaik is to create thread jobs for physics, animations, sound (if it requires 3d spacial processing), etc.. so yeah, you're pretty much right.
18:47:20dom96EXetoC: Unless you're making software for a multi-million dollar airliner there is no reason not to use Nimrod :P
18:49:30Araqthe API needs to support setting thread affinities. This can significantly reduce jitter
18:50:04EXetoCdom96: I was indeed focusing on library support
18:50:45filwitAraq: i'll be experimenting with a lot of different ways to optimize things, but one issue with games is that you only have a 16-32ms window to complete everything... so time it takes to create/sync threads is more of an issue, unlike the ray-tracer which requires seconds regardless
18:54:38Araqfilwit: spawn doesn't create a thread, but it's still not exactly cheap
18:55:49Araqand there is little we can do about it, there is only so much you can do with thread local heaps
18:57:06filwitit seems pretty fast, really. It's just a threading problem in general when you usually want to complete a task in 15ms
18:58:25filwitThreadPool seems to work very well. The overhead seems minimal (i compared with a low-res image, which completed much faster, and the thread overhead didn't seem to be a problem)
18:58:44*Boscop_ is now known as Boscop
18:58:49Araqyay
19:07:40*Ven quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
19:14:01EXetoCdom96: well, do you know what I need? SSL and bcrypt probably. what else? though, what about HTTPS support for jester?
19:14:41dom96EXetoC: Just put nginx in front of jester
19:16:25EXetoCok
19:20:30Araqfilwit: you should really blog about your ray tracer and nim's spawn
19:22:15filwitAraq: sure, I will try and come up with something..
19:22:41Araqgreat
19:29:19EXetoCAraq: ok so 'window.document.bgColor = "#FF0000"' should resolve to 'document.bgColor = "#FF0000"'. how?
19:29:33EXetoCthis is regarding the dom module in case it wasn't clear
19:30:04Araqno idea, it's been years since I wrote it
19:31:02EXetoCno wait
19:31:45EXetoCyeah it is. there's window.document as well as a global document var. that might just be a shortcut
19:32:20dom96https://developer.mozilla.org/en-US/docs/Web/API/Window.document
19:32:41dom96both exist in the browser I think
19:33:30EXetoCyeah, gotta run it in an actual browser
19:34:10EXetoCI've barely used js
19:35:27dom96hrm https://realsenseappchallenge.intel.com
19:38:15*flaviu joined #nimrod
19:40:15EXetoC"var node_8447 = document.getElementsByTagName("body")[0]" ok so this ends up being null
19:41:17EXetoCand lastJSError is undefined. bleh
19:52:37*Jehan_ quit (Quit: Leaving)
19:53:34*Ven joined #nimrod
19:56:35filwitEXetoC: i'm not sure about "document.bgColor = '...'" but be careful reading MSDN on the subject, as they sometimes tell you IE specific things (and don't warn you about the incompatibility with other browsers)
19:57:15filwitEXetoC: an alternative to setting the background color: "document.body.style.background = '#fff'"
19:57:34*ome quit (Quit: Connection closed for inactivity)
19:58:07dom96oh! I just got an idea.
19:58:19dom96Compile-time CSS selectors.
19:58:23*kunev quit (*.net *.split)
19:58:23*icebattle quit (*.net *.split)
19:58:24*Kelet quit (*.net *.split)
19:58:29filwitdom96: old idea :P
19:58:43*icebattle joined #nimrod
19:58:54filwitdom96: they have languages which "compile" to CSS that support inheritance, constants, etc
19:59:08filwitdom96: although I've never really used them
19:59:20dom96That's not what i'm talking about.
19:59:30filwityeah... i see that now...
19:59:32dom96$("#id > .class")
19:59:55dom96Could be transformed into document.getElementById("id").getElementsByClass("class")
20:00:12dom96which would be faster than parsing the CSS at runtime, which I am assuming is what jQuery does.
20:01:36filwityep... actually making a good JS backend lib which basically mimics jQuery wouldn't be a bad idea
20:02:06*Kelet joined #nimrod
20:03:02filwithmm... one of the added benefits is that you can code in one language for both server/client (like Dart) and get type-safety, compile-time checks, etc. So that might actually be a pretty popular idea.
20:03:51dom96yep
20:03:55dom96That is what I want to make.
20:04:57filwitdom96: what would be pretty cool actually.. is making something like Concrete5 in Nim, plus some JS backend libs
20:05:24filwitConcrete5: http://www.concrete5.org/
20:05:46filwitit's the CMS i
20:05:51filwit...'ve always used
20:06:26filwitbut it's PHP, and not the most efficient (on slower servers you can really feel the impact)
20:06:26*untitaker quit (Ping timeout: 255 seconds)
20:07:02dom96oh look, a new D release.
20:07:16filwityeah i saw that
20:07:18Araqalso a release of C++14
20:07:24filwitthat too
20:07:37filwitlooks like we all are browsing reddit instead of working....
20:07:40filwitlol
20:08:19dom96I do it almost subconsciously now.
20:08:38dom96I should just get a second monitor and have it scroll, matrix style.
20:09:46dom96hrm, that's a good idea actually.
20:10:10filwitlol...
20:10:48dom96My todo file is too big :(
20:11:16Matthias247with the difference that c++ is only a spec release and the implementation will follow ... later
20:11:33*ehaliewicz joined #nimrod
20:11:38*untitaker joined #nimrod
20:15:18flaviuMatthias247: https://isocpp.org/blog/2014/08/we-have-cpp14
20:15:18flaviu"For C++98, the delta between publishing the standard and the first fully conforming implementation being available was about 5 years. For C++11, it was two years. For C++14, the two have merged and we have achieved “time on target.”"
20:16:02Matthias247flaviu: visual studio 2013 still has no full c++11 support. So there is for sure no c++14 in it today :)
20:16:22Matthias247even if gcc might support it
20:16:34flaviuWhy would anyone use microsoft's compiler?
20:16:34Araqclang and gcc both do support it
20:16:52Araqflaviu: it comes with a good IDE, that's why
20:16:54flaviuyeah, and I hear that both clang and gcc are faster than msvc
20:17:00Araqnope
20:17:16Araqlast time I checked msvc was fastest
20:17:40flaviuAraq: clang has a msvc api
20:17:45flaviuso its a drop-in replacement
20:17:48Matthias247flaviu: it has the best IDE and because windows is still the most-used plattform
20:18:03Araqflaviu: it's also a defacto standard
20:18:12*ehaliewicz quit (Ping timeout: 260 seconds)
20:18:15flaviuAraq: "drop-in replacement"
20:18:33flaviuclang does all the non-standard stuff msvc does
20:18:40Matthias247gcc on windows is crap. And clang can only recently build "native" windows executables. Not very sure if it's mature
20:18:40flaviusame commandline, etc too
20:18:47Araqwithout even bothering to look I can assure you Unreal 4 has some .sln file that you can use
20:19:51Matthias247--> when you want to build a native application for windows that your business depends on there's no way around visual studio
20:19:59filwitAraq: i've had a different experience with MVC vs GCC... but maybe I didn't benchmark anything extensive (we have a C++ version of the ray-tracer)
20:20:52filwitAraq: what's odd.. is that GCC 4.8.2 on Windows ran my RayTracer ~40ms faster than GCC 4.9 on Linux (Nim version)...
20:20:58flaviuAnyway, it looks like msvc and gcc are about tied, maybe msvc comes out a little bit ahead
20:21:08flaviufilwit: Try clang?
20:22:28Matthias247if you use gcc on windows you need msys or cygwin. And nobody wants that
20:22:41Araqwell msvc also has a shitty / not existant effect analysis last time I checked
20:22:50filwitflaviu: clang on Linux runs ~20ms slower than GCC (single threaded), but I don't have LLVM/Clang setup on Windows yet
20:23:33filwitflaviu: if you do, just clone the ray-tracer and try it out.. i'll be interested to know the results if you do
20:23:44Araqit's hard to make general statements, they are all quite on par until you come up with micro benchmarks where one compiler failed to produce good code
20:23:59flaviufilwit: Link?
20:24:13flaviuI don't know your github username
20:24:17filwithttps://github.com/zezba9000/RayTraceBenchmark
20:24:27filwiti'm not zezba9000, that's my brother
20:24:30filwitbtw
20:24:42Araqdoes clang support OpenMP now, flaviu ?
20:25:12filwitAraq: yes... but not sure about the release version
20:25:18flaviuSince 3.1 it looks like
20:26:09Araqtook clang a while to get support for it
20:26:15filwitflaviu: the Nimrod test is obviously in the 'Nimrod' folder... it'll output a '.rgb' image (which you can open with Photoshop, or convert with 'convert ..' on linux)
20:26:41flaviufilwit: how do I time it? Just `time`?
20:26:47flaviuoh, nm
20:26:55*Ven quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
20:27:02filwitflaviu: no it'll output it's own benchmark numbers (in seconds)
20:27:25flaviuI lost in in the nimrod -c outputs, thanks
20:27:31flaviu*it
20:27:47filwitflaviu: i just added multi-threading support... compare -d:{release,bigImg} to -d:{release,bigImgMT} --threads:on
20:28:38filwitflaviu: you can also add -d:noSave to avoid it saving a huge image to your disk (bigImg saves a 720p*8 resolution image)
20:28:49filwitwhich is like 10k by 5k
20:29:24filwit10,000x5,000 pixels i mean
20:30:24flaviuI hope I can make room for that giant 2.8MB image, I might run out of hard drive space :P
20:31:29filwitflaviu: just letting you know... i run the test a lot, and only need it to save once (to verify it works)
20:31:45filwitbut yeah... not much of a deal
20:33:14filwitflaviu: what do the results look like?
20:33:28filwitflaviu: i mean performance results (not image)
20:33:41flaviuWell, I haven't gotten very far yet
20:33:48filwitah, okay
20:33:57flaviusingle core clang is .24
20:34:27filwiteveryone's CPUs are faster than min :(
20:34:34filwitmine*
20:34:54flaviuI have the 965, 3.2Ghz :P
20:35:02flaviuJust barely faster than your's
20:35:09filwitah, okay
20:35:21filwitmy brother's i7 is pretty quick
20:35:33filwit~2x times faster than mine
20:35:37flaviuI hear that this model overclocks great, but I still use stock cooler, so I don't know
20:36:04filwityeah i don't trust over-clocking stuff... would prefer stable
20:37:38dom96Varriount_: https://gist.github.com/dom96/e854c71ce4dcd759a913
20:38:04filwitanyways, since you have pretty much the same CPU as mine (just a bit faster) than I expect the result to be pretty similar in the multi-threaded test... probably ~16sec with -d:bigImg and ~4sec with -d:bigImgMT
20:40:32*gkoller quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
20:42:34*Ven joined #nimrod
20:43:23flaviufilwit: Please review PR #1
20:44:34filwitone sec
20:46:18flaviuAh, I think it may be incorrect
20:46:46filwithmm... i would prefer it if that only happened when you -d:useAverage or something
20:47:48filwiti think it's correct tho
20:47:48flaviuIts incorrect anyway, I never clear the pixmap
20:48:14filwitwhy would you need to clear it though? it just rewrites the data..
20:48:50filwiterr... that's not correct at all... your epochTime() is not inside the loop
20:49:07flaviuIt shouldn't be inside the loop
20:49:20flaviuI'm assuming that the overhead of a branch and add is nothing
20:49:31flaviuI think the overhead of epoch time is greater
20:49:36filwitah, okay
20:52:37flaviuOk, I'll just put it behind a when
20:52:47filwithmm... just so we're not out-of-sync here, how about we put that behind a `when not defined(singleRun)`... and by that I mean you might as well do it to yours before i accept the PR
20:53:29filwitthanks
20:56:52filwitflaviu: also, can you put the 20 under a const at the top (or inside main)?
20:57:02flaviuSure
20:57:22filwitthanks
21:00:19flaviufilwit: Ok, done. I've cleaned it up, there only needs to be a single define for the runs constant
21:01:20filwitgreat. let me know when you make a PR
21:02:02flaviuI already did
21:02:05flaviuhttps://github.com/zezba9000/RayTraceBenchmark/pull/1
21:03:11filwitwhoops... was looking at your repo for a sec and didn't see a PR... doh
21:04:08flaviuIt looks like nimrod doesn't like the scene variable: 'spawn'ed function cannot refer to 'ref'/closure
21:04:56filwitflaviu: can you completely remove the 'runs' variable, and not even do a for loop when averageRuns is not defined, please?
21:06:04flaviuI'd be surprised if it wasn't optimized out, but ok.
21:06:18filwitflaviu: just do `let time = when defined(averageRuns): (end-start) / runs else: (end-start)` after the test completes or something
21:06:43dom96Interesting to see how split the Python community is for this proposition of including the mypy static typing syntax.
21:14:52flaviufilwit: Ok, done
21:18:53Araqdom96: we're doing something very wrong ...
21:19:08Araqthis python 2/3 split, now optional static typing
21:19:27Araqand yet nobody flees over to nim
21:19:43*gsingh93 quit (Quit: Connection closed for inactivity)
21:19:58dom96Yeah. You're right, we need to get rid of static typing.
21:20:21flaviudom96: Please not another language extension...
21:20:45flaviuthat's completely possible as code, and the compiler is much too complicated as-is
21:21:13dom96flaviu: another?
21:21:39dom96I'm kidding though.
21:21:57dom96But that reminds me, I attempted to create a macro which mimics python a while ago.
21:22:06dom96Can't remember why I gave up on that.
21:22:27flaviuYou don't need macros for loose typing
21:23:35dom96of course not, but they make the code look sexy.
21:24:16flaviusimple > complicated
21:25:10*Ven quit (Ping timeout: 264 seconds)
21:25:14dom96The stargazers beg to differ: https://github.com/dom96/jester
21:25:35dom96Cool. PyConIreland retweeted my tweet.
21:26:24flaviuThey aren't staring because they like the macros, they're staring because jester is the only game in town.
21:26:44Araqflaviu: I agree completely that we don't need more features. Well except for the planned missing stuff ofc :P
21:28:39dom96flaviu: Yes, having no competition helps. But it's the code that is shown in the readme that wins people over.
21:29:28flaviuhmm, ok, although that macro I'm sure is very simple
21:32:12dom96I guess. It's not as simple as no macro at all.
21:32:32dom96It makes the code look a lot more appealing though.
21:33:02dom96than: j.addRoute("/", proc (req: PRequest) = ..)
21:35:46flaviuMy feature suggestions are more important and useful than everyone else's, for example `(x, y, z): ...` should desugar to an anon proc
21:35:52*Ven joined #nimrod
21:39:03EXetoCdon't we have similar sugar?
21:39:10Araqflaviu: lol
21:40:39*Trustable quit (Quit: Leaving)
21:45:09*Ven quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
21:48:27dom96flaviu: still busy?
21:48:56*dom96 still wants a vindinium starter pack
21:49:18flaviudom96: Sorry, I have other things to do
21:49:28*Ven joined #nimrod
21:49:32filwitflaviu: merged your PR, thanks. But I'm changing on minor minor thing (you didn't remove the brackets around elapsedTime :P)
21:49:53flaviuoh, I didn't think of that. Thanks
21:50:18dom96flaviu: what other things are those?
21:50:42flaviuWell, schoolwork, and I'm figuring out how to write a typechecker
21:50:51flaviualso, I'm doing benchmarks for filwit
21:51:14dom96schoolwork? It's summer time.
21:51:30flaviunot for me lol
21:51:52flaviuSince 2 weeks ago
21:52:41dom96Oh my god. I've heard of places like this, where the school year starts in August. Until now I thought they were a myth...
21:53:00*dom96 gasps in horror
22:06:12*seubert_ joined #nimrod
22:11:00*lyro quit (Ping timeout: 246 seconds)
22:11:01*seubert quit (Ping timeout: 246 seconds)
22:11:02*OrionPK quit (Ping timeout: 246 seconds)
22:11:46Varriount_dom96: I have to live with that horror too.
22:11:56filwitflaviu: just pushed a change to the ray-tracer (just so you know). You're right, the `for i in 1 .. runs:` looked better.. thought it wouldn't but was wrong. Also adjusted some other minor things but it's mostly just personal style preferences.
22:12:05*lyro joined #nimrod
22:12:15dom96Varriount_: Are you back at Uni already?
22:12:36Varriount_I go back on Wednesday
22:12:41*Varriount_ is now known as Varriount
22:12:54Varriountdom96: I'm reading your notes, I'll respond in a bit.
22:13:08dom96Varriount: I start at the end of September lol
22:15:06filwitflaviu: oh... and i changed the define to 'avgRuns' instead (since i'm using 'Img' abbr anyways, thought it made sense and I prefer the shorter name)... i will add a readme.md to the folder later to explain things. Thanks for your contribution.
22:15:22flaviuSure, no problem
22:15:50flaviufilwit: btw, I finished benchmarking and sent a PR
22:16:42*Ven quit (Read error: Connection reset by peer)
22:17:11filwitAwesome, thanks :) I've been meaning to bench on my Rasberry Pi for awhile now.. guess I don't have to anymore.
22:17:58flaviuThe rasbian results aren't mine, git just diffs weird
22:18:29filwitoh yeah wait... i did that awhile ago i think...
22:18:41filwitbrain is not working well today apparently
22:19:04*mwbrown quit (Ping timeout: 260 seconds)
22:19:28filwitflaviu: you don't use GCC at all?
22:19:45VarriountOk, dom96, my responses:
22:19:46filwitoh, no nevermind.... the MD file doesn't format well
22:19:51filwithrm...
22:20:03Varriountdom96: Yes, there was a linux version that *you* wrote, that's still in the standard library - You charged me with writing a *windows* version. We've had this talk before.
22:20:08dom96Varriount: Put them in a gist
22:20:13dom96i'm too tired to process them lol
22:21:11dom96I can reply to that: I assumed you would merge them together.
22:21:35dom96and you've got comments about other platforms in there
22:23:29Varriountdom96: That was in expectation.
22:40:09Varriountdom96: https://gist.github.com/Varriount/2373d90f6499d55dcf3c
22:45:41filwitflaviu: heads-up, formatted your results better and added readme instructions
22:46:56flaviuthanks
22:47:06VarriountWhat are you two cooking up>
22:47:09Varriount*?
22:47:41filwitVarriount: he benchmarked and contributed to the ray-tracer: https://github.com/zezba9000/RayTraceBenchmark/tree/master/Nimrod
22:47:45dom96Varriount: The solution is to capture the info you need in your closure. (In regards to the last point)
22:47:48Varriount:D
22:48:05flaviuBenchmarks for raytracing
22:48:42Varriountdom96: Yes, but I have to spawn multiple overlapped structures.
22:49:04dom96Varriount: That shouldn't be a problem
22:49:30VarriountSo I would need to store them in a sequence captured by the closure. How's that different to capturing them in a watchData object stored in a seq?
22:50:26dom96Varriount: I don't think vars are captured by ref in closures.
22:50:52Varriountdom96: Can you give me a line number?
22:51:24dom96or maybe they are
22:51:42dom96In any case, you will be creating a new watch data object anyway.
22:52:04*OrionPK joined #nimrod
22:52:57Varriountdom96: What about doing what the asyncdispatch code does, and extending the overlapped structure?
22:54:30dom96You can do that, but you shouldn't need to capture it in your callback.
22:54:39dom96The asyncdispatch callbacks do not capture the overlapped object.
22:54:44VarriountCapture what, the overlapped structure?
22:55:01dom96yes
22:55:04Varriountdom96: But I have to call readDirectoryChangesW *with* an overlapped structure.
22:55:44dom96So you're reusing overlapped structures?
22:56:03dom96You should just create a new one in the callback if you want to call readDirectoryChanges inside it.
22:56:39Varriountdom96: Could we talk on teamspeak? I feel like it might be easier to explain.
22:57:00dom96ok, give me a sec
23:09:01*io2 quit (Quit: ...take irc away, what are you? genius, billionaire, playboy, philanthropist)
23:09:14*mko joined #nimrod
23:10:53Araqhi mko welcome
23:11:19mkoHi, Araq. Thanks.
23:13:05*Boscop quit (Changing host)
23:13:05*Boscop joined #nimrod
23:19:03*Matthias247 quit (Read error: Connection reset by peer)
23:24:28Araqgood night
23:27:45*darkf joined #nimrod
23:31:46*flaviu quit (Ping timeout: 255 seconds)
23:35:49*flaviu joined #nimrod
23:38:09*brson_ joined #nimrod
23:39:24*brson_ quit (Client Quit)
23:39:38*brson_ joined #nimrod
23:40:33*brson quit (Ping timeout: 240 seconds)