<< 07-11-2017 >>

00:03:23*mindB joined #nim
00:03:24*unclechu joined #nim
00:03:24*dyce[m] joined #nim
00:03:24*Demos[m] joined #nim
00:03:24*ehmry joined #nim
00:03:24*watzon joined #nim
00:03:30*shashlick joined #nim
00:03:30*MrAxilus[m] joined #nim
00:03:30*jivank[m] joined #nim
00:03:30*TheManiac joined #nim
00:03:31*notdekka[m] joined #nim
00:03:31*hohlerde joined #nim
00:03:31*byteflame joined #nim
00:03:32*planetis[m] joined #nim
00:25:07*fvs joined #nim
00:28:32fvshowdy, nimble installed Prypin's random module. Howto differentiate from pure function as both import random?
00:31:16fvsalso, while i'm on, anyone know what happended to the intersectRect function in nim sdl2: https://wiki.libsdl.org/SDL_IntersectRect
00:38:02GitDisc<treeform> dom96, i am not sure what you mean by newSocket and accept both create FDs ?
00:39:05*def-pri-pub quit (Quit: Leaving.)
00:40:17GitDisc<treeform> oh i see
00:40:20GitDisc<treeform> yeah that works!
00:40:22GitDisc<treeform> thanks!
00:40:38GitDisc<treeform> ```
00:40:39GitDisc<treeform> var client = new Socket
00:40:41GitDisc<treeform> accept(serverSocket, client)
00:40:42GitDisc<treeform> ```
00:40:43GitDisc<treeform> made it all go away
00:40:57GitDisc<treeform> I feel like accept should just return a socket
00:41:08GitDisc<treeform> like the c api does?
00:44:49GitDisc<treeform> I think the bug is in the docs then?
00:44:50GitDisc<treeform> https://nim-lang.org/docs/net.html
00:45:06GitDisc<treeform> Creating a server section is wrong?
00:45:15GitDisc<treeform> it should be `new Socket`
00:46:21*cspar quit (Ping timeout: 246 seconds)
00:46:47*jhorwitz quit (Ping timeout: 250 seconds)
00:46:59*marenz_ quit (Ping timeout: 268 seconds)
00:49:31*yglukhov joined #nim
00:53:43*yglukhov quit (Ping timeout: 250 seconds)
00:55:35*zolk3ri quit (Quit: Lost terminal)
00:57:15*def-pri-pub joined #nim
01:11:36*jhorwitz joined #nim
01:25:22*jhorwitz quit (Quit: leaving)
01:54:42*kalkin--- joined #nim
01:58:01*kalkin-- quit (Ping timeout: 240 seconds)
02:09:16*chemist69 quit (Disconnected by services)
02:09:21*chemist69_ joined #nim
02:09:25FromGitter<Varriount> fvs: You can use the module name as a qualifier - "this.random" vs "that.random"
02:31:23*Snircle quit (Quit: Textual IRC Client: www.textualapp.com)
03:09:57*endragor joined #nim
03:28:03FromGitter<Varriount> @mratsim until the end of the function. Arrays are value types.
03:35:07*yglukhov joined #nim
03:39:37*yglukhov quit (Ping timeout: 260 seconds)
03:46:11*rauss quit (Read error: Connection reset by peer)
03:48:08*rauss joined #nim
03:52:40*SenasOzys_ joined #nim
04:20:59*fvs quit (Quit: leaving)
04:33:17*yglukhov joined #nim
04:37:57*yglukhov quit (Ping timeout: 260 seconds)
05:26:01*def-pri-pub quit (Quit: Leaving.)
05:35:25*yglukhov joined #nim
05:39:44*yglukhov quit (Ping timeout: 248 seconds)
05:46:56*def-pri-pub joined #nim
05:53:15*endragor quit (Remote host closed the connection)
05:56:16*dddddd quit (Remote host closed the connection)
05:58:51*def-pri-pub quit (Quit: Leaving.)
06:05:15*nsf joined #nim
06:28:44*endragor joined #nim
06:33:04*endragor quit (Ping timeout: 248 seconds)
07:06:47*rauss quit (Quit: WeeChat 1.9.1)
07:07:30*endragor joined #nim
07:21:40*smt quit (Read error: Connection reset by peer)
07:34:12FromGitter<mratsim> Yes I got sigsev. I tried using a template instead but got name collision in the C compiler so will do another way
07:36:04FromGitter<mratsim> C++*
07:48:17*gokr joined #nim
08:02:17*couven92 joined #nim
08:05:50*Arrrr joined #nim
08:05:50*Arrrr quit (Changing host)
08:05:50*Arrrr joined #nim
08:14:24*PMunch joined #nim
08:14:50ArrrrI think this should be a forum thread, more people would see it and participate https://github.com/nim-lang/Nim/issues/6700
08:18:26*claudiuinberlin joined #nim
08:19:04gokrBeen reading up on pony, it's quite interesting. I wonder if Nim could go in a similar direction when it comes to concurrency, perhaps not with all the same guarantees, but similar ideas.
08:32:29*yglukhov joined #nim
08:41:35GitDisc<GooRoo> Really like how it's done in Nim https://www.reddit.com/r/cpp/comments/7b3z8f/enforcing_code_contracts_with_nodiscard/
08:46:13Araqgokr: I'm deluded that my destructors will solve every problem :-)
08:46:39gokrAraq: Hehe, mmm.
08:46:57Araqjust *move* tasks around, done.
08:47:21gokrI presume that's the equiv of iso references in pony.
08:47:46gokrOnly one at any given time - can have the reference. And thus has full read and write capability.
08:48:17Araqthere is also "linear lisp", very hard to find good information about it though
08:48:38gokrNow... pony also has val and tag. The former being immutables sharable by all - for readonly obviously. And tags - as opaque handles that you can do identity check on - and send messages to (presuming they are actors).
08:50:28gokrAraq: So is it going well? the destructor work?
08:51:49gokrI would like some higher level description on what it will lead towards - but I guess there is no such writeup, right? I skimmed the one you have and... didn't come away with a clear feeling for how Nim will behave with this stuff.
08:52:19*livcd quit (Read error: Connection reset by peer)
08:56:44Araqgokr: I think I know how to do 'sink' parameters and I'm gonna play with a real benchmark against C++/Rust
08:57:28Araqso yeah, it's going well, albeit a bit slowly since I'm also busy with Nim v1...
08:58:44gokrSounds cool :) So a sink param, is that basically the same as a pony "consume" etc? Making sure no other ref is kept, statically.
08:59:10Araq"consume" nails it, yes.
08:59:42gokrSo far I have also found the "recover" block in pony to be interesting - although confusingly named.
08:59:57*livcd joined #nim
09:00:21gokrThe idea there is to have the compiler verify that all the stuff you refer to - when in the block - is stuff that is "safely sendable", thus only iso, val, tags.
09:00:30*floppydh joined #nim
09:00:54gokrThen the block can only produce a single reference - and that can then safely be an iso for example, if the thing is created inside the block.
09:01:51gokrThe idea being that... since you only can access "sendables" from inside the block - and you create a new thing - then you can return it as an iso - since there can be no other references to it, and the stuff you used to make it - are all "sendables".
09:05:07gokrNow... the iso and the val - being sharable, that's intuitive etc. Two things more interesting is the fact that a) actors themselves are GCable in pony, so no poison pill etc (neat) and b) the tags can be used to send actors around freely, and you can make calls to them using these tags.
09:05:19gokrThat last bit is pretty cool IMHO.
09:07:10Araqthat's nothing that I'm after. I'm more after a paradigm that would have prevented the --symbolfiles fiasco
09:07:47gokrOk, not ... something I am aware of.
09:10:13Araqwell I got this pretty big Nim program called the "compiler" and every time I change something, the full thing is rebuilt. that doesn't scale, the bigger your programs gets, the slower are your compile-times
09:12:10Araqso ... obvious solution: Store the result of a compiled module to disk.
09:13:34Araqbut that module has cross references to other modules it uses and you need to untangle this mess before you can store anything on disk.
09:14:26gokrAha.
09:14:53gokrTo be able to only recompile changed modules?
09:15:01Araqyes.
09:15:12gokrSo you are moving towards an image model? ;) (just kidding)
09:15:48Araqand when you're done, you need to ensure this serialization/deserialization step is still much faster than rebuilding the graph from the Nim text file because otherwise you haven't solved the problem
09:15:59gokrright
09:16:34Araqand you know what is the fastest way to do this serialization? mmap the file contents
09:16:46gokrBtw, the Squeak VM guys made this very fast primitive thing for saving/loading a part of object memory by reusing a bit of the GC algorithms.
09:18:01Araqand suddenly you begin to realize that "pointers are evil" ;-) without pointers, you have blobs and blobs are much better.
09:18:05gokrImageSegments. You need to find outgoing pointers inside the segment and do something for those, but otherwise just binary dump it out.
09:18:10gokrExact.
09:18:52yglukhovhey guys, check out my new post: https://www.reddit.com/r/programming/comments/7bc2wu/choose_the_right_language_to_save_the_planet/
09:19:21Araqit's also the core solution of getting a REPL environment
09:19:33gokrAraq: But then... a few years later someone wrote Fuel (a serialization lib) and it turns out it ended up faster than the ImageSegment primitive.
09:20:40gokrAraq: Yeah, I understand that too. Although... I kinda do wonder how the heck a REPL for Nim will work conceptually/semantically. Macros, templates, static type constraints etc - not really the easiest "incrementally correct" environment to bang away on your keyboard.
09:22:02gokrIn fact, I have a hard time seeing an effective REPL in a statically typed lang at all. But sure, I haven't played with one of course, so no idea.
09:22:30AraqI see no problem here really, Scala is statically typed and has a REPL iirc
09:22:40PMunchyglukhov, one thing you don't consider is that a computer is about as efficient as an electrical heater when it comes heating your room. So if you use electrical heating then it evens out
09:22:47AraqScala also has a macro system etc etc
09:23:00AraqPMunch: LOL
09:23:06gokr(I also wish you would widen the vision - an incrementally modifiable development environment would be more fun than a "mere REPL")
09:24:05FromGitter<alehander42> haskell's repl is nice too, I've even used c++ repl-s and I like them
09:25:19gokrSo how the heck do they manage the "I am in the middle of non compiling code here"?
09:25:21FromGitter<alehander42> gokr: you seem like a smalltalk guy : ]
09:25:32gokrYup, I am.
09:25:51FromGitter<alehander42> I am not sure what you mean
09:26:19gokrSo ok, a REPL - I presume you mean a REPL which can actually change code right?
09:27:00gokrLike, I type something - perhaps changing a type - remove a field from an object definition perhaps.
09:27:21gokrOr is the answer "well, no, you can't do that"?
09:27:48gokrI am honestly curious since... it feels like a very hard problem.
09:28:20AraqI'm not talking about any concrete Nim REPL. I'm talking about a way to structure your programs that give you REPL like qualities
09:28:32gokrIn Smalltalk I have methods being compilation unit (dynamic typing etc), I have auto migration of existing instances so I can do shape changes etc etc. All that seems really hard in a statically typed lang.
09:29:04FromGitter<alehander42> ah, well I guess the repl-s I used don't really support it, but with the things araq talks, it seems possible in principle
09:29:22gokrAraq: Right, like... modify proc code and do "reload" of that module (given all data lost that were kept in module vars etc).
09:29:34Araqfor example, when you're designing a game level the last thing you want to do "is to leave the editor, recompile, test it"
09:29:42FromGitter<alehander42> as a whole a statically typed language can be designed in a way to be easily "hot-reloaded" in a repl
09:30:02gokrIs there such a language? That's been designed for that?
09:30:08*skrylar joined #nim
09:30:15gokrI have never heard of any I think.
09:30:17skrylarso what was this about somebody requesting a wrapper for firebird?
09:30:51Araqand now think you have a perfect Nim REPL. does it help? well no, your game engine is on top of that layer and could have a design that makes you leave the editor anyway
09:33:23FromGitter<alehander42> gokr: I don't think that's a top priority for most statically typed languages, but theoretically if you put it as a goal from day one, there is nothing fundamentally hard about it (but that means shaping the other features around that)
09:34:01*couven92 quit (Read error: Connection reset by peer)
09:34:57yglukhovPMunch: haha, but how about coolers that need to keep your cpu temp low? =)
09:35:41PMunch"coolers", all they do is shift the heat away from the CPU and into your room. So your room gets hot but your computer gets cold(er)
09:36:15skrylarclearly we just need CPUs that run off negative energy, so you can have a positive and negative energy CPU in the same mobo and they cancel each other out
09:36:36gokralehander42: Nothing fundamentally hard about it? Well... just consider shape changes and migration of existing objects in memory for a second. Then tell me it's "not hard".
09:36:49PMunchUnless you're moving the heat out of your house then your other heating solution is working a bit less whenever you power your computer on.
09:37:31Araqgokr: you can use the types as constraints and still have your shitty hash table based representation in memory :P
09:38:01gokrAraq: You mean let the REPL use a different memory model to allow it all?
09:38:08PMunchskrylar, you jest but then there is https://en.wikipedia.org/wiki/Reversible_computing
09:38:09*skrylar pretends to write a NimTalk runtime based off ST-80 and sneak it in to araq's code somewhere
09:38:16skrylarPMunch, I was only half joking.
09:38:33Araqbut you can also just do what every database does and tackle the shape changes
09:38:35PMunchReversible computing is really cool though
09:38:42yglukhovPMunch: fair enough. so maybe efficient languages are only needed in hot environments where air conditioners are used...
09:38:42gokrskrylar: Spry is a bit of my idea trying to get "interactive coding" on/in Nim.
09:38:53skrylarI've read about some of the entropy-neutral and some claims of people using cold electricity. I was serious about them working like that, but joking in that I'm not sure those ideas work
09:39:44PMunchyglukhov, well it depends on what kind of heating you use vs. where you get your electricity from. If you have a coal power plant for electricity and geothermal for heating then it's going to be cleaner to use the regular heater
09:39:59Araqalter table foo add column bar varchar(100);
09:40:09PMunchAnd more efficient languages are better anyways, means you can run more stuff at the same time
09:40:17Araq^^ databases are great :-)
09:40:18skrylargokr, i wasn't here for the earlier part of the conversation. all i'd say is, well, do what Io does?
09:40:32PMunchOn old hardware you can barely run Atom w/plugins and a browser without the thing grinding to a halt :P
09:40:48skrylari went back to my hacked up emacs
09:41:04gokrskrylar: The gist of it is ... I think a "true REPL" in which you can write your whole program incrementally - not losing data when you code away - is very hard to do in a language like Nim.
09:41:06skrylarElectron is an abomination. FLTK is quite tolerable
09:41:16PMunchYeah, I'm using vim as my main editor
09:41:25PMunchNotably better battery performance :)
09:41:26skrylargokr, ... No. But if you want the code to be efficient, yes.
09:41:39gokrskrylar: And people aren't agreeing with me :) And I wonder how the heck it's supposed to be solved.
09:42:04gokrskrylar: Not sure I grokked what you mean.
09:42:06skrylarSmalltalk/Lisp dealt with those problems. Steal liberally of their wisdoms
09:42:29FromGitter<qqtop> @skrylar: firebird3.0 wrapper would be nice. currently calling the python fdb driver from nim
09:42:35gokrskrylar: Well, the thing is - (I am a Smalltalker) - Smalltalk was designed from the get-go to be in runtime all the time.
09:42:53*vlad1777d joined #nim
09:43:01PMunchskrylar, think of it this way. An AND gate takes two inputs and has one output. Where does the extra energy go? Heat/entropy! If you had 1:1 gates which somehow connected together in some logical way we would have much less heat/entropy output
09:43:34skrylargokr, consider anything you can do in nim you could just transpile to smalltalk though?
09:43:40skrylarnot saying to DO it like that, but in theory
09:43:46gokrskrylar: Now... having a bit of incrementality goes a long way though. So I applaud any steps in that direction in Nim. For example, hot reloading of "purely code" modules that does no shape changes of data - that would still be useful.
09:44:00skrylarJavascript is prototype based, so you can just screw with the layout of objects at-will
09:44:11FromGitter<alehander42> gokr: of course those things are not easy, but that was my point: if you specifically design your memory layout and everything to be easily trackable and reloadable from day one, it wouldn't be hard
09:44:33gokralehander42: And my point is ... not sure you would end up with Nim.
09:45:28skrylareasy copout: don't allow changing objects without a rebuild, do allow functions of identical signatures
09:45:44skrylaryou can make funcalls go through one level of indirection to hot swap them
09:45:55Araqmy point is: databases solved that problem 30 years ago, a static schema doesn't prevent schema changes at all
09:46:21skrylarAraq, there's bug bears for objects with special initialization requirements tho
09:46:49gokrHaving said all that - Smalltalk is amazing to work in - and that's mainly due to the integrated "always at runtime" dev env. So if Nim could try to get similar things - it would be really cool. I just don't think its a coincidence that Nim (nor most these langs) doesn't have it - more than ... 47 years after Smalltalk.
09:47:10skrylargokr, loss of ambition, adherence to C++ thinking, etc
09:47:15skrylarI mean binary images are bad for releases tho
09:47:30skrylarneat for livecoding
09:48:00gokrskrylar: Ideally you would want both, yes.
09:48:02FromGitter<alehander42> gokr: I agree, I just said it's possible in principle :D
09:48:17skrylarqqtop: i've never actually used firebird. it sounds neat, i guess?
09:48:57gokralehander42: I recall IBM had an incremental coding IDE for C++ way back, perhaps it was actually "VisualAge for C++". Think it was written in Smalltalk. Not sure what happened to it.
09:48:58FromGitter<alehander42> but still I think a middle ground can be reached and a nim repl which can execute most normal code and reload at least whole modules would be incredibly useful
09:49:28skrylarthe bug bear with hot reloading is something that you deal with in ex. BEAM VM
09:49:54FromGitter<alehander42> I know a full blown ala smalltalk image capability sounds fun, but usually people expect simpler things from a repl
09:50:01gokrskrylar: But Beam simply kills/reload, right? It relies on the actor process model, so kinda "cops out".
09:50:07skrylarIf i make object X, with a constructor, change object X to add a new pointer, that pointers not initialized retroactively, so you now have badness. Unless you version objects (which beam does) and also functions. Which can be done, but introduces.. amusement
09:50:16skrylargokr, no it kinda java's it
09:50:38gokrskrylar: ok?
09:50:52skrylaran old loop with an old socket stays alive until it dies to an error or is finished
09:50:58skrylarNEW processes are the new code
09:51:25gokrskrylar: That's what I meant - there is no data migration going on there, right?
09:51:27skrylarSo changing a hot loop won't take effect unless you code in a manual killswitch
09:51:50gokrThey are isolated from each other and simply killed/restarted.
09:52:03skrylarthey aren't isolated though
09:52:21skrylarthe old hot loop will, if it spawns Mushrooms, and you update Mushroom procs, will spawn *new* mushrooms
09:52:44skrylarbut the *loop* itself does not die, unless you code in such a signal
09:53:18skrylarLisp also does similar.
09:54:32skrylarThe dangers of using these environments long term, is that you can end up with multiple versions of old code in various places and suddenly your binary image is its own weird hell that isn't constructed from a bootstrap but depends on the menagerie of old things used to write it over time
09:55:59skrylarlike if you make macro A1, use it for function B1, then change A1 to A2, B1 doesn't get recompiled unless you explicitly recompile it, so B1 is now in limbo because compiling it again gives B2, because A is now changed
09:56:07skrylaranyway, i've spammed enough about livecoding
09:56:51FromGitter<qqtop> @skrylar: (firebird) yes it is , had been running my companies with it and its predecessor for 30 years
09:57:21skrylarqqtop: i've been having a hard time getting a pitch on why i should use it for anything
09:57:51skrylarmight look and see how scary fbclient is
09:58:11skrylari would love a connector for Rethinkdb but those are strange to write
09:58:46Araqskrylar: that's pretty much exactly what happens in nimsuggest afaict
09:59:08Araqstuff holds pointers to outdated versions of some module, eventually it dies with OOM
09:59:17skrylaryup. standard stuff
09:59:57skrylarIt could be gotten around with a pocket database and dependency tracking, maybe, dunno?
10:00:41Araqthe illusion here is the GC IMO.
10:01:02Araqit turns crashes into OOM crashes
10:01:15skrylarlivecoding in mixed environments is crashy anyway
10:01:31Araqyou can't abstract over your data model, you have to get that one right and then things work, otherwise they don't
10:02:07skrylarI did a thing with Embeddable Common Lisp, C99, and SDL, long time ago. Certain types of bugs would kill the whole stack, 'cause they'd cause external things to segfault. And you couldn't ex. replace the main function, because it was pinned to C. So you had to code in such a way that certain things got replaced, and other things required a hard restart
10:04:12Araqand it's also again a pointer/ownership problem: if you store an ID to the module, guess what you can update the module and everything will access the most recent version of it
10:04:27Araqno crashes, no leaks.
10:04:52skrylarchanged classes remain broken though
10:05:07Araqnot to mention that I introduced IDs long ago just to be able to debug anything really
10:05:07skrylarPODs don't if you have default initializers, but if the object has special constructors
10:08:55Araqgokr: I think the historical mistake is the split between programming languages and databases resulting in messy mixed environments
10:09:00*Vladar joined #nim
10:10:04Araqand Smalltalk solved that problem by being much more like a database
10:10:35gokrskrylar: Sorry phone. Regarding versions of classes - Gemstone (a transactional full blown persistent Smalltalk) uses class versions and can also have multiple versions live at the same time.
10:11:09gokrAraq: Yeah, and Gemstone is the 100% lets-go-all-the-way example. Full db, full Smalltalk.
10:11:46*chemist69_ quit (Ping timeout: 264 seconds)
10:12:39skrylarGemstone is pretty neat
10:12:53gokrYeah, I worked with it in a few projects way back.
10:13:04skrylarkdb+ is that way as well. its a matrix language bolted on to a database engine
10:13:08skrylarsupposedly
10:13:11gokrI also recall a 3 hour presentation of how the distributed transactional GC works ;)
10:14:37skrylaronly a couple headers left, and then i can shove this fltk wrapper somewhere
10:14:57FromGitter<alehander42> I always wondered how there is no language using .git repo-s for heap
10:15:03gokrBut anyway, perhaps the idea with Spry (a language on top of Nim) is easier to pull off. Of course, Nim people wants to code in Nim, so... not really interesting for Nimmers unless they are polyglots.
10:15:27skrylari came back to nim because red's priorities are poop
10:15:35gokrskrylar: Ah, interesting
10:15:42gokrI track red in the corner of my eye
10:15:52gokrPerhaps you can help me with Spry instead ;)
10:16:15skrylari considered briefly trying to run an ST-80esque language on top of nim
10:16:30*arnetheduck joined #nim
10:17:04gokr(that's basically what Spry is - although... I am trying to reinvent Smalltalk a bit too)
10:19:35skrylari managed to hack a chunk of the supermemo algorithm in to nim. that was neat. VERRRyyy mathy though
10:20:24skrylarleads to interesting questions like: what IS an idiomatic way to do regression in nim?
10:20:43AraqI language on top of Nim doesn't solve anything in my humble opinion. ;-)
10:20:57AraqI tried to explain why, layers are bad.
10:21:12skrylari would only do it because scripting for end users necessitates a scripting engine, even if it just runs nim on that
10:21:23Araqthey can reintroduce all the problems that the underlying layer solved
10:21:24skrylarotherwise.. macros
10:21:47Araqpretty sure TCP has a way to do delivering in chunks
10:22:01AraqHTTP can't use it, wrong level, it has its own chunking
10:22:03gokrAraq: Hehe, well, I want to recreate the insane productivity of an interactive dev env. I don't think Nim will EVER do that. So I will just have to try myself.
10:23:59skrylari still don't get why nim couldn't do that
10:24:13Araqwhat exactly?
10:24:31gokrskrylar: I said "I don't think Nim will ever do it". I didn't say it couldn't do it. I just see where the focus is etc, and I don't see it happening.
10:25:05Araqalehander42: go for it. mmap to files backed up by .git?
10:25:21gokrFor example, a REPL? I mean come on, IMHO that's a very low end goal.
10:25:25*chemist69 joined #nim
10:25:34skrylarwhat good would mmaping to git do
10:25:38skrylarjust transactional memory?
10:26:15gokrskrylar: FLTK?
10:26:32floppydhgokr: the insane productivity of an interactive dev env?
10:26:39skrylargokr, yes its an old GUI toolkit
10:26:40gokrfloppydh: Like Smalltalk.
10:26:48gokrskrylar: I know, I meant more ... "why?" etc
10:26:51floppydhso many buzzwords, what does it even mean?
10:27:05skrylargokr, I have used more or less all the ui frameworks, and fltk pisses me off the least
10:27:29floppydhgokr: I don't even use a debugger the most time
10:27:41gokrskrylar: I want to pick one for Spry, i played with libui (Araq's wrapper) - but seems stalled etc.
10:28:00skrylarhe stopped working on libui because libui is too anemic
10:28:10gokrskrylar: It also seems to have lost steam.
10:28:18skrylarfltk is what Nuke used once upon a time
10:28:19FromGitter<alehander42> @Araq yep, it would a great 1 april project
10:28:21gokrThen there is NimUI - but .. I dunno.
10:28:53gokrfloppydh: See for example pharo.org
10:29:09FromGitter<alehander42> gork: > REPL? I mean come on, IMHO that's a very low end goal. ⏎ and a realistic and useful goal
10:29:09skrylarI wrote a timer app 3 times, once in C++/Fltk, later C++/wxWidgets, once in FreePascal, and again in Vala. I got to observe some interesting traits. One of which is that Fltk does all the widgets in-house. So the slider, if set to work in increments of N, will actually do what you asked. Windows sliders for instance don't, while GTK sliders *sometimes* do.
10:29:36gokrskrylar: Yeah, the advantage of "your own".
10:29:55gokrskrylar: One reason that Squeak/Pharo still sticks to their own Morphic.
10:30:00skrylarWell another is that the wxWidgets version, which used maybe <10 primitive controls, took 20mb RAM. Fltk's took <3
10:30:04floppydhgokr: but in the end it won't do anything about good abstractions no? - I mean I get it, you want to reduce downtimes and make prototyping easier etc., but I think you can get very close to this with just good tooling in pretty much any PL?
10:30:31skrylarIn fact a minor database app using Fltk for the UI and LuaJit for the DB, still only used <5mb for botht he UI and database
10:31:27gokrfloppydh: It's not only about prototyping etc, if you work on a multimillion loc project - you want a really good env.
10:31:29skrylarThe difference between Fltk's footprint and Wx/Qt/Gtk is huge and it's not apparent what you're getting for it
10:31:43Araqnative widgets.
10:31:49skrylarshouldn't that be *cheaper*?
10:31:51Araqfor Wx at least.
10:31:56gokrfloppydh: But explaining the Smalltalk env on IRC here is... no point. I have done it so many times, just try it instead.
10:31:59floppydhgokr: yes I get that but in the end if its bad code you still have bad code, it only changes so much?
10:32:06floppydhgokr: I will checkout pharo
10:32:09gokrfloppydh: It changes a lot.
10:32:16skrylarI wrote part of a UI kit in Go, on Win32, using native widgets. It had a negligible footprint. The same app in wx, 20mb
10:32:24floppydhgokr: I'll check it out
10:32:27FromGitter<mratsim> @gokr, Haskell has a compiler and an interpreter, the REPL is using an interpreter.
10:33:09gokrYeah, that's probably what you end up needing to do I guess - in order to pull of a reasonable not very limited REPL.
10:33:38floppydhmaybe it's just me but I never got much of a point out of a REPL
10:34:01Araqfloppydh: me neither, nor out of debuggers. ;-)
10:34:30skrylarfloppydh, data scientists like them
10:35:01skrylaryou can hook up R Studio or Emacs to an R interpreter, issue commands one line at a time, and then put those commands in a Notebook style interface
10:35:10FromGitter<alehander42> floppydh: different people use different tools : )
10:35:14floppydhskrylar: yeah I get that but they are not really comfortable writing code, I see the point there
10:35:18skrylarso you go "what happens if i run this test on that dataset" and just run one repl command instead of loading the whole script again
10:35:23gokrIt's about broadening your view on how to make software. If you only think notepad + a command line compiler barfing at you - is everyone anyone will ever need... well.
10:35:39skrylarfloppydh, well having to reload a potentially large dataset every time you run a single transform is unproductive
10:35:58skrylarrepl allows you to change a transform *without* having to load the dataset again
10:35:59floppydhskrylar: if you just setup a good env where you compile/run on a keypress the rest is about using sane APIs where the initialization time is reasonable
10:36:05livcdskrylar: I wrote part of a UI kit in Go, on Win32, <- what UI kit ? :-)
10:36:06floppydhskrylar: oh yes I get that
10:36:15AraqMathematica is still my gold standard, not Squeak ;-)
10:36:23skrylaryes but that initialization time INCLUDES ex parsing a csv file with 1 million records to ram
10:36:36skrylarthe cost of doing that once and then other things in a repl is negligible, the cost of doing it every time is high
10:36:42skrylarthat's an example of where repl/livecode shines
10:37:01skrylaror ex. a game where you have to reload a heap of 4k textures every time you want to test the shader
10:37:10Araqskrylar: yeah well, I don't have CSV files in RAM, I import it into to a database ;-)
10:37:12skrylaryes you can reload the shader at runtime, but that's basically what a repl is doin
10:37:20floppydhgokr: yeah I agree, I'm not saying its the end-all, just that atm I couldnt care less about a Nim REPL, there so many more things with an actual payoff for everyone then just the data-scientists out there, who won't swtich off python any time soon either way?
10:37:33skrylarAraq, they have to be in ram for some of those things tho :(
10:37:48Araqthe DB can keep it in RAM, I don't mind
10:37:57gokrfloppydh: I don't want a REPL either - I find it stoneage.
10:38:02floppydhgokr: interesting
10:38:16floppydhgokr: what instead?
10:38:16skrylarIt's more to do with ex. running a convolution kernel on data requires it to be in matrix form
10:38:25skrylarotherwise you're going to shit out 9 DB calls or the like
10:38:52FromGitter<alehander42> floppydh: repl shines in many cases when you need to experiment with little things/new libraries/etc ⏎ what you people are doing is "change this file, switch to console, compile and run it, change it again" which works but it's just a hack and it sucks for those cases
10:39:01gokrfloppydh: I want a fully running incremental dev env. Where I can modify the code while it is running. When i can pause in the debugger, change a line, restart that particular method/proc and just keep going.
10:39:31floppydhskrylar: there's clearly a payoff there for data scientists atm, which can also be overcome with good architecture, like could work with spearating into processes and do IPC or whatev, but still, atm theres clearly good reasons to use them for data scientists
10:39:33gokrfloppydh: An env where I can query the structure of the code itself. Show me all uses of this and that? Show me all implementors of this and that, etc etc.
10:39:33FromGitter<alehander42> there is a reason why people use repl-s all the time in dynamic languages and it's not because they're data scientists, but because they are powerful and useful
10:39:39skrylarAraq, admittedly, Rethinkdb *is* powerful enough to do a lot of those shenanigans on the DB :-)
10:39:50floppydhgokr: I see
10:39:58gokrfloppydh: Smalltalk has all this.
10:40:12gokrfloppydh: Now, Nim has tons of other cool things.
10:40:20skrylarrethink is awesome. i haven't tried with postgres or mongo and such
10:40:26skrylarlike, doing power regression on records
10:40:34gokrskrylar: isn't there already a rethink driver for Nim?
10:40:41skrylargokr, no idea
10:40:46gokrI think there is
10:40:50floppydhalehander42, I'm sorry but if you're not actually having the initialization problem like skrylar talked about, its just a matter of a good env setup, I do one keypress and it compiles and runs async in the bg, I don't have to switch to anything
10:41:01skrylargokr, araq was just talking about using a DB instead of ex. Pandas
10:41:12gokrhttps://github.com/search?utf8=%E2%9C%93&q=rethinkdb+nim&type=
10:41:22*elrood joined #nim
10:42:12Araqbut yeah, a REPL is two different things really:
10:42:23Araq- a way to tinker with a new language and its libraries
10:42:50Araq- a way to keep your data in RAM
10:43:08skrylarOn Rethink, you can have reql map/reduce. So you can do things like just ask it to compute Pearson R across shards. But doing that in ex Postgres is.. derpy, if possible at all
10:43:39gokrskrylar: This one looks pretty active and fresh: https://github.com/OpenSystemsLab/rethinkdb.nim
10:43:40FromGitter<alehander42> floppydh: which is still slower, still uses two different area-s (you edit somewhere and see the results in other place), and you can't still do a lot other things possible in a repl ⏎ a very powerful IDE might be able to replace a repl as a whole but most editors are not that good ⏎ after all we all are using terminal-s as repl-s for our os-es, it's obviously a useful concept
10:44:54floppydhalehander42, we're not, a shell is not a REPL, it does not persist state, in any case, I don't agree there, if the compile-times and such aren't a problem, it's not a problem and I'm way more comfortable and faster in my editor then on a half-baked REPL with its own bindings
10:45:18skrylarbut the repl is supposed to be cooked at 200 degrees :<
10:45:21gokrThere is a reason Dan Ingalls blew Steve Jobs away when he live coded smooth scrolling and changed width of scroll bars - in front of Steve's eyes, in a minute or two. Without restarting anything.
10:45:21floppydhif you don't have setup an editor you enjoy then yes I see a benefit
10:45:53floppydhgokr: I'm not familiar with the incident, but Steve Jobs probably shouldn't be a reference for anything
10:46:36gokrfloppydh: "incident"... that was when Steve was at PARC and got the whole inspiration for GUIs.
10:47:05gokrfloppydh: The GUI he was shown was in fact Smalltalk - the first bitmapped window environment.
10:47:10FromGitter<alehander42> floppydh: it is a repl, it persists state using your whole file system, you write a line of code and it does an action / responds with a result
10:47:37floppydhalehander42, you're going too far out there to my taste, lets just agree to disagree
10:47:42FromGitter<alehander42> that's the most repl thing I've ever seen in my life and if you think the shell doesn't act as a repl we have just too different views on the whole thing
10:48:00skrylarwell i mean
10:48:06skrylarshells read, evaluate, print, and loop?
10:48:19floppydhbut then Nim has a REPL, because you can use the shell in that capacity
10:48:22FromGitter<alehander42> I am talking about the ux of interactive repl loop
10:48:24floppydhwhat are we even talking about at this point
10:48:53skrylarwell gokr is evangelizing livecoding (which is an awesome topic). i'm not sure what this shell vs repl thing is
10:48:53floppydhgokr: so REPL = quick-prototyping? - again I think that does not necessitate a REPL as discussed, nim could be used like that
10:49:00FromGitter<alehander42> the shell is a "ui" for the os, a nim repl would be a ui for nim code , come on..
10:49:43floppydhalehander42, Nim REPL would require hotswapping of compiled c code e.g., it's very different from just a "ui"
10:50:00FromGitter<alehander42> that's an implementation detail
10:50:13floppydhI'm out
10:50:32dom96Hi guys
10:50:32FromGitter<alehander42> I am talking about the ux of such a program, of course I agree it's way harder to achieve in Nim
10:50:55dom96what are you guys disagreeing about?
10:51:26Araqrepls, live coding, the meaning of programming
10:51:52dom96Fun
10:53:26gokrThis is a 2 min video showing a bit of coding on the fly in Smalltalk, modifying code and restarting the stack etc: https://www.youtube.com/watch?v=1kuoS796vNw
10:54:17gokrJust found it by googling, there is tons out there obviously. But I mean, raise the freaking bar here people.
10:55:13skrylargokr, livecoding is upper quantile programmer stuff tho
10:55:16skrylarlike macros are
10:55:22floppydhgokr: the issue I see here is that its tooling only, what people need is better models to reason about program data/logic, things like immutable data types e.g. tackle these, tooling is important, but at the end if you need to step through your thing in order to understand it, there's a limit you'll be able to do no?
10:56:14gokrskrylar: But it's not hard! I mean, a Smalltalk env is not hard to use. I mean, I have taught Smalltalk to old COBOL programmers in literally hours - and had them go bananas of joy.
10:57:10Araqhttps://www.youtube.com/watch?v=O6h9_Xx-nLA
10:57:11skrylarmeh.. i don't feel like writing a nim compiler right now
10:58:03gokrfloppydh: Smalltalk has been a secret weapon for building very, very advanced systems in a range of areas, fintech for example. There are reasons for that.
10:58:31skrylari thought financial engineers liked it because of soft upgrades. which beamvm also has
10:58:32Araqyeah, there are also reasons people write game engines in C++.
10:58:35floppydhgokr: if we go by popularity I don't think we come to reasonable conclusions
10:58:50skrylarNaughty Dog livecodes, there's a few whitepapers. Uncharted is one example
10:58:51*sleepyqt joined #nim
10:58:54gokrfloppydh: I didn't mean popularity, Smalltalk is not popular anymore.
10:58:59skrylarThey have some custom rig in racket scheme
10:59:18skrylarBut that kind of livecode requires, basically, two runtimes
10:59:20floppydhskrylar: I've seen one or two talks about Naughty Dog doing racket, seemed interesting
10:59:59gokrfloppydh: What I mean is that an interactive dev environment which is written in itself and that you can extend with your own tooling - and unlimited meta capabilities (obviously) - is a very powerful tool for building advanced models. But as I said, it's hard to explain it all here on IRC:
11:00:09*couven92 joined #nim
11:00:12floppydhgokr: I don't know smalltack and I'm not attacking it, I think most of newer stuff is better then the status-quo (C/Java)
11:00:34floppydhgokr: oh yes I get that
11:00:57gokrfloppydh: I just wish the Nim community could have a higher aim in this area.
11:01:18Araqyeah and you know perfectly well that's not how open source works
11:01:20floppydhgokr: I just personally have a bit of an issue with that because if I can'se use VIM then I feel like I'm separated from my SO
11:01:35*SenasOzys_ quit (Ping timeout: 240 seconds)
11:01:56skrylarwell the way SLIME works in emacs is you edit a lisp file and have hotkeys that shove your current lisp form over a tcp socket to the runtime
11:02:04FromGitter<mratsim> I don't agree with data scientists not leaving Python, most companies using Python for data science are looking into Numba (compile Python JIT with Numpy support), Cython (the bastard child of C and Python), plain C for multithreading because while Python is great for prototyping, it's too slow.
11:02:17floppydhskrylar: I wish I had more time for emacs ...
11:02:23skrylarI suspect similar things would be done in vim?
11:02:31Araqmratsim: no, you got that wrong ;-)
11:02:44floppydhskrylar: you just pipe buffers or files to things in shell
11:02:48*couven92 quit (Client Quit)
11:02:49Araqthey are not using Smalltalk because they don't know it
11:03:00skrylarSmalltalk is not attractive in 2017
11:03:01Araqand speed is never an issue for anybody anyway
11:03:05Araq;-)
11:03:10floppydhskrylar: in a vim buffer with nim code you can literally just type: `!nim c -r %`
11:03:18skrylarPharo/Squeak are awkward to deploy, and Gemstone costs big monies iirc
11:04:06gokrWell, awkward to deploy... I dunno, it's VM langs, just like any. But yes, Gemstone is big money.
11:04:16skrylarI looked in to using Seaside once and it would require some strange configs to ex. nginx doing hashed distribution because seaside kept a lot of state, and the nature of multiple containers negated the advantage of updating on the fly
11:04:48skrylarCalling out to C is also a major pain
11:05:01*couven92 joined #nim
11:05:06Araqgokr: you know it doesn't work to tell others what to do. ;-) You need to do it yourself or it ain't gonna happen.
11:05:24FromGitter<mratsim> @araq I replied regarding epoch based GC/not GC, I'm not advocating it but when I stumbled upon it I was really curious about its concurrency potential.
11:05:33skrylarAraq, i think he just wishes more people cared
11:05:36gokrAraq: Yes, I know, but... if there is zero interest...
11:05:40skrylarI mean nim is an outlier for even having macros
11:05:42gokrskrylar: Exactly.
11:06:32gokrNim - or perhaps it's you Andreas - has at least a sense of the power of meta programming. Extending that even further seems quite natural.
11:06:41floppydhpeople should instead care more about Nim if you ask me
11:06:50Araqplus we have a technology stack that's actually not helping at all ;-)
11:06:51floppydh:3
11:06:57gokrfloppydh: What does that mean?
11:07:04Araqso ... contribute to nlvm
11:07:10Araqenable its JIT
11:07:25floppydhgokr: there's limited caring in the world, Nim could profit from more people
11:07:41Araqgive Nim a REPL, it's a good first step
11:07:42FromGitter<alehander42> gokr: I think most people realize the pro-s of smalltalk-like env-s and the cool stuff about it, but it's just not a priority for nim
11:07:55Araqbut
11:07:57skrylari did some ghetto tensor code in nim a while back. that was neat
11:08:04gokrfloppydh: Not sure what you mean, I am here, I care a lot about Nim.
11:08:14dom96Pretty sure Naughty Dog only used Lisp for their old games, no?
11:08:21skrylardom96, they use racket now
11:08:38Araqdo not introduce your own simple bytecode interpreter that doesn't play well with native code :P
11:08:40floppydhgokr: oh that's not what I was suggesting, just saying, there's only so much time and effort people have, issue with FOSS in some way is the separation of efforts right
11:08:47skrylarthere was a dark era where Sony mandated all C++ no exceptions, development sucked ass, they let them go back to their own thing, so they use Dr Racket and such to build their thing
11:08:49dom96https://www.quora.com/Does-Naughty-Dog-still-use-lisp-for-making-games/answer/Marshall-Robin
11:08:51FromGitter<alehander42> I actually took a look at nlvm yesterday and it seems promising, does the creator come in this room from time to time?
11:09:03dom96Maybe that's already outdated
11:09:08dom96Did they switch back to Racket?
11:09:12FromGitter<alehander42> (I wanted to ask him some stuff before eventually trying to work on it)
11:09:14Araqalehandler42: yes
11:09:27FromGitter<mratsim> Ask @krux02
11:09:29Araqit's arnetheduck I think
11:09:38Araq(hope I remember correctly!)
11:09:39skrylardom96, sony forced them off of lisp. they went back to it when they could, but racket is cheaper than allegro
11:09:43floppydhdom96: no that sounds reasonable, they always only used it as some form of codegen/data-generation or so
11:09:52dom96interesting
11:10:04dom96https://www.youtube.com/watch?v=oSmqbnhHp1c
11:10:37skrylardom96, http://con.racket-lang.org/2013/danl-slides.pdf
11:10:54FromGitter<mratsim> @skrylar ghetto tensor code?
11:10:55skrylarND never used "lisp" per se. They used lisp to make a domain specific lisp
11:11:14skrylarThe playstation ran assembly. They just wrote macros to replace S-exps with that assembly
11:11:31FromGitter<alehander42> araq: thanks, I'll write him if I hit a roadblock
11:11:37floppydhthe original devs had some background in it or so tho? - I think its in the talk
11:11:51*SenasOzys_ joined #nim
11:12:02FromGitter<mratsim> What was the quote, "every advanced language progress to a subset of LISP eventually?" or something?
11:12:03dom96Seems like they'd be much happier with Nim ;)
11:12:04gokrskrylar: Where is your ftlk wrapper?
11:12:11skrylargokr, is not done yet
11:12:21floppydhdom96: where's my parser generator? :P
11:12:27skrylarwill be on github soonish, nimble after
11:12:52dom96floppydh: parseutils not good enough? :P
11:13:24floppydhdom96: wasn't even aware :P
11:13:48dom96there is also strscans
11:14:20skrylarthere was also a request for toml, and i had some almost finished bson code that hasn't been touched in a month ._.
11:14:49skrylarthough the bson was mostly because i just need a format to store neural networks in
11:15:36*skrylar has simple torch-esque networks in nim working
11:16:11FromGitter<mratsim> Is it on GitHub?
11:16:15skrylarno
11:16:45FromGitter<mratsim> :/
11:17:04skrylarI have ADAM backpropagation, and a partial implementation of Learning To Learn By Gradient Descent by Gradient Descent, but GRU layers are currently broken
11:17:23FromGitter<mratsim> Well on my side I dealt with my Nvidia issues and can probably bring CuDNN based convolution today or tomorrow
11:17:29Araqdo you also have enough EVE?
11:17:39skrylaryou joke but that's a real thing
11:17:40Araqsorry, bad joke
11:17:48Araqwhat?
11:18:05FromGitter<mratsim> Adam is a neural network optimization technique
11:18:33skrylarAraq, mratsim: EVE is the name of a genetic fuzzy tree based AI trainer developed by a defense contractor, it was used to create ALPHA
11:18:53skrylarThomson, Iain, ‘You Can Be My Wingman Any Time! RaspBerry Pi AI Waxes Air Force Top Gun’s Tail in Dogfights’, The Register, 28 June 2016 <http://www.theregister.co.uk/2016/06/28/alpha_ai_waxes_air_force_top_guns_tail_in_dogfights/> [accessed 31 July 2016]
11:19:22Araqyou and your shiney new NN algorithms, what happened to good old Support Vector Machines
11:19:29skrylarhey i looked in to those last week
11:19:47Araqthey never led me down and they used to be much faster to train
11:20:13skrylarthey're on my radar but i haven't done any AI work in two weeks other than fixing a bug
11:20:25FromGitter<mratsim> Svm don't scale to millions of data points and it's very hard (impossible ?) To parallelize state of the art non-linear SVM
11:20:32skrylari have some weird stuff in an old C# file for "instantaneously trained neural networks"
11:20:42skrylarmratsim: you don't need millions of data points
11:20:48skrylaryou need only exemplary data points
11:21:46skrylarIIRC the way to handle SVMs is to select a subset which have the most distinctive features, then train on those.
11:21:54skrylaryou can use a large chain of small SVMs
11:22:37Araqhow do I know the subset which have the most distinctive features?
11:22:51Araqisn't that a problem that is as hard to solve?
11:22:55FromGitter<mratsim> With Principal component analysis I guess
11:23:17FromGitter<mratsim> It captures what gives the most variance
11:23:19skrylaror NNs
11:23:37skrylarsome people still chain NNs as feature extractors and then pipe those to SVMs
11:24:08skrylaryou can also do stuff like k-means clustering on feature vectors
11:24:27FromGitter<mratsim> In my case I mostly use Logistic regression, gradient boosted trees and NN.
11:24:45skrylarYeah. Import AI posted a survey recently showing data scientists don't actually use the crazy shit
11:25:15gokrskrylar: Just curious, did you kinda dismiss all the other options when going for FLTK or did you have other reasons to pursue it?
11:25:26skrylargokr, well i answered that already
11:25:31skrylarIt pissed me off the least.
11:25:51gokrok, got it.
11:26:04skrylarI wrote the same application in Fltk, wxWidgets, FreePascal/LCL, and Vala/GTK
11:26:15FromGitter<mratsim> In any case if you have suggestions to improve Arraymancer @skrylar you're welcome.
11:26:26skrylarThe Fltk one was the only implementation that didn't require mental help just getting sliders to work
11:26:36dom96Isn't Fltk rather bleh-looking?
11:26:38gokrIt's indeed interesting that it still is a potent option - and I presume it has to do with the fact that it is a bit "inbetween", right?
11:26:41skrylardom96, can be
11:26:56skrylargokr, well nothing is wrong with it other than its not pretty?
11:27:05skrylarNuke only stopped using it because of politics in The Foundry
11:27:18skrylarit saw use in the VFX industrys hidden secret stuff for years
11:28:28skrylarthey were going to release fltk2 as some big refactor, so people held off while waiting, then the refactor never hit, so a lot of people fizzled out.
11:28:34skrylarits the same thing that killed D
11:28:52skrylarwell, similar
11:29:07Araqits the same thing that holds Nim back... the endless struggle for "perfection"
11:30:05skrylarFltk just uses straight callbacks
11:30:11skrylarNo STL, no template heirarchy bullshit
11:31:51skrylarIf someone really wanted to, one could probably incrementally port widgets to native nim. Go from the deep parts of the tree, work back, fall back to the wrapper for unfinished parts.
11:33:56skrylartheres only absolute layouts in fltk, but this is fine because we can overlay generic layout stuff on it. like miglayout
11:34:05skrylar(or css flex boxes if you're masochistic)
11:35:07skrylarQt/Wx/Gtk/etc have some built in layout code. But its only for use by premade stuff. If you need to draw your own anything, you get no help from the toolkit. While using a generic one can do both. So it sounds better IMO
11:35:46arnetheduckalehander42, he's here now ;)
11:35:57gokrAlthough WIPs, did you look at: https://github.com/PMunch/genui and https://github.com/trustable-code/NiGui
11:37:16skrylargokr, barely
11:37:20skrylarisn't nigui unfinished?
11:37:24FromGitter<alehander42> oh hey arnetheduck
11:37:33FromGitter<Yardanico> skrylar: nooo
11:37:36gokrBoth are, but... just wondering what your thoughts are
11:37:37FromGitter<Yardanico> it has only simplest widgets
11:37:53FromGitter<Yardanico> (I'm about NiGui)
11:38:08gokr"NiGui is currently work in progress. Very basic things work, many things are missing."
11:38:26FromGitter<alehander42> basically I still haven't had the chance to get more familiar with the nlvm source, but I wondered if there are any specific issues/stuff that you'd like help with
11:38:28floppydhAPI so far seems comfortable tho, for NiGui
11:38:44FromGitter<Yardanico> yes it is
11:38:46skrylargokr, well i used fltk in the past, it works just fine, its everywhere (debian stable!) and its brainless to wrap
11:38:54FromGitter<Yardanico> but for example it doesn't have sliders at all :P
11:39:01gokrskrylar: Yeah, I appreciate that.
11:39:06skrylari looked at dealing with gtk3 for elementaryos stuff, but there were a LOT of prereqs
11:39:17skrylarand frankly the gtk3 developers are morons anyway
11:39:28floppydhskrylar: nobody likes them :/
11:39:53floppydhprobably too few
11:39:58skrylarfloppydh, because cocoa is lovely and simple, while gtk3 is land of the 100 line boilerplate for buttons
11:40:05skrylarand its super inefficient
11:40:38floppydhskrylar: no experience, I knew gtk3 mostly from being unreasonably bothersome to customize
11:40:46floppydhskrylar: not from the API
11:40:46skrylararound a year ago i asked what the best layout engine was
11:41:16gokrskrylar: Are you c2nimming it?
11:41:22skrylargokr, hand
11:41:25floppydhand not because I tried to, couldnt care less, but quite some Linux applications jumped from gtk2->gtk3->qt
11:41:31skrylarwith some elisp to ease the pain
11:41:36gokrHehe
11:41:48skrylarfloppydh, because of huge bugs and inefficiency
11:42:04skrylarporting gtk2 to gtk3 is like that thing i mentioned earlier where your app goes from 5mb use to 20mb
11:42:08gokrskrylar: Btw, I am trying to get Nicolas Petton into Nim, no success yet.
11:42:10skrylarand you gained nothing
11:42:23skrylargokr, who is that?
11:42:35PMunchGtk isn't that hard to use
11:42:36gokrHe is ... one of the emacs maintainers
11:42:39PMunchBut not the best either
11:42:44FromGitter<alehander42> arnetheduck: e.g. making more upstream tests pass, look for ways to use more of the stdlib, JIT support
11:42:46gokrHe also did emacs new homepage
11:42:48PMunchHopefully genui will be better :)
11:43:06skrylaranyway when i looked, this had the best reviews on stackoverflow et all: http://www.miglayout.com/QuickStart.pdf
11:43:07PMunchJust have to figure out how to do these custom widgets so I can make some more progress
11:43:44gokrskrylar: He also does the emacs releases and is responsible for a bunch of emacs packages.
11:44:06skrylarsounds like a busy man
11:44:08gokrIMHO he could do wonders here.
11:44:16skrylari've been wrapped up in studying art for work :\
11:44:23gokroh, cool.
11:44:24skrylarmight be able to do 3d painting in nim
11:44:37gokrWhere do you live?
11:44:42skrylarTX, USA
11:44:54gokrOh... early over there right?
11:45:01skrylarlmost 6am
11:45:11gokrAre you pulling an allnighter? ;)
11:45:31skrylarno idea when i'm going to sleep =p
11:45:33floppydhskrylar: how's Red ?
11:45:34arnetheduckalehander42, tests are an excellent place to start - some failures are expected because of nims reliance on c, but many are bugs in nlvm or changes in upstream that haven't gotten ported yet
11:45:40skrylartrying to finish this wrapper to do more interesting things
11:45:42gokrCool to have you back here, always fun to hear that people come back to Nim - especially from Red.
11:45:55arnetheduckif you're on anything other than linux, platform support would be high on the list too
11:46:14skrylarfloppydh, the parts that work are fun.
11:46:33skrylarParse is the only parser generator that doesn't give me anneurisms
11:46:33floppydhskrylar: planning to do more of it?
11:46:42*vlad1777d quit (Ping timeout: 260 seconds)
11:47:12skrylara big part of red is using their built-in PEG generator to create dialects, and then using those dialects on problems
11:47:16gokrskrylar: Parse! Cool you mentioned it. Have you seen PetitParser?
11:47:23skrylargokr, no
11:47:32skrylari know he's allowing lisplike macros and parse at compile time in red
11:47:44skrylarbut then they spent time working on libred instead of, you know, important shit
11:47:51arnetheduckJIT, not so important right now, nlvm uses the nim vm for now just like the c backend which works fine - once the bugs are ironed out, it can of course be scrapped and replaced by llvm of course
11:47:54FromGitter<alehander42> arnetheduck: ok, sounds good (I use mostly linux but I can test stuff on windows too)
11:48:10skrylar"You can embed us in Excel!" "Can I write a 3d paint tool?" "Well no we're missing the GC and all the production bits." "... but i can hello world in Excel!"
11:48:12gokr"PetitParser combines ideas from scannerless parsing, parser combinators, parsing expression grammars and packrat parsers to model grammars and parsers as objects that can be reconfigured dynamically."
11:48:15*skrylar facedesks
11:48:35gokrskrylar: PetitParser is the nicest I have ever used. Born in Smalltalk, but ported to various langs.
11:48:38FromGitter<alehander42> arnetheduck: I'd probably start trying to do stuff after this week , if I have any questions, should I write you here? or open an issue?
11:48:50arnetheduckof the lowest hanging fruit, the nlvm main() could use a friendly pass as well, it's quite.. minimal
11:49:21skrylarwell the plus of Parse is that its very freeform. Nim macros require you to either obey nim syntax (which is generous) or abuse its interpretation of things (i have done it, but you get strangeness like ghetto procs not having semicolon/comma invariance like real procs do)
11:49:35skrylarwhereas parse lets you make arbitrary grammer with a lot of token types
11:49:47arnetheduckonce you've warmed up, it would be cool to switch to dwarf exceptions, setjmp really sucks
11:49:52gokrskrylar: http://scg.unibe.ch/research/helvetia/petitparser
11:49:57gokr(slides there are quite nice)
11:50:27gokr"ghetto procs" - quote of the day
11:50:47skrylargokr, i have an unfinished RPC generator macro
11:50:57arnetheduckI'm here around this time usually - issues are great if you want to discuss ideas
11:51:29gokrarnetheduck: Go, go guys!
11:51:38Araqarnetheduck: you probably missed it but IMO nlvm should add some "real value" and then I am even willing to make it part of Nim's core
11:51:50Araqby "real value" I mean something out of
11:51:56Araq- better debugger support
11:52:02Araq- JIT/REPL support
11:52:17Araq- better/precise GC
11:52:18skrylargokr, eh if i find it again i'll toss a link to a gist; one was for doing RPC code, another was for finite state machines.
11:52:43FromGitter<mratsim> emscripten support :P
11:52:44Araqas it's now it's just instead of producing C code it produces LLVM bitcode (correct me if I'm wrong)
11:52:50skrylargokr, https://gist.github.com/Skrylar/fae89168d08e1351c21942917922fbfa an example of ghetto procs
11:52:52gokrskrylar: As you probably know it was me rediscovering Rebol that kicked me into creating Spry.
11:53:17gokrskrylar: So it's an "unholy" mix of Rebol and Smalltalk currently ;)
11:53:30skrylarrebol is basically a lisp tho :)
11:53:34gokrskrylar: For example, the idea of "words"
11:53:48skrylarrebol/red is almost impossible to tool though
11:54:08skrylarthere is basically zero way to know what any word means without evaluating it :/
11:54:27gokrsure, but... that's code organisation issues, right
11:54:45skrylarwell it complicates many things
11:55:00skrylarfoo 1 2 bar baz ; which ones are functions and parameters?
11:55:32gokryeah, I agree. The free form is a bit "too much".
11:55:43gokrIn Spry I am opting for more Smalltalkish syntax.
11:55:59gokrI made a 2 min silly movie btw, using libui and live coding: http://krampe.se/spry-ide.mp4
11:56:05skrylarI have no idea if i would support aping Redbol. I mean
11:56:12skrylarThere's that one company that sells SCADA systems running on Rebol
11:56:18skrylarThey said it was amazing
11:56:27gokrI am not aping Rebol, I just... got inspired by some ideas.
11:56:35arnetheduckAraq, gdb support is there now
11:56:45gokrAnd I am gradually sliding away I think - towards more Smalltalkish syntax.
11:56:56skrylargokr, depends what you want really
11:56:59arnetheduckjit / repl would be easy to add but there are too many bugs still
11:57:13skrylarST-80 syntax is great in a sense that you can train children to understand it, which was Alan's goal all along
11:57:16gokrskrylar: The movie shows me adding buttons in the "IDE" dynamically btw, kinda fun.
11:57:19FromGitter<Yardanico> arnetheduck: well Araq means "better debugging than in Nim with C backend" is it already the case?
11:57:21arnetheduckexceptions are high on the list because of the mess they cause, after that, gc would be interesting indeed
11:57:34skrylarRebol syntax is great in that metaprogramming is fully natural in appearance with other code
11:57:42FromGitter<alehander42> arnetheduck: ok, dwarf exceptions would be nice indeed! otherwise I am also motivated partly because of eventual jit/repl support
11:57:52gokrskrylar: I am trying to catch "both" aspects.
11:57:58FromGitter<Yardanico> hooray https://github.com/nim-lang/packages/pull/613
11:58:11gokrBoth the lisp homoiconicism - and the Smalltalk "more readable" syntax.
11:58:19skrylarYou can't have both
11:58:29skrylarhomoiconicism tends to nuke the naive readability
11:58:53skrylarfortunately there is no "natural" representation of code. you can teach noncoders that homoiconicity IS correct, and if their minds are not ruined by BASIC and C, they won't know it isn't
11:59:20gokrskrylar: Here is a silly text editor example: https://github.com/gokr/spry/blob/master/samples/editor/editor.sy
11:59:33arnetheduckYardanico, not sure at what level nim-c is, but with nlvm you get to step through the .nim code and gdb can walk types etc
11:59:35skrylarwhether (foo 'bar), foo 'bar, or foo(bar) is natural, is purely anchoring effect :)
12:00:09gokrSpry is currently an "unholy mix" - so it has both prefix words style, and Smalltalk keyword style - which ... yes, gets confusing. I am slowly leaning towards perhaps going even more into Smalltalk direction, not sure.
12:00:36skrylarwell. i like st-80. but everyone complains how verbose it is
12:01:00arnetheduckthere's still some work to do to make it smarter about strings (gdb plugin likely), but it looks pretty natural actually.. I've used it in eclipse for example to step through code
12:01:03gokrI like it too - but in Spry I try to make some things better. Like better "literal syntax" for Dictionaries etc.
12:01:38gokrskrylar: I presume you saw my site: http://www.sprylang.org
12:01:50skrylargokr, also important is that st-80 was always intended to be written by, basically, a SCID system
12:01:56skrylar(Source Code In Database)
12:02:00arnetheduckalehander42, I'd say exceptions and getting rid of crashes would almost be prereq's for reasonable repl support.. later, gc will help as well, llvm5 has been making some strides in that area
12:02:09PMunchHmm, given a stream what's the best way to read the common "BYTE size, BYTE[size] data" pattern
12:02:14gokrskrylar: I would not use exactly those words though.
12:02:24PMunchReading the size byte is easy enough, but what's the best way to read the rest of the data?
12:02:28gokrSmalltalk doesn't have a "database of source code".
12:02:33*Snircle joined #nim
12:02:33gokr(most don't)
12:02:47skrylarthey have the class browser. to a user, close enough
12:02:58gokrYeah, sure. And that I love :)
12:03:16gokrBut nothing prevents also having a reasonable file layout.
12:03:21gokrIf one wishes.
12:03:21*vlad1777d joined #nim
12:03:49skrylarPipe dreams of Ecco Pro clones with ST-80 scripting
12:04:03gokrBut I shouldn't not hog about spry, I am on #sprylang for that
12:04:30gokr(but to all of you not knowing - Spry is written in Nim, so it's at least very related)
12:04:46skrylarone thing i haven't figured out how to do yet in nim, is efficiently plot lines through a projection filter
12:05:09skrylarthough it probably can't be, so .. meh
12:05:33*federico3 quit (Quit: WeeChat 1.9)
12:05:41*federico3 joined #nim
12:06:18FromGitter<mratsim> So apparently Google needs to manipulate AST of functions in Python: https://github.com/google/tangent#automatic-differentiation, SOmeone should pitch Nim to them ;)
12:06:35skrylartensorflow stuff?
12:09:53FromGitter<alehander42> arnetheduck: of course, repl support is my distant goal
12:10:08FromGitter<alehander42> nlvm uses llvm4 currently, right?
12:11:07*xkapastel quit (Quit: Connection closed for inactivity)
12:13:54Araqalehander42: distinct goals are fine but I'm really curious what it takes
12:16:34Araq*distant lol
12:17:51arnetheduckalehander42, yeah.. feel free to upgrade
12:21:47FromGitter<alehander42> well distant as in "I'll try to play with the idea as soon as I know the nlvm codebase well enough, but I realize that there are more pressing issues for nlvm itself in order to be reliable" :D
12:23:07Araq"here is a new LLVM backend that passes 100% of Nim's test suite" "ok ... yay?"
12:23:36Araq"here is a new slightly broken LLVM backend that gives Nim a REPL" "wow, I'm gonna play with that one!"
12:24:04Araqbut hey, just my opinion ;-)
12:25:35FromGitter<alehander42> of course, I don't think 100% is the goal, but arnetheduck said "exceptions and getting rid of crashes would almost be prereq's for reasonable repl support."
12:26:41FromGitter<alehander42> so I assume nlvm might need a bit more stability (not 100% tests) to be not too fragile
12:28:03FromGitter<alehander42> (but I am going to try a repl anyway sooner than later , maybe "parallel goals" is a better wording)
12:33:26arnetheduckexceptions because setjmp will do funny things and crashes.. well, it's kind of annoying if you're building up a repl case and lose it in the middle
12:35:27arnetheduckis a spec for the language part of the 1.0 plans?
12:35:35arnetheduckAraq?
12:38:16*Senketsu_ joined #nim
12:42:26*Senketsu_ quit (Client Quit)
12:43:08PMunchhttps://www.reddit.com/r/nim/comments/7b8qqz/using_case_in_object_definition/
12:43:14PMunchDid you guys see this ^?
12:43:26PMunchThis feature really should be better documented
12:43:42PMunchOr if it is better documented somewhere it should be put in a place where it's easier to find..
12:45:14*dddddd joined #nim
12:49:49dom96which feature?
12:49:52dom96object variants?
12:50:45*Snircle quit (Read error: Connection reset by peer)
12:51:37*Snircle joined #nim
12:52:43FromGitter<mratsim> ranges too
12:53:03FromGitter<mratsim> the case of syntax mostly
12:56:42FromGitter<alehander42> I really like patty's variant and matching dsl-s btw, does somebody use this library?
12:59:07*sleepyqt quit (Ping timeout: 250 seconds)
13:19:03FromGitter<mratsim> What are dwarf exceptions btw? (Please don't answer, the hobgoblins of mind)
13:23:58elroodthe answer isn't that far from it though, it's the debugging format developed for elf objects
13:25:31elroodsee http://dwarfstd.org/ it and its exception handling mechanism has been adopted for other binary object formats since
13:26:19FromGitter<mratsim> Thanks
13:27:32Araqarnetheduck: no way, a spec is more work than a compiler that works reasonably well :-)
13:28:34AraqI'm willing to evolve the manual into a spec of course, but it's really much effort
13:31:17elroodmratsim: actually the way exceptions are handled isn't really part of the dwarf standard, but related closely enough to be called dwarf exception handling
13:34:08FromGitter<alehander42> @Araq so basically the current compiler will be the reference impl ?
13:36:04*yglukhov quit (Remote host closed the connection)
13:36:10arnetheduckwith a spec, I would likely dump the current compiler, reimplement the vm using llvm, redo the compiler as an independent lib.. after those little details, the repl would be a piece of cake ;)
13:37:29dom96why do you need a spec for that? Implement 80% of Nim and then adjust to the reference compiler for the remaining 20% :)
13:37:35*yglukhov joined #nim
13:41:09Araqalehander42: it IS the reference implementation and a "clear spec that is not a clusterfuck to re-implement independently" is a worthy v2.0 goal
13:43:43Araqarnetheduck: how do you handle the case where we have to move things into structs in your debugging support?
13:44:10Araqevery var in a closure (iterator) ends up in a struct, not in a local scope
13:48:19*Senketsu_ joined #nim
13:48:30PMunchHmm, is there a library to do sha hashes in Nim?
13:49:25arnetheducktechnically it should "just work" in the scope of the closure (ie while it's running).. if you assign the closure to a var, it might not however because I don't do gdb-compatible vtables yet, as far as I know.. didn't dig too far into it however
13:50:11FromGitter<Yardanico> PMunch: yep
13:50:26FromGitter<Yardanico> there's this: https://github.com/jangko/nimSHA2
13:50:27*skrylar quit (Remote host closed the connection)
13:50:51FromGitter<Yardanico> well it's sha 2
13:50:59PMunchYeah I just found that :P
13:51:20PMunchI was searching for "nim sha256", when I searched for "nim sha" I found it instantly :P
13:52:50Araqarnetheduck: it can't work if you do use 'transf.nim' ;-)
13:53:11*JappleAck joined #nim
13:53:13Araqyour codegen likely isn't even aware the object comes from a transformation and not from Nim code
13:53:40arnetheduckoh. so you're saying you don't actually generate a nim ptype for it?
13:54:17AraqI do, but var x = 4 becomes environment->x03 = 4
13:54:33Araqand you need to show 'x' in the debugger :P
13:54:52Araqcomes up for async code all the time
13:55:24arnetheducklikely, I show environment, and you can drill into it to get x..
13:55:40arnetheduckgot an easy test case somewhere? test suite maybe? I can give it a try
13:56:11dom96Anybody have access to high CPU core count servers that I could use for some benchmarks? :)
13:58:05arnetheduckdom96, a spec would be used to tell features from bugs - impossible with the current compiler ;)
13:58:42dom96arnetheduck: true :)
14:03:14Araqarnetheduck: oh that's actually rather simple, we don't make mistakes unless the compiler crashes.
14:03:26Araqso a crash is a bug, no crash is a feature
14:03:33Araqsimple.
14:04:23Araqwe turn bugs into features via if x.isNil: localError(n.info, "not supported")
14:05:01arnetheduckalehander42, oh and while you're at it, there's always thread and tls support as well - technically part of fixing the test suite ;)
14:05:26*Senketsu_ quit (Remote host closed the connection)
14:06:06arnetheduckAraq, ooh. then I have a few things I'd like patched ;)
14:06:42*endragor quit (Remote host closed the connection)
14:06:58arnetheduckstart with the refcounting gc and the horrible origin tracking mess that the compiler tries to do with onstack, onunknown and so on
14:07:35dom96:O
14:20:39Araqhorrible? :-)
14:21:17Araqrecently we got AST node support in the TLoc object so you can just recompute the location
14:21:34AraqI would advice you to do just that in nlvm
14:27:22*NimBot joined #nim
14:43:15arnetheducknlvm gdb closures: https://gist.github.com/arnetheduck/48d8cfab5eb8d579d0d901d3e0f48b6d
14:54:41*gokr quit (Ping timeout: 240 seconds)
14:59:22arnetheduckAraq, TLoc is a bit hard to use in nlvm, it's geared towards text-outputting backends with its rope member..
15:00:25Araqwhat do you use instead?
15:00:46*nsf quit (Quit: WeeChat 1.9.1)
15:05:39*couven92 quit (Quit: Client disconnecting)
15:08:52*smt joined #nim
15:29:38*rauss joined #nim
15:31:50*PMunch quit (Quit: Leaving)
15:56:35*nsf joined #nim
16:08:49*smt` joined #nim
16:12:36*smt quit (Ping timeout: 268 seconds)
16:14:27*arnetheduck quit (Ping timeout: 268 seconds)
16:16:03*smt joined #nim
16:18:39*smt` quit (Ping timeout: 248 seconds)
16:20:13*TjYoco joined #nim
16:21:53*smt` joined #nim
16:23:05*livcd quit (Remote host closed the connection)
16:24:57*vlad1777d quit (Ping timeout: 250 seconds)
16:25:10*smt quit (Ping timeout: 258 seconds)
16:25:27FromGitter<Yardanico> Araq: offtopic, about StarCraft2: do you know it's going F2P on 14th of November? :) e.g. you'll be able to play first campaing for free + free multiplayer (including ranked matches)
16:25:42FromGitter<Yardanico> and also co-op missions :P
16:27:34FromGitter<Yardanico> well maybe you're interested :D
16:28:15*vlad1777d joined #nim
16:28:44*floppydh quit (Quit: WeeChat 1.9.1)
16:32:45*vlad1777d quit (Ping timeout: 250 seconds)
16:33:15*vlad1777d joined #nim
16:53:18*miran joined #nim
16:54:28*yglukhov quit (Remote host closed the connection)
16:58:28*yglukhov joined #nim
17:02:10*SenasOzys_ quit (Ping timeout: 264 seconds)
17:02:35*yglukhov quit (Ping timeout: 240 seconds)
17:03:40*SenasOzys_ joined #nim
17:11:58*Jesin joined #nim
17:15:35*ryanhowe joined #nim
17:18:22*ryanhowe quit (Client Quit)
17:20:25dom9617 comments already, whew
17:20:27dom96https://github.com/nim-lang/Nim/issues/6700
17:22:01dom96btw treeform, you're right, the docs are wrong.
17:24:05dom96Also, yeah, newSocket() vs. new Socket is incredibly subtle :\
17:25:59*Vladar quit (Ping timeout: 268 seconds)
17:26:26*Vladar joined #nim
17:28:24*gokr joined #nim
17:28:52Araqyardanico: I'll consider it but I have no time for gaming
17:29:13Araqbut yeah I'm aware it's free to play now, I'm not living under a rock ;-)
17:35:34*Trustable joined #nim
17:36:37FromGitter<Gooseus> Araq: @Yardanico you guys should meld the gaming / nim dev by building a SC brood wars AI in nim to compete in some tournaments... if it does well then that should up the visibility and interest from AI people who can then join the community - http://www.starcraftai.com/wiki/Main_Page
17:37:14*claudiuinberlin quit (Quit: Textual IRC Client: www.textualapp.com)
17:39:08GitDisc<GooRoo> I guess in this case it doesn't really matter which language you use
17:42:35*SenasOzys_ quit (Ping timeout: 240 seconds)
17:45:36*vivus joined #nim
17:45:37*smt` quit (Read error: Connection reset by peer)
17:46:17*smt` joined #nim
17:52:07Araqgooseus: you can also build an SC2 AI, the created an API for it too
17:54:10*yglukhov joined #nim
17:56:37dom96lol
17:56:44dom96you're aware because I told you :P
17:57:27*gokr quit (Ping timeout: 240 seconds)
17:59:10*yglukhov quit (Ping timeout: 264 seconds)
17:59:30*SenasOzys_ joined #nim
17:59:43*yglukhov joined #nim
18:03:18Araqdom96: actually I also got an email about that yesterday
18:03:22Araq:P
18:05:44vivusis it better to add auto-op or just op for a channel?
18:07:39FromGitter<Yardanico> manual op is better for dealing with trolls :P
18:08:43dom96vivus: freenode guidelines state you should remain without +o until you need it
18:08:55dom96it draws attention from trolls
18:09:07vivusnoted
18:12:52dom96Going to ask this again. Anybody with a high cpu core count server who would be willing to let me run some benchmarks on it?
18:13:37federico3dom96: *cough*
18:14:26dom96federico3: You came to mind, but I feel odd about using your hardware when I'm sort of rewriting what you've written :)
18:15:01federico3what is it?
18:15:02dom96Then again, what I'm writing has grown outside the scope of your PR anyway
18:15:24federico3the socket dispatcher?
18:15:41dom96The parallisation of asynchttpserver
18:15:46dom96*parallelisation
18:15:56dom96(if that's even a word :))
18:16:05federico3yep - but now it's more generic than *http* I guess?
18:16:17dom96I'm basically writing a custom HTTP server on top of epoll for the greatest performance
18:17:08federico3sounds almost orthogonal to my PR
18:23:22federico3do you plan to support multiple threads?
18:23:48dom96yep
18:23:59*TjYoco quit (Quit: Leaving)
18:25:17GitDisc<treeform> Will like a virtual private server work?
18:25:25GitDisc<treeform> Or do you need one that is real hardware?
18:26:35federico3dom96: if you also need a slow - but physical - server, Scaleway have 4-core ARMv7 for 3 euros a month
18:31:13*grumbly joined #nim
18:32:38grumblyHi there. I'm having the PCRE problem (could not import: pcre_free_study), but with the newer pcre v10.30. Has anyone tried 10.30 or have a good guess what I could try?
18:33:11grumblyI tried to get our sysadmin to install 8.38, but they went to 10.30 instead.
18:35:22dom96have you tried compiling with --deadCodeElim:on?
18:41:53grumblyNo luck with compiling my executable with "--deadCodeElim:on", resulting in the same pcre import error. I wonder if there were breaking changes.
18:42:47dom96Sadly it seems that the stdlib will need to be patched to fix this :\
18:48:24grumblyI just read that pcre10.xx is known as "pcre2" and 8.xx is "pcre1" so yes, probably breaking changes.
18:49:13grumblysource: https://www.pcre.org/original/changelog.txt
18:49:43grumblyThanks for the help.
18:50:10*grumbly left #nim (#nim)
18:59:44FromGitter<mratsim> Omg, nimble directory structure, 3 posts in 1 min >_>
18:59:52dom96:D
19:00:04federico3posts?
19:00:11FromGitter<mratsim> https://github.com/nim-lang/Nim/issues/6700
19:09:56dom96replied again :)
19:16:09*SenasOzys_ quit (Quit: Leaving)
19:16:29*SenasOzys joined #nim
19:21:38Araqthat RFC is tremendously successful XD
19:40:21*PMunch joined #nim
19:42:04*miran quit (Quit: Konversation terminated!)
19:44:27*enthus1ast- quit (Ping timeout: 260 seconds)
19:55:27*sz0 joined #nim
20:04:43*Guest2656 quit (Quit: Leaving)
20:05:06*RPG joined #nim
20:05:30*RPG is now known as Guest27009
20:07:25dom96lol, apparently bcrypt2 is no longer recommended for hashing passwords https://news.ycombinator.com/item?id=15646743
20:07:32dom96s/2//
20:24:06*smt_ joined #nim
20:24:59*smt_ quit (Remote host closed the connection)
20:25:31*smt_ joined #nim
20:27:11*smt` quit (Ping timeout: 250 seconds)
20:29:04*yay joined #nim
20:36:39FromGitter<Varriount> Araq: Ever considered an OS with an SQL based API, rather than a file based one like *nix?
20:37:14*gokr joined #nim
20:39:30PMunchVarriount, huh that would be pretty interesting
20:39:51PMunchDoes anyone know how to print an array of bytes as hex in Nim?
20:42:13PMunchCurrently I'm doing `for c in array: stdout.write(c.toHex)`
20:42:18PMunchBut that feels a bit hacky..
20:43:01*smt_ quit (Quit: Leaving)
20:50:41Araqvarriount: yup, but I don't have time to develop an OS
20:51:05FromGitter<data-man> @PMunch:
20:51:41FromGitter<data-man> ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=5a021cdd32e080696e7850ed]
20:52:31PMunchWell yes, obviously that's a solution :P
20:52:34FromGitter<data-man> Criticism is welcome :)
20:52:50PMunchPR it to strutils :)
20:53:36federico3PMunch https://github.com/nim-lang/Nim/pull/6517
20:54:35PMunchNice :)
21:08:42*Vladar quit (Quit: Leaving)
21:09:54*Trustable quit (Remote host closed the connection)
21:13:18PMunchHuh, this is strange
21:13:29PMunchI'm trying to implement a Keepass parser in Nim
21:13:41PMunchAnd I've run into a really bizare problem
21:15:01PMunchGiven the same key and input after having been run 10000 rounds through AES-ECB the output from Nim and Python is exactly the same for half the output, then they differ..
21:15:32PMunchChanging rounds or input obviously makes the entire thing different
21:16:38PMunchOh sorry, not 10_000 rounds 100_000 rounds
21:17:17FromGitter<Varriount> PMunch: Integer overflow?
21:17:43PMunchIn Nim but not in Python?
21:18:02PMunchThe input and outputs are all given as strings, so that would have to be in nimAES
21:18:12PMunchErr, nimAES2
21:18:24dom96It's likely that there is a bug in that package
21:18:27PMunchNo wait, it's nimSHA2 and nimAES
21:18:42PMunchBut after 100_000 rounds they are almost the same
21:19:00PMunchI would expect there to be a huge discrepancy if there was a bug..
21:20:00FromGitter<Varriount> PMunch: Python uses bigints
21:24:00PMunchIt's just so strange, I would really expect it to be completely different
21:24:17PMunchWhat are the odds that after 100_000 rounds the bug was hit exactly once?
21:25:09*Arrrr quit (Read error: Connection reset by peer)
21:25:18PMunchOuch
21:25:19*SenasOzys quit (Ping timeout: 248 seconds)
21:25:28PMunchI just output all 100_000
21:25:39PMunch90% of them share the same last half..
21:25:53*lurker joined #nim
21:28:19*nsf quit (Quit: WeeChat 1.9.1)
21:29:04*elrood quit (Quit: Leaving)
21:37:13PMunchAah
21:37:22PMunchTurns out I'm an idiot..
21:37:45yayAraq I wonder if the inability to go to a definition of an import is a limitation of numsuggest? For example, Cmd-MMB click on "threadpool" in "import threadpool" does nothing in the VS Code with the Nim plugin by Konstantin Zaitsev. Trying to go to the definition of the "spawn" proc is equally futile, *if* the "spawn" is actually followed by the proc you want to spawn, it's possible to go to a definition of the "spawn" otherwise. I made a small
21:37:46yay gist: https://gist.github.com/yay/425413483577f068acc3eca311e36a49
21:38:04PMunchECB is only 16 bytes at a time. The Python implementation just splits it into blocks for you, the Nim implementation doesn't
21:45:22shashlickPMunch: I've wrapped the openssl SHA code in case you are interested
21:45:43shashlickdom96: how many cores are you looking for?
21:45:57PMunchThe nimSHA seems to be working fine, and then I don't have to depend on openssl :)
21:46:26dom96shashlick: as many as possible :)
21:46:40shashlickso I've written a wrapper for c2nim that allows you to build the openssl SHA code into your binary, no dependencies
21:47:06*marenz_ joined #nim
21:47:52PMunchHmm, is that allowed with openSSLs licence?
21:48:55federico3I don't recommend implementing crypto algorithms. That's what well-tested libraries are for
21:49:03shashlicklooks like, as long as they are acknowledged
21:49:23shashlickhttps://www.openssl.org/source/license.html
21:49:42shashlickfederico3: that's why I wrapped openssl and just {.compile.} in the source directly
21:50:00shashlickit's about time I put this stuff on github for evaluation
21:50:27shashlickstarted with openssl SHA, i tried the tool on the Bass audio library and it works well
21:50:29federico3also, the stdlib already uses openssl. Perhaps some of its primitives can be exposed. Also, I wrote a wrapper for libsodium
21:50:40federico3(given openssl security history...)
21:51:26shashlickhow easy/quick is it to get into the nimble directory?
21:52:07FromGitter<mratsim> Depends if you use nimble publish you will probably have to fix your PR manually :D
21:55:28shashlickdom96: does 2 CPU with 8 cores each count?
21:56:10Araqyay: possible, symbol lookups with an incomplete context are hard
21:56:58yaywell, in this case symbol lookup with an incomplete context works :)
21:57:54FromGitter<data-man> With the curl I using https://github.com/ARMmbed/mbedtls
21:57:59dom96shashlick: yeah, that would help. What sort of server is it?
21:58:00yayI mean, "spawn" all by itself is not a valid program, but symbol lookup works. Change it to "spawn hello(i)" and it stops working
21:59:22shashlickdom96: R740, i'll have to ask for time on it. Here's another one with 18 cores per CPU x 2 but will need time to figure out access/OS, etc.
21:59:26shashlickDell R740
22:04:36shashlicknimSHA2 is quite competitive with openssl and mailfs's SHA implementation, as long as you are in -d:release mode
22:04:53dom96Hrm, it seems I can get the high CPU droplets on Digital Ocean on my personal account
22:04:56dom96I might just do that
22:06:05shashlickdom96: cool
22:06:59yglukhovyay: Araq: module name lookup is a bug I told Araq a while ago. module name suggestion is commented out currently in nimsuggest =)
22:07:16yglukhovand i failed to uncomment it
22:09:08yayIf only all bugs could be fixed by uncommenting stuff ;)
22:09:54Araqnimsuggest has an awesome test suite, unfortunately I need to make the tests green again and make travis run these tests
22:10:22Araqwell "awesome" in the sense tests can be added easily and are declarative
22:11:03shashlickdom96: I have the 2 x 8 system on hand if you need it. has a linux on it
22:11:10Araqcontributing to Nim is easy, go for it, yay
22:11:18dom96shashlick: ok, i'll let you know :)
22:11:24*ipjk joined #nim
22:11:27dom96thanks!
22:15:54yayAraq Hmm, ok, I'll try.
22:16:30*lurker quit (Quit: Leaving)
22:28:29FromGitter<Varriount> skrylar: How does fltk handle accessibility interfaces?
22:35:57shashlickskrylar: I'm also in TX :)
22:37:19PMunchWoo, now the decryption works
22:37:37PMunchNow I just gotta implement unzipping and it's pretty much done :)
22:39:02*PMunch quit (Quit: leaving)
22:50:41FromGitter<Varriount> PMunch: What are you making?
23:05:07*SusWombat quit (Ping timeout: 260 seconds)
23:15:52*yay quit (Quit: Textual IRC Client: www.textualapp.com)
23:44:17*vlad1777d quit (Remote host closed the connection)
23:58:35*yglukhov quit (Remote host closed the connection)