<< 03-03-2014 >>

00:00:17dom96Varriount: Isn't that a bug?
00:00:45NimBotAraq/Nimrod devel 5f7ac15 Grzegorz Adam Hankiewicz [+0 ±1 -0]: Adds posix.timegm(), brother of posix.mktime().
00:00:45NimBotAraq/Nimrod devel 3857496 Andreas Rumpf [+0 ±1 -0]: Merge pull request #927 from gradha/pr_adds_posix_timegm... 2 more lines
00:01:22*Matthias247 quit (Read error: Connection reset by peer)
00:07:12AraqKelet: marshal uses nimrod's typeinfo stuff. It is reasonably easy to adapt marshal to produce a binary reader/writer
00:07:21Araq(welcome btw)
00:08:57filwithttp://forum.nimrod-lang.org/t/386
00:09:21filwit^ okay folks, made a forum post about a new syntax idea i had last night
00:10:55filwiti think it address everyone's concern (just about) and has a (theoretically) realistic path implementation (changes can be done in steps, and things like {} sytle is more of an extension once certain symbols are rearranged)
00:11:06filwitpath too**
00:11:11filwitto**
00:11:35fowlvar mySet = @{ A, B, C }
00:11:41fowlwhat is {a,b,c} then?
00:11:52filwitplease read the whole post
00:12:08fowlyeah
00:12:16fowlit appears you want it to be a statement list
00:12:17filwit{} would be reporposed for white-space insignificant "body"
00:12:50fowlyou know @ is a unary function on openarray that creates seqs right
00:13:22filwitfowl: didn't know that actually
00:14:19*q66 quit (Quit: Leaving)
00:14:25filwitfowl: but i'm sure that problem could be addressed, or perhaps a better syntax for set/seq could be found (though i think the @[]/@{} is just fine)
00:15:38fowl{} is also used for dictionary
00:15:42EXetoCwhy should it look more like seq construction rather than array construction?
00:15:43renesacfilwit, not having the program behave like it looks like (it's indentation) is bad in my opinion
00:16:08fowl@{"hello":"there"} == @[ ["hello","there"] ]
00:16:12renesacand one could use #{ and #} for redundancy in defining blocks
00:16:18renesacfor e-mails, etc
00:16:25renesacno need to repurpose {}
00:16:49filwitrenesac: the point of use {} for brackets is purely for popularity
00:17:02renesacit will lose popularity among python users
00:17:03renesac:P
00:17:03filwitrenesac: and honestly, set's don't really need them
00:17:14renesacnot only sets are defined by them
00:17:17fowlthis is true
00:17:19renesacthere are {}
00:17:22renesac*{:}
00:17:25renesactables
00:17:26fowli think it would be better to just use set(x,y,z)
00:17:39filwitfowl: i agree actually
00:17:48Araqthere is also a{i}
00:18:00Araq(similar to a[i] )
00:18:07fowlfilwit, i dislike your proc pragma change, if you want it to be more like types, it should be proc foo* {.pragma.} (args)
00:18:40filwitfowl: i'm not against that actually, though I'm not sure i like it better
00:18:42Araqfilwit: also you can already do: type Foo = object {.pragmas.}
00:18:54fowland swapping around : and = in the proc def will break tons of code, a better idea would be to make proc declarations the same as do() ie proc foo*(x:int) -> string:
00:19:11filwitAraq: i'm not sure what you're comparing that {.pragmas.} too
00:19:44filwitfowl: how would that break any less code? and this isn't like a "we need it NOW" kind of thing
00:19:50Araqit comes late then, similar to how it's done for procs
00:20:25Araqbut I'm sleeping anyway, bye
00:20:28filwitAraq: i know you can do that, but isn't that fundamentally different?
00:20:29fowlfilwit, because when the proc hits the "=" in the definition, it knows it needs a body, you allow "= returnType : body"
00:20:36filwitAraq: okay, will talk later
00:21:08filwitfowl: we're talking about parser changes man. '=' would now mean 'is type' and ':' would invoke the body
00:21:38fowlto me it looks like proc () = float: foo is a void function calling a template float with body code foo
00:21:54fowland thats what i expect others who know nimrod to read that as
00:22:04renesacfowl, a template in this case would need 'do'
00:22:29renesacbecause some other ambiguity
00:23:08filwitone thing is that ':' really should be use for "start body" because of everything else that uses it if/else/custom-macros etc
00:23:24fowlyea
00:23:32renesacon the other hand, ':' is also used to specify type
00:23:42renesacI'm not sure what is more consistent
00:23:46fowlbut now we have do -> ty : body, proc = ty: body, proc : ty = body,
00:24:27renesacyeah, it would be good to unify 'do' and normal procs
00:24:31filwitfowl: the last would be removed
00:24:54filwitfowl: and the first is only to pass things around and probably could have a better solution?
00:25:24AraqI hate to say it, but if we remove ':' for types things might get easier: proc foo(a, b int) int: body
00:25:26EXetoCdeath to excessive use of brackets - optional or not
00:25:30dom96filwit: I don't think allowing users to choose between brackets/indentation will result in a popularity increase.
00:25:59renesac^
00:26:02fowlfilwit, remove the last option and you've rendered 100% of nimrod code uncompilable
00:26:19Araqbut I think these go-like declarations really look ugly
00:26:32filwitdom96: completely disagree really. it might not "make a splash" but based on complaints i've heard it would help adoption
00:26:45filwitAraq: they could be on multiple lines
00:26:56filwitAraq: eve the ':' could be on a new line
00:26:56Araqfilwit: that's awful
00:27:04filwitAraq: it's choice
00:27:12EXetoCeverything is being criticized all the time...
00:27:13renesacfilwit, it would just split the language, and make people read those ugly code
00:27:34AraqI'm sleeping anyway
00:27:35dom96filwit: You want to increase consistency right? Well, this would make things less consistent.
00:27:37filwitrenesacs: kinda like how case-sensitivity doesn't do?
00:27:38filwit:P
00:28:13filwitdom96: i want to increase consistent with symbol usage. I always liked Nimrod's "you choose" attitude
00:28:24renesacwell, most languages don't really force some case standard
00:28:39filwityes, the lib-writers doo
00:28:45renesacand with case-insensivity you can call the way you want
00:28:56EXetoCyou still need prefixes
00:28:58filwitwhich means you have to do: SDL_CreateWindow(getNameFrom(something_else_entirely()))
00:29:12filwitbut that's nicer in Nimrod because there's choice
00:29:29dom96I don't get why you want to change the syntax of type definitions though.
00:29:40filwitthis is basically the same idea, only with statment structure
00:29:49dom96I can understand why you may want: proc x(y: int) -> int: though.
00:29:55filwitdom96: i don't, types are pretty much left how they are
00:30:15filwitdom96: i even question needing to enfore ':' use at the end of the post
00:30:52fowltype Foo: bar: int
00:30:52fowl <- what is this
00:31:05dom96filwit: I think the : is required in if statements at least.
00:31:11filwitAraq: i actually agree that removing the ':' might make things easier for procs
00:31:36filwitdom96: yeah i agree mostly, which is why i was promoting enforcing it :P
00:31:44dom96writing proc x = int doesn't make sense to me though.
00:32:02dom96"procedure x equals type int"?
00:32:08renesacstill makes a severe compatibility break
00:32:24renesacdom96, I agree, -> is much better, and already used in 'do'
00:32:45filwitdom96, renesac: no what Araq said was better.. just remove ':' altogether
00:32:51filwitproc x int
00:32:55filwitproc x int: ...
00:33:02filwitproc x int
00:33:03filwit ..
00:33:04fowlfilwit, the only change listen here that i can agree wiht is allowing : in type defs ie type A : object
00:33:05filwit?
00:33:26fowllistend*
00:33:27renesacfilwit, he didn't really said, it was better, he said ' I hate to say it'
00:33:29renesacXD
00:33:29fowllisted
00:33:38renesacbut yeah, it is an option
00:33:47EXetoCrenesac: though it's feasible to automate migrations for grammars that are parseable by normal human beings
00:34:08dom96I wonder if he was kidding.
00:34:19dom96because that looks absurd to me
00:34:20filwiti don't think so, just pointing something out
00:34:24filwitlol
00:34:43renesacanyway, I'm oposed to identation insensitity, and I don't see that much gain for such a big change
00:34:44filwitwe had talked about the merits of ':' in the past for var declarations
00:34:55renesacactually, it is pure bikeshedding
00:35:34filwitrenesac: i don't see for what reason you are apposed to case-insensitivity
00:35:52filwitrenesac: plus this is of course a bikeshedding issue.. but one that gets brought up a lot
00:36:07fowli wish someone would write a c-like syntax
00:36:08renesacwe just need a good FAQ entry on that
00:36:11renesacI may provide this
00:36:31filwitrenesac: this isn't a "let get started guys" proposal, but a "future directions to make Nimrod inviting and consistent" proposal
00:37:09renesacbrackets aren't inviting for me... else I would be using/trying D or Rust
00:37:12filwitrenesac: do you just "not like" the idea or others using brackets? I don't really find that a valid complaint
00:37:30filwitthe whole point of this is that many feel the exact oposite
00:37:38filwitopposite*
00:39:06dom96https://gist.github.com/dom96/959f27018ea3247a4498
00:39:18dom96To me it's perfectly consistent.
00:39:31dom96The comments are how I would read the code in my mind.
00:39:47EXetoCChances are I'll be reading such code written by others, and that's why it matters
00:39:54renesacfrom __future__ import braces
00:40:22filwitEXetoC: the same rules of case-inconsistency apply to this
00:41:16filwitdom96: it's not consistent. because Bar's reclist just follows the 'object' part
00:41:39filwitdom96: only you have to have a \n to invoke that, since not even [,] work for objects (only tuples)
00:41:46dom96'object' starts a new section
00:41:53filwiti know
00:41:53dom96similar to the way 'type' does
00:41:57filwiti know..
00:42:05dom96So it is consistent.
00:42:27dom96It's only slightly different because it comes after an '='
00:42:30filwitonly it's a completely different sort of symbol. 'type' is a keyword, 'object' is not
00:42:39dom96object is a keyword
00:42:48renesac'if' only has a ':' because it needs that when you do it in one line
00:42:53filwitit doesn't matter, it's not used the same, dom96
00:42:57fowlfilwit, are yous ure object[a:int] doesnt work? i know tuples work both ways now
00:43:02renesaclet, type, object don't need ':' for one-liners
00:43:26renesacso they don't have it either when you do in multiple lines
00:43:30dom96let, var, const, type, object, tuple -- all consistent.
00:43:31filwityes, in that i agree.. i've agreed many times that the ':' could probably be optional
00:43:46dom96oh, tuple and object are good examples of consistency
00:44:05filwittype Foo = object[a, b: int] # doesn't work still right?
00:44:13dom96Why should it?
00:44:32dom96What's the difference between that and s/object/tuple/ ?
00:44:36EXetoCfilwit: well, I don't feel too strongly about that
00:44:56filwitdom96: i'm not following you
00:45:13dom96My point is that you may as well just use a tuple in that case anyway.
00:45:16EXetoCdom96: the construction and the significance of the names
00:45:40filwitdom96: that has no relevance on weather or not the syntax is consistent
00:46:45dom96filwit: Alright. Fair enough. I suppose consistency doesn't necessarily matter if there is another way of doing the same thing.
00:47:39filwitdom96: i don't even fully understand the difference between object/tuple in Nimrod, beyond exposure semantics
00:48:06dom96Well AFAIK. With object you can inherit from different objects
00:48:17dom96With tuples you can access them by index
00:48:19fowlobject can have invariants and use the when stmt inside them
00:48:30dom96yeah, that too.
00:48:35dom96tuples are much simpler
00:48:44dom96which is why it makes sense to define them using that syntax
00:48:55dom96and why it makes sense to define objects with that long syntax
00:49:18filwitokay that makes sense
00:49:19dom96But in the name of consistency we can ignore that I guess.
00:49:42*darkf joined #nimrod
00:49:59renesacfilwit, changing subject, you should make a tutorial on how to use intrinsics in nimrod
00:50:13renesacdo you have some wrapper already made?
00:50:37EXetoCwhat's that? compiler pragmas?
00:50:48filwitrenesac: yeah, it's somewhat primitive atm. But one sec
00:50:51EXetoCnvm. wrapper?
00:51:11EXetoCunless that was an unrelated question
00:51:14filwitEXetoC: he means simd stuff
00:51:35EXetoCok I didn't know about that
00:52:43renesacyeah, <intrins.h> and friends
00:53:04dom96filwit: But seriously. Please stop worrying about these things. Just accept the way things are for now and work on more important things, like making the docs nicer, that should give us a better popularity boost than some consistency adjustments.
00:53:08filwitrenesac: here's a basic lib with a Vec4: https://gist.github.com/PhilipWitte/9316566
00:53:29filwitrenesac: just wrap more of xmmintrin.h to get more functions
00:54:40renesaccool
00:55:24filwitdom96: i'm not "worrying" about them at all anymore. I had an idea last night about it and posted to Araq personally before posting here. He suggested making the forum post and talking about it with you all. I will being making a parser which works like this on my own if you folks really don't like it (to experiment), but that will be far away from now.
00:59:22dom96filwit: I will take a more thorough look at your proposal tomorrow because it is quite late here and I am very tired. But for now I will stick to what I said, I think the language is perfectly consistent and I still don't understand why you think otherwise.
01:04:16filwitdom96: can you do "type X = var\n " ? no.. there's only one place in the compiler where a body directly follows a keyword and gets assigned to a unique symbol. However, there's many places where a stmt body is passed to something, and even if/proc work differently here. It's true that proc is somewhat consistent with how 'var' works, but then, these are sorta fundamentally different beasts. Definiting a proc is more like definging a type than a var really.
01:06:33dom96I disagree. Definining a proc is exactly like defining a var.
01:06:50dom96var x: int = 5
01:06:56dom96proc x: int = 5
01:07:11renesacfilwit, the '=' use in procs is consistent with variable declaration:
01:07:12renesachttps://gist.github.com/ReneSac/02076a8ed3cfc4d559c3
01:07:34filwitwhich is why i always wanted to make types like this: "type Foo: Bar = <body>"
01:08:15filwitbut then this is completely inconsistent with if/else/macros and I started to see how type wasn't the problem
01:08:41filwitultimately, it would be nice if all "body's of executing code" followed a consistent symbol.. ':'
01:09:34filwitand then, you could apply the same to types as well to be consistent, which also opens the door to allow optional {} style, which wins all arguments in terms of adoption (honestly, why NOT do it if you have the option?)
01:09:42dom96Sometimes you just have to accept that not everything can be consistent. Because the two things are different enough that they just cannot be.
01:10:46*ddl_smurf joined #nimrod
01:10:55filwitsorry, but i don't accept arguments of complacency :P i'm not saying this is "so important Nimrod will never get uber-popular without it".. i'm saying "i think there's a better way, here's why"
01:11:26dom96Araq was going to implement the {} and begin/end style
01:11:30dom96using filters
01:11:31renesacfilwit, this is also about convenient line-breaking
01:11:53dom96I'm not sure why he changed his mind.
01:11:54renesac'let x: int = 1 + \n 2' is also permited
01:12:09renesac'=' isn't special case
01:12:31dom96Yeah, that's true.
01:12:54filwitrenesac: yet, but this fundamentally feels different than 'object\n <recList>'
01:13:09filwitand in the case of types, the ':' doesn't apply
01:13:23dom96The problem I can see with allowing {} is that you may get code which doesn't care about indentation which will happen, and then you are confused if you are used to the indentation style.
01:13:39dom96You scroll up and down "ugh, this code uses braces"
01:14:02renesacbesides haskell, I don't know any language that allows both styles
01:14:05dom96Araq's original plan was to allow the IDE to render the Nimrod AST whichever way you preferred.
01:14:20dom96Which would solve that problem.
01:14:23renesacneither side seems open to add support for other block definition style
01:14:39filwitdom96: that is a valid concern. but I'm not sure how much that will happen in practice. Usually people will just chose one or the other, and you could also have compiler-option to enforce specific ones if you really wanted
01:15:05dom96I'm talking about other people's code here./
01:15:12dom96Not my own code which uses different styles.
01:15:23dom96Say I want to fix some bugs in other people's code.
01:15:37renesacI'm more ok if {} is used only for redundancy, w/o letting people disregard proper identation
01:15:48EXetoCI want consistency without having to rely on tools
01:15:56filwitdom96: IDE rendering is a good point too..
01:16:00renesacbut even then, I don't think this cruft is necessary in the language
01:16:20dom96filwit: However, there is no reason not to get the IDE to translate to the indentation style
01:16:35dom96You can still get this feature, even if the language doesn't support {}
01:16:52renesacand for redundancy, one could easily implement '#{' '#}' w/o breaking any backwards compatibility
01:16:53filwitthat's very true
01:17:15filwitrenesac: it's not for redundancy. that would be pointless
01:17:43renesacso for what?
01:18:01renesacmost of the arguments against identation for defining blocks that I hear are:
01:18:05filwiti meant, no one is arguing for {} as just a redundant wrapper for code
01:18:08renesacthey are lost in e-mails and blog comments
01:18:27renesacthe IDE might use them to re-ident code cop
01:18:31renesacied from somewhere else
01:18:46renesacto make block start and finish more visible
01:18:58renesacall of those are served by redundancy
01:19:05renesacactually, ask for that
01:20:08filwitwell i don't mind the object definition so much when it's like this:
01:20:10filwittype Foo =
01:20:13filwit ref object
01:20:16filwit a, b: int
01:20:28filwitbecause it's clear what is happening
01:20:33filwitbut still, i think:
01:20:37filwittype Foo: ref object =
01:20:40dom96The advantage of the type *section*
01:20:42filwitis best
01:20:44dom96is that you can write 'type' once
01:20:51dom96and define multiple types
01:20:53renesacthink of 'object' like a unary operator, but that can receive a block of code
01:20:58filwiti don't see how this effects that, dom96
01:21:01dom96Which is the same advantage that let/var etc has
01:21:07renesacyeah, it is kinda inconsistent, but is convenient
01:21:20dom96Well, I find it on the same line ugly :P
01:21:21fowlrenesac, how is that at all true
01:21:44renesacmaybe it was a bad analogy..
01:21:50fowllol
01:22:02renesacas it isn't a operator, is part of the syntax that can't be emulated, it seems
01:22:18fowli meant the receiving a block of code part
01:22:48renesacthe fields definition can span multiple lines
01:22:54renesacI would call that a block, even w/o the ':'
01:23:36EXetoCbacon
01:23:42dom96It's not a block per se
01:23:55filwityes there are only two places where something consumes a non-comma-separated "body".. that's 'types' and procs
01:23:56dom96But I should really sleep
01:24:03dom96Good night guys
01:24:07filwitlater
01:24:26fowlin c the stuff inside struct {} is code
01:24:30filwitsorry, not only two places, if/else/etc do it too
01:24:30renesacfilwit, and template and macro definitions
01:24:36renesacand that
01:24:54filwitfowl, renesac: i agree with dom96 actually, {} should just be an IDE thing
01:25:02fowlits not a "body" at all, its called ident defs
01:25:02filwitit just makes the most sense
01:25:28fowlyou can also find ident defs in var decls and function parameters
01:25:42renesacfowl, right, I was really imprecise, it was only an analogy, but didn't help
01:25:51filwitfowl: i know it's not a StmtBody (it's a RecList), but it's still not comma-separated
01:26:15filwitfowl: so it "feels" like a "body of code" especially since it can have 'when' statements and 'case' too
01:27:46filwiti think this is best solution, honestly..
01:27:51filwittype Foo Bar: <body>
01:27:58filwitproc foo int: <body>
01:28:20filwitvar foo: int = 0 # '=' is assignment and unique to var/let/const
01:28:48filwitthen have {} be IDE feature if it's really wanted, etc
01:29:28filwitor i guess you could do..
01:29:34filwitvar foo int: 234
01:29:45filwitfor complete consistency, but whatever
01:30:37renesacactually, dont the (;) syntax already enables C/java like blocks of code?
01:30:58filwitrenesac: not really, it's just for combining lines
01:31:18renesacwhat would't work?
01:31:38filwitdoesn't change how white-space is used
01:31:51filwitit just allows.. var a = 10; echo a
01:36:36renesacok, it seems that I can't nest (:)
01:36:48renesac* (;)
01:37:32renesacand yes, identation rules still are followed
01:41:31Varriountfilwit: I don't mind others using brackets and semicolons, as long as *I* don't have to.
01:42:01Varriount(I'm reading logs while taking a break from frantic essay writing)
01:42:52filwitVarriount: dom96's points about this where valid. It could cause people to mix-match braces and cause bugs because they're expecting one and get the other. Plus, IDE rendering solves all concerns about Brackets or styling in general
01:43:08BitPuffi1Araq: wtf, pow _alias_?? So un-nimrodic
01:43:27filwithe's alseep
01:43:31filwitasleep*
01:43:45BitPuffi1yeah
01:44:32Varriountfilwit: I am open to the idea about adding @ to set literals ('open' meaning I'm neither for, nor against the idea)
01:46:37filwitVarriount: no point really, that was only to free up {} for curly-brace style.. but I (think) i agree with dom96 that issue is better addressed with IDE rendering
01:47:26EXetoCI think that was the original proposal
01:47:29filwitVarriount: my main reason for that wasn't that I wanted curly-braces, it was that there's a lot of people that do. But this issue is a "meh, once we have a good IDE no one will complain" thing i think.
01:47:36Varriountfilwit: Hm. Then can you edit your post to reflect your new thoughts?
01:47:45filwitEXetoC: yeah, Araq originally planned on having both styles
01:47:53renesacfilwit, maybe I should't be saying it, but in 10+ years of python I don't remember any IDE that renders python with braces
01:48:05renesacwell, there is the issue of {} having another meaning, like nimrod
01:48:05filwitVarrioiunt: i'be been thinking about deleting it entirely
01:49:30filwitrenesac: yes it's true that, in terms of {} effecting adoption, it might still be a good idea to add to the language.. but somehow i doubt it since this is ALL just future speculation anyways
01:49:46renesacit ends up being a non-issue once the person has to use a language
01:49:48filwitrenesac: might as well spend time writing the IDE rather than adding changing the language
01:51:01renesacand yeah, you might make Araq's syntax-agnostic IDE dream true
01:51:02filwitrenesac: well my idea wasn't even initially about {} braces.. i just realized that if the code worked like that it would be very easy to market to C#/Java/JS/C++ folks because it looks like a great blend of elements and is consistent that way
01:52:02VarriountNimrod will never be palatable to Java people. It's not constrained enough nor OO enough.
01:52:19EXetoCyeah can't discriminate against narrow-minded people :-)
01:52:35renesacyeah, and it don't have semi-colons at the end of every line
01:52:35filwitVarriount: that's not true once we have OOP macros
01:53:03renesacwell, I'm going to write that FAQ entry latter, please remind me
01:53:17filwitVarriount: which is part of the main drive to these things.. write now i'm making my own OOP macros.. a lot of my code looks like this: "part Foo: var x: int; ..."
01:53:55filwitVarriount: see, the body follows the ':' symbol, unlike procs
01:54:25filwitVarriount: and the "body" of types is also different, but in an entirely different way
01:54:47renesac'part' is supposed to produce a proc, or is opening a new block?
01:55:16renesaclike a macro or block statement, that also uses ':' , so it is consistent?
01:55:26*r0b2 joined #nimrod
01:55:42filwitit's produces a type, and edits the incoming procs (adds a 'this' param, handles special pragmas, etc).. it also injects code based on an editor-generated json file ;)
01:55:56renesachum, right
01:56:40filwit'part' stands for 'application part' because most of "what" a part actually is is defined in the editor
01:58:02filwitthis is much of the reason all this is considered non-important to me actually.. see, I really like C#/Java OOP idioms, at least in defining things
01:58:04Varriountfilwit: Is this also related to your game engine?
01:58:43renesacseems good (I already saw your prototype image), but I'm afraid of your sense of style
01:58:47renesac^^'
01:58:47filwitVarriount: yes
01:59:38Varriountrenesac: It occurs to me that a lot of objections programmers make against trying new languages are very similar to the objections that 6 year olds make against trying new food.
02:00:16filwitVarriount: only because there's a lot of time it takes to switch languages
02:00:34filwitVarriount: which removes some of the wit from your jest, good sir
02:01:16renesacwell, one of the reasons I decided to try nimrod over rust was the python like syntax
02:01:45renesacand because it seemed a little more stable
02:01:55filwitrenesac: yes, and much like your attraction to style, others are attracted to C-like style and OOP. Now lets compare markets...
02:01:55Varriountfilwit: But it does not remove the fact that programmers will still completely reject things out of hand.
02:02:10Varriountfilwit: Also http://www.marco.org/2012/06/29/php-addiction
02:02:29filwitrenesac: the point is, doing things for demonstrable benefit, even if it's only nit-picking, is the _direction_ we should take
02:03:15filwitVarriount: this is why it's important to have attractive features to "the most" people if your goal is to gain in popularity
02:03:22renesacI don't really think style is the main thing holding back nimrod
02:03:39filwitrenesac: oh, deer-god, neither do I
02:03:44filwitdear** god
02:03:53filwitnot.. a deer god.. you know what i mean..
02:03:53renesacI also programmed in D for a time, and still program in C, even if I don't like this syntax
02:03:58renesaclol
02:04:27renesacand people jumped in python, ruby, etc, even w/o the braces
02:05:20filwiti don't really mind syntax oddities that much, but when things are inconsistent, it makes it harder to _learn_ and that's what I care about (because a) i need scripts easy-to-learn-as-possible, and b) adoption potentially means funding)
02:05:51renesacnimrod syntax is different from it's main contenders (D, rust, c++11, etc)
02:06:03renesacyeah, I agree about not liking inconsistencies
02:07:24renesacand wanting a simple and small language, that is still succinct and powerful, but that is a though balance
02:10:51fowlfilwit, hows your game engine thing coming
02:10:56DemosI found nimrod quite easy to get into, I dont know it as well as I know c++ but still. And I had no experience with anything that had a non-c-ish syntax
02:11:18filwiti deleted my forum post, but i posted a git of it as a backup: https://gist.github.com/PhilipWitte/9317301
02:11:31filwitin case anyone still wants to leave a comment, do so there
02:12:25filwitfowl: it's coming along, i still have some major piece to finish. I want to release code when it can rendering imported models (at least) from Blender and the editor can-drop things onto a Stage
02:13:34filwitfowl: i'm still working on the Blender exported and much of the rendering pipeline, plus i would also like it to animate from Blender, and I haven't even started on that yet (though it shouldn't take more than a couple of solid moths).
02:14:35filwitfowl: for the last little while i've been setting up how the editor talks to the scripts macro (including trying to fix bugs in my way), and now things are going pretty smoothly there
02:15:43filwitfowl: i'm thinking at first I may try and make a GUI system or Art program as a way to build-up on of the core features (since the GUI will be built just like game-object prefabs)
02:15:45fowlwhat do you use for importing assets
02:15:54filwitjson
02:15:56filwitatm
02:16:02filwitwill be binary eventually
02:16:02fowli mean importing models
02:16:10filwitmy own file format
02:16:17filwitstill under dev
02:16:23fowlwhy your own
02:16:27filwitit's just a python blender script
02:16:39filwitcause the other's have bugs and don't support everything
02:16:41fowluse assimp it can handle most formets
02:17:43filwitFBX isn't supported perfectly on BLender due to licensing issues (they write their own), though i hear this is getting better. Collada doesn't support some basic things either, so just to be safe I'm making my own so i can grab any data i need.
02:17:54filwitfowl: assimp?
02:17:58filwitlet me look into it
02:19:12filwitLast time i checked, Collada blender exports didn't support multiple UV laters, and FBX-SDK is iffy with open-source software
02:19:24filwitbut i only really heard that about FBX and didn't look into it
02:19:31*xenagi joined #nimrod
02:19:35filwitstill, writing and model exporter really isn't hard
02:19:57DemosI would not use Collada, I have heard horror stories
02:20:11filwitUV layers**
02:20:36fowlfilwit, http://assimp.sourceforge.net/main_features_formats.html
02:21:10filwitOh AC3D, how i miss you..
02:21:42filwitfowl: so does assimp convert .blend files to .dae files correctly?
02:22:10filwitfowl: cause it's possible i could just use openCollada, but I don't really trust that based on past experience
02:22:12fowli dont know
02:22:40fowlits well-tested though, been around forever, and i have a wrapper for it :p
02:23:05filwitfowl: okay i'll look into it more then
02:29:55filwitfowl: this looks promissing.. dunno how i've never heard of this before
02:30:03filwitpromising*
02:31:12filwitfowl: looks like it support opening up .blend files directly and reading their bone-data, and supports multiple UVs and stuff.. nice. thanks for the tip. this could save me some time
02:31:33filwitfowl: especially if you already have a wrapper for it :D
02:31:37fowlfor sure
02:32:22filwithow completely would you say your wrapper is?
02:32:52filwit(i'm about to try it, just asking
02:34:23fowli thought it was complete, looking at it now it only has 5 functions.. i'll check it again
02:34:37fowli have an example usage in fowltek/musings/nim3d
02:34:43filwitk
02:35:37Varriountfilwit: I do agree that colons for type blocks and other block-like constructs should be acceptable (possibly optional)
02:39:10*amitp joined #nimrod
02:40:05Varriountfilwit: How do you plan for your engine to cover 2d stuff?
02:40:14filwitVarriount: i think you're mostly right about programmers not wanting to learn new languages, but this is exactly why i think these inconsistencies are important for adoption. The easier things for the most people to learn, but less friction your going to have in building a fanbase
02:40:16renesacVarriount, why?
02:40:21fowlVarriount, 2d is peasant dimension
02:40:54Varriountrenesac: fits in with other block statements (block, if, when, etc)
02:41:11renesacI already explained that things that have colons when introducing blocks, also have colons when typed in a single line
02:41:12filwitVarriount: with 2D transform constructs rendering in an orthographic camera
02:41:20renesactype, var, etc, don't follow this rule
02:41:59fowlwe need a lispy syntax anyways
02:42:25fowl(let (s "hello")) (echo s)
02:42:26renesacof course, the ':' is a bit redundant when you have blocks defined by identation after them
02:42:28filwitrenesac: so possibly the best solution is to allow all ':' be optional
02:42:35VarriountHere's a crazy idea that might make for a neat macro - use type declaration syntax to create proc types
02:42:56renesacI'm not sure if it is the best, as a bit of redundancy sometimes help
02:43:10renesacthat is why python kept the ':' after 'if'
02:43:12renesacand etc
02:43:21filwitVarriount: that's kinda my attempt with the unify : thing..
02:43:25renesacthere is a guido blog post about that
02:44:05filwitrenesac: i personally think my above code (type T object: BODY) is the best so far
02:45:26filwitrenesac: but here you have to enforce the use of ':', mainly because of procs
02:46:45Varriounthttps://gist.github.com/Varriount/9317670
02:46:46renesacyou remove the '=' and put a ':'?
02:47:22filwitVarriount: what's even the point of the 'type' if everything's gunna be under it accept global vars :P
02:48:11filwitrenesac: it's exactly like my earlier proposed solution only it removes the '=' alltogether (was brought up by Araq)
02:48:19Varriountfilwit: I dunno. But it's not like that syntax is all that different from the alternative
02:49:03filwitoh wait, dur guys.. this is way the best syntax.. you don't even need {.pragma.} brackets anymore
02:49:07filwitjust...
02:49:11filwittype Foo
02:49:14filwit final
02:49:17filwit object:
02:49:21filwit a, b: int
02:49:32filwitor..
02:49:36renesactoo many lines and indentation
02:49:39filwittype Foo final object: ..
02:49:57filwitrenesac: all the returns are optional
02:50:14filwitrenesac: just goes till it hits the _required_ :
02:50:15renesacthere you also added a block w/o :
02:50:32renesacafter 'Foo'
02:50:52Varriountfilwit: Updated the gist.
02:51:18VarriountMaybe we should just have a community Gist to put random syntactical musings on.
02:51:23filwitrenesac: not a block.. just all whitespace is ignored before the : and only symbols are considered
02:51:38filwitVarriount, on sec
02:51:45renesacblocks w/o ':' are already allowed when it don't cause ambiguity...
02:52:03renesacand that is what you are trying to remove with that syntax..
02:52:21renesac*when it don't causes ambiguity in one line
02:52:38Varriount*doesn't cause ambiguity
02:52:44Varriount:3
02:52:48*ddl_smurf quit (Quit: ddl_smurf)
02:52:50renesac^^"
02:53:27renesacI often forget to use " doesn't " , sorry
02:53:46Varriountrenesac: I'm just nitpickin' for fun
02:53:57filwitrenesac: no i'm trying to make thing consistent and simpler ultimately. If forcing the : mean we can remove the {. .} syntax altogether, i thinks it's a valid exchange in the name of consistency, especially when it also unifies the type/proc/if/else/custom-macro/ets
02:55:05*amitp left #nimrod (#nimrod)
02:55:18Varriountfilwit: One thing you need to keep in mind is how much stress the compiler and it's associated parts would have to pick up, handling these syntactic changes.
02:56:05filwitVarriount: i was never considering doing this in the short term
02:56:40filwitVarriount: the syntax works as-is, and there's more important things to fix for adoption than syntax.
02:56:56filwitVarriount: i'm just trying to influence the future mate :)
02:57:04Skrylardoes anyone happen to have an opinion on TDM-GCC or MinGW
02:57:09Varriountfilwit: I know.
02:57:20VarriountSkrylar: Aren't they the same?
02:57:23renesac'type Foo final, noinit ref object of something:' is difficult to parse visually, IMHO
02:57:26renesacw/o separators
02:57:26filwitSkrylar: what about them?
02:57:35SkrylarVarriount: TDM-GCC used to actually support win64 where mingw didn't
02:58:02VarriountSkrylar: http://mingw-w64.sourceforge.net/
02:58:04renesacand araq don't like this go style type declarations
02:58:53Varriountrenesac: I can't say I blame Araq, Go type declarations make my eyes water. I'm sure I'd get used to it if I used Go often however...
02:58:59filwitrenesac: not when there's color coding, which is easy to setup to distinguish when there's consistent rules
02:59:18fowllol
02:59:40renesacand pragmas also use ':'
02:59:47filwitrenesac: you can highlight the first word after 'proc' as bright red (like github) and then each word until : like and attribute
03:00:03fowlunsigned int x = 0; x -= 1; // x is now 4294967295
03:00:04fowlc is silly
03:00:29filwitinteger math is sill
03:00:31filwitsilly
03:00:39renesacfowl, it's how your hardware works
03:00:57Varriountfilwit: If there is one thing I think detracts from nimrod, it's the unsigned int stuff.
03:00:58filwitfowl: nevermind i thought you where saying something else
03:01:40filwitVarriount: there's good argument for that though, so that should stay
03:02:00VarriountI know that Araq doesn't like it (and personally, I don't see the need for it unless interfacing with C stuff) but I've seen many people stumble over it.
03:02:12Skrylaryay integer math
03:02:17Varriountfilwit: I'm not saying it should be removed, quite the opposite.
03:02:20Skrylari was learning how to do fixed-precision math earlier this week
03:03:27Skrylarfilwit: i have not actually seen very many good arguments for why unsigned is bad; when i asked earlier, i was given references to how C++ handled it poorly but not how unsigned is the devil
03:04:00SkrylarI think Araq's mentioning subtraction with length values was one of the only concrete reasons, because blah.len()-5 could cause integer wrapping... but using a signed type doesn't actually eliminate the threat of wrapping, it just delays it to a further edge case
03:04:33fowlah the unsigned stuff happens in nimrod too
03:04:43renesacwell, it is said to be used unnecessarily everywhere when people want positive stuff
03:04:55VarriountSkrylar: Mainly because it's used by many for the sake of representing positive/natural numbers, which causes people to miss the fact that it wraps
03:05:11filwitSkrylar: i've heard it can have a negative impact on performance if people are constantly casting from uint->int, but i'm not entirely sure though. Probably shouldn't say 'demostrable' without knowing myself.. but araq always seemed to make good arguments about it. Just can't remember them.
03:05:13SkrylarVarriount: that just sounds like an education problem to me :/
03:05:32fowlSkrylar, nimrod's `..` iterator guards against that though, iterating from 0 .. -1 will not run
03:06:01Skrylarcasting between floats and ints is bad for performance too, but you don't see people banning floats
03:06:08renesacSkrylar, I'm not sure if there exists such an edge case, as MAX_INT < abs(MIN_INT)
03:06:17*almo140 joined #nimrod
03:06:19renesacso a single subtraction will still be negative
03:06:41Skrylarwhat does a 'negative length' actually mean?
03:06:52renesacan error
03:06:52Skrylari usually tended to use unsigned when a negative value makes no actual sense
03:07:17Skrylarespecially if a language has try/catch/raise, then i doubly don't use magic return numbers
03:07:19filwitSkrylar: you don't normally cast from float to int, unless you really have too. but might use uint more? possibly..
03:07:30Demoscompilers are allowed to assume that signed arithmatic does not overflow, not so with unsigned. You usually do not want mod2 arithmatic
03:07:45filwitSkrylar: yes, i have the same habit with unit in other languages
03:07:46renesacSkrylar, that is exactly what Araq is against
03:07:55fowlwell.. if you have the code "for x in 0 .. len(something)-5" and len returned unsigned and it wrapped you would have a bad time, since len returns a signed int the index can go negative and keep the loop from running
03:08:13renesacuint should be used when you are not really doing normal arithmetic with the numbers
03:08:16Skrylarrenesac: using exceptions or magic return codes?
03:08:24renesacno
03:08:30renesac[00:06:52] <Skrylar> i usually tended to use unsigned when a negative value makes no actual sense
03:08:31Demosuint is for when you want bits, not numbers
03:08:32filwitSkrylar: but Nimrod does have uint, I wouldn't even mind having all uint stuff in 'unsigned' module either really
03:08:40fowl^ Demos
03:08:58Skrylari still use it that way, because it makes more sense to me :\
03:09:21renesacwell, nimrod has 'Natural' and 'Positive' types
03:09:34renesacjust int ranges
03:09:36Skrylarat that point you should just rename the type to bits
03:09:37Skrylar:P
03:09:39Demosyou never need the "extra numbers", if the biggest signed type is too small you probably need a Arbitrary-precision lib anyway
03:09:57renesacSkrylar, nimrod has a type called 'byte' as alias to 'uint8'
03:10:05SkrylarDemos: disagree; netcode uses uints, as do hardware interfaces and the like
03:10:17Demoswell that is bytes right?
03:10:37Demosor if you might have like 1s complement numbers or something
03:10:38SkrylarDemos: "nobody needs the extra numbers" is a statement born out of the "i have 12gb ram so what is wasting a few bytes" mentality
03:10:49Skrylarstuff like MIDI channels *do* want the extra numbers
03:10:50filwitbbl folks
03:11:11renesacDemos, the 'extra bit' is very valuable when you have 8 bits per value
03:11:52Demoswell this is an exception, and they exist. But defaulting to a signed type is a good idea
03:12:04renesacand even with 32 bits, it is still a useful difference between 2GB and 4GB w/o doubling the space you are using to store the number
03:12:11Skrylari agree and accept that there are problems from implicit and careless conversion between signed/unsigned, but i don't agree that unsigned is 'evil'
03:12:20Demosand if you know you are storing gazillions of these things than go banannas with uint64s or whatever
03:12:26Skrylarbut as i said a week ago, implicit conversion issues are not unique to uints either
03:12:45Skrylarsee TCL which calls it the "shimmering" problem where strings/ints get typecast back and forth
03:13:22renesaca typecast from int to uint should have no performance impact
03:13:34fowlSkrylar, but tcl is gross and everything is a string
03:13:45renesacit should be only a thing to keep the compiler type system happy and blissfully ignorant
03:14:00Skrylarrenesac: there was a link posted here in the log (i don't have it on hand; just did a reinstall) that went in to detail about how C++'s idea of implicit conversion from uint to int causes hidden issues
03:14:37fowlits in the wiki
03:14:49renesacwell, implicit conversion is bad in many cases
03:14:52Skrylarthough i'm guessing the int/uint problem is similar to the gc/nogc problem; in that there are people who absolutely need real-time code and they will always disagree with GCs
03:15:00renesacbut is safe in a few ones
03:15:36renesacI wanted nimrod to support those few ones
03:15:42renesaclike uint8 to int
03:15:53Skrylaryou can jank it by writing your own converter
03:16:09renesacI may try that
03:16:16Skrylarand as a bonus the converter is scoped, so you can import it selectively without exposing it to external code
03:16:26renesacI tried to fix it in sigmach.nim
03:16:33SkrylarI use this in my UTF code a few times, because a codepoint is a uint32
03:16:55Skrylar(NB: a utf codepoint *is* actually specced as an unsigned 32-bit value; there is no 'negative codepoint' in 6.2)
03:16:58renesacbut then there was ambiguity between a proc(x:int64) and proc(x:uint64) when given a uint8
03:17:38Skrylarall though i use a distinct uint32, which allows me to shield a codepoint from regular math so people don't do stupid things unintentionally
03:18:04Skrylar"a + b" means nothing to a unicode codepoint afterall :)
03:18:06renesacI have to try if using a converter has the same problem
03:18:23renesacSkrylar, yeah, I'm also using a distinct uint32 for my bignum module
03:18:45renesacfor many reasons
03:18:54Skrylari like distinct types as a concept
03:19:07renesacif I get intrinsics working, I may upgrade it to uint64
03:19:08Skrylarthey work especially well when you're dealing with opaque pointers
03:19:22renesacand no change in the code that depends on it
03:19:38Skrylari do however wish that two distinct pointers didn't cause generic code to get expanded twice
03:19:56Skrylare.g. a generic linked list will compile a separate implementation for each distinct pointer even if the C code for both is identical
03:20:04renesachum
03:20:30renesacyeah, this is a problem with the current compiler
03:20:46renesachopefully it will be optimized in a not too far future
03:20:56renesacat least it isn't a inherent language problem
03:21:57renesacand for hashing, rngs, etc you also want unsigned ints
03:22:13renesacand with compression, you are dealing with bytes, not numbers, etc
03:22:13SkrylarI don't think they're going away
03:22:17renesacyeah
03:22:19Skrylarthey're just shoved in a separate module
03:23:12renesacnot just that, but the compiler still has poor support for them
03:23:32renesachttps://github.com/Araq/Nimrod/issues/936
03:24:25Skrylarrenesac: Araq mentioned a solution for problems like that in the IRC a while back
03:24:35renesac(yeah, I know how to work around of all them)
03:24:38Skrylarit had to do with making a converter for the lit(T) type IIRC
03:24:56renesacyeah, I did it in my bigint module
03:25:01Skrylari think mostly, the unsigned module just needs to get polished up
03:25:42Skrylartime to wait for gcc to install \o/
03:25:50renesacand error messages should point begginers to import the unsigned module
03:27:48Skrylarprobably some spooky message that says to only do that if they really need unsigned types
03:32:47*xenagi quit (Quit: Leaving)
03:36:50Varriountrenesac: Intrinsics?
03:38:07VarriountSkrylar: "Warning: Unecessary use of the unsigned module will cause you to be eaten by a grue."
03:41:11DemosVarriount, that "quote" reminds me of http://eigen.pri.ee/shooter/
03:43:33VarriountDemos: Do you think it's sppoky enough?
03:43:42Demosyes
03:46:18VarriountDemos: I hate being assigned a 2 1/2 page paper on the weekend, when it's due on Monday
03:46:45Demosyeah last semester I had programming assignments due on sunday
03:47:01renesacVarriount, I would need 128bit multiplication
03:47:55renesachttps://gist.github.com/PhilipWitte/9316566 <-- this should be useful as a start point
03:47:58renesacfor me
04:05:04*BitPuffi1 quit (Quit: WeeChat 0.4.3)
04:10:37Varriountrenesac: The problem with 128 bit ints is that out of all the compilers I know, only GCC running on a 64 bit platform has them.
04:12:24VarriountOr rather, natively supports them.
04:15:57renesacyeah... I will see that and other issues
04:19:23*shodan45 quit (Quit: Konversation terminated!)
04:40:44*brson joined #nimrod
05:00:51*rob3 joined #nimrod
05:02:42*r0b2 quit (Ping timeout: 252 seconds)
05:02:45VarriountDamn. I got a 70% on my latest Calculus test.
05:03:25Skrylaris that a good or bad 'damn'
05:03:44Skrylar(sidenote: i kind of like how foobar2000 does its layout editing. more programs should work this way.)
05:05:56VarriountSkrylar: A bad one. I studied hard on that test.
05:06:44VarriountAnd what's what's worse is that now I'm going to be haunted by that grade for the rest of the day/night. :/
05:07:25*brson quit (Quit: leaving)
05:15:48SkrylarI studied math earlier and then Anki told me to stop
05:23:20*brson joined #nimrod
05:23:39VarriountSkrylar: Anki?
05:25:11SkrylarVarriount: the flash card program?
05:26:39Skrylarit does this thing where if you go over a limit of cards per day in a subject it tells you to stop, because there's research that shows studying too hard is unhelpful
05:26:51Skrylaryou can bypass it but meh
05:30:21*BitPuffin joined #nimrod
05:44:59fowlVarriount, where are you located
05:49:04Varriountfowl: In the US
05:49:26Varriountfowl: Do you want me to be more specific?
05:54:31Skrylarugh
05:54:51SkrylarI hate when people bug me about helping them set up cash shop crap for web games
05:55:18VarriountCash shop?
05:55:33Skrylar"only 0.99$ for cosmetic things on your avatar!"
05:55:43VarriountOh. Eeew
05:56:21Skrylarthis one guy I know *knows* that I hate cash shops in games, and yet he keeps bothering me about running a server that subsists on selling 1$ cosmetic crap because "oh well people might buy stuff even if they don't stay very long"
05:56:37Varriount"We're programmers, not robots. Amazingly enough, we *do* have standards"
05:56:59SkrylarI'm one of those dinosoars that would rather publish a cheap monthly thing than 'free' to play crap
05:59:51SkrylarI disagree with Joel that SaaS is better; there's usually something you can do to improve a program even when you have everything and the kitchen sink; sometimes that improvement is just moving things to make them more usable or maybe waste less memory
06:00:10VarriountJoel?
06:00:14VarriountSkrylar: Well to be fair, most successful MMORPG's are free to play, and require a monthly subscription for premium play
06:00:17Skrylarthe "joel on software" blog
06:00:34Skrylarex-microsoft guy
06:00:44fowlVarriount, just wondering because its about midnight in the midwest
06:00:46SkrylarVarriount: depends on your definition of 'success'
06:01:08SkrylarI forget who did MapleStory, NXsomething
06:01:13Varriountfowl: Yep. I live in the midwest. I'm burning the midnight oil, getting a stupid essay done.
06:01:26VarriountEr, mideast actually
06:01:37VarriountVA, to be precise.
06:01:42SkrylarIMO 'free to play' is basically newb-lube for bad game designers; can't make a good game? lower the standards!
06:01:44fowlmideast? there is no mideast, only east, midwest and west
06:02:13fowlSkrylar, the best model is everybody can play free but paying gives you VIP status
06:02:30Skrylaryou mean like FunCom sort of does it now?
06:03:16SkrylarI don't mind the FunCom method for anarchy online personally; to a lesser extent I don't mind the way they do DLC/Subs in DCUO, all though in all cases I abhor stupid things like charging real money for respecs
06:03:25VarriountLike RuneScape and Dofus? (The only two online rpg games I've played)
06:03:37SkrylarRunescapes wasn't bad
06:03:52Skrylarthe worst is when you have 'f'2p, subscription, AND still cash shop the VIPs
06:05:31fowlvip status means when you want to join a full server some free-player gets booted
06:05:53Skrylarwell DC Univers Online does this thing where they release new content as DLC you can buy, or if you have a sub you just get to go there
06:06:00fowloh and they get 50% off the cash items
06:06:01fowl:p
06:06:18Skrylarall though they also do that stupid lockbox crap
06:06:27fowlwhats that
06:06:39Skrylaryou know the MANNco crates from valve?
06:06:54VarriountSkrylar, fowl: After Dofus, I realized that RPG games take up too much of my time, time better spent reading and programming.
06:07:00Skrylarits basically a ripoff where you get loot in the form of a cash shop box that says "sorry you don't actually get loot, pay real world money to unlock this and get something from the drop table"
06:07:16Skrylarmore often than not its craploot too
06:07:45SkrylarVarriount: MMOs yeah. I like some offline RPGs still
06:08:11SkrylarMMOs are one of those weird genres where you can innovate nothing and still get game of the year every year o_O
06:08:38Skrylar"and this year, we made 50$ DLC which adds two dungeons and pandas!"
06:09:13SkrylarSadly you can't make a sandbox MMO or else the Something Awful forums and /b/tards come in and ruin it
06:10:15fowlthe pool has aids
06:12:37Skrylarlol habbo hotel
06:12:54Skrylarnaaah that was funny at least :)
06:13:07Skrylarthe first time anyway
06:14:46VarriountSkrylar: I like RPG's that have a good story. Then again, almost the only games I do like are ones that have good stories.
06:15:06VarriountProbably comes of reading too many books.
06:16:28*isenmann joined #nimrod
06:16:47Skrylari always thought rpgs were sad to develop because you can't enjoy them as the developer
06:16:55Skrylaryou already know everything about the story
06:18:41VarriountHm. Well, you could probably enjoy them in the same way an author enjoys people reading a book he/she has written.
06:22:24Skrylartonight will be the first time i actually use nimrod on windows
06:22:30Skrylari had just been using putty to a linux box this whole time
06:22:44Skrylaralso I'm curious
06:23:04SkrylarWhy do the instructions say to checkout csources? Why is that not just a git-submodule
06:23:46Skrylaroh. the instructions now say to use --depth 1. maybe thats why :derp:
06:24:47VarriountSkrylar: Technically, you don't have to use csources, except if running on a previously unbooted platform
06:25:05SkrylarVarriount: technically, i need to prod araq with toothpics
06:25:20Skrylar"unknown operating system: mingw32_nt-6.1"
06:25:45VarriountSkrylar: That's odd, I use Mingw, and it works for me.
06:25:52Varriount(Yes, I'm on windows)
06:32:03SkrylarOh good. Trying out this open source notekeeping thingy and it locked up.
06:32:23SkrylarThe best thing you want out of programs you trust to store copious notes is that they lock up in the first ten minutes of use *nodnods*
06:32:43VarriountSkrylar: What is the software?
06:32:56Skrylarmindraider
06:33:17Skrylari was giving it another try because semantic web software sounds like a cool idea
06:34:09fowlSkrylar, git submodules are difficult to maintain
06:34:10VarriountLooks like more trouble than it's worth for everyday stuff. Might be useful for projects though.
06:34:34SkrylarVarriount: more trouble than its worth period. lol
06:34:55Skrylarapparently i managed to create a corrupt node that locks up the program, and there's no "delete" option
06:35:02*Demos quit (Read error: Connection reset by peer)
06:36:10SkrylarVarriount: personalbrain had a neat idea where its basically a concept map stuffed in a database, so you can click'n'drag to make a new topic and it shows how they are related
06:36:22*almo140 left #nimrod (#nimrod)
06:36:38Skrylarwhich is kind of a neat idea, since you could just click through the web from one thing to the next... but 200$ for a subscription license is "no"
06:38:54VarriountSkrylar: I'll never understand why software licenses are so high (for individual users at least)
06:39:23VarriountI can see 200$ being a reasonable price for say, a business, possibly.
06:39:30SkrylarVarriount: not very many people tend to buy information management tools, and they tend to require a lot of special stuff
06:39:49Skrylarfor instance the outliner i want to make requires a lot of custom code :/
06:39:57Skrylarunless i janked it on to libcef i guess
06:40:30VarriountSkrylar: Heh, I've tried creating a nimrod wrapper for libcef. Don't know if it works though
06:41:00VarriountOne of these days I should have another go at it.
06:44:44Skrylari've lost a bit of steam for GUI stuff as of late; i really just want to start doing work that shows a difference
06:44:54Skrylarwriting infrastructure code for six months gets absurdly tedious
06:45:50VarriountSkrylar: GUI stuff doesn't show a difference?
06:46:00SkrylarVarriount: haven't gotten to do any of it in a while
06:46:16Skrylarthe ncurses stuff I worked on blocked on the gap buffer code, which blocked on the skutf git
06:46:32VarriountSkrylar: SDL2?
06:46:48Skrylaryou still need font layout code and unicode-safe text buffers
06:46:56SkrylarSDL just gives you a place to render on
06:48:22SkrylarIUP or Wx are decent targets for wrapping, though those don't really solve many of my troubles lol
06:48:39VarriountSkrylar: If it makes you feel any better, your skutf stuff will probably help with a nimrod implementaion of diff-match-patch
06:48:56Skrylari need to poke araq about merging that
06:56:59*nequitans_ joined #nimrod
06:57:26nequitans_Hi all, I wrote a 'consider nimrod' blog post: http://geetduggal.wordpress.com/2014/03/03/consider-nimrod/ I'd appreciate if you notice any inaccuracies/corrections
06:58:36*Skrylar puts on glasses
07:00:50SkrylarI'm not sure Julia was really ever intended for low-level coding
07:02:15Skrylari am horrified that you have used string concatenation in a call to shell calls (but you did say it was just a shell script replacement)
07:03:12Skrylarnequitans: might want to be more specific about how the iterators work
07:03:26Skrylar" Nimrod uses a uniform call syntax that implies these two calls are equivalent:"
07:03:44Skrylarwhich then shows the iterators, which have a different syntax (maybe i'm being nitpicky)
07:07:38nequitans_Skrylar, so maybe I shouldn't use iterators as an example of the uniform call syntax?
07:08:51Varriountnequitans_: Spelling error, "after a nearly three weeks"
07:09:36nequitans_Varriount, thankx
07:09:44fowlnequitans, in the TGroup example you do not need to importc each field (unless they have a different name than the nimrod name)
07:10:05nequitans_(I'm making corrections as you give them)
07:10:16Varriountnequitans_: No problem. I'm still looking.
07:10:55fowlnequitans, matrixToGroup(openarray) seems like a weird example for importc
07:11:05nequitans_fowl, thanks -- changed
07:11:55Skrylarnequitans_: i wouldn't use iterators as a demonstration of uniform call syntax because while the code is correct, iterators aren't really the same thing as calls
07:12:03nequitans_fowl, lol, yea, actually i'm finding a maximum density subgraph of a matrix using network flows iteratively,
07:12:06Skrylarthe syntax to invoke them is the same, but they're kind of a fancy inline
07:12:51fowlnequitans, i mean because it has openarray
07:13:03SkrylarVarriount: got it working using the bat file; odd that nimrod doesn't work inside msys though
07:13:25VarriountSkrylar: You mean the msys shell?
07:13:45SkrylarVarriount: yep, i couldn't run the bootstrapped nimrod because it crashed with a 'cant create process' error
07:13:58Skrylarwait
07:14:14Skrylarhow did the mingw installer install msys without actually setting the directories for anything oO
07:14:30VarriountSkrylar: Be sure to post bug reports.
07:14:44SkrylarVarriount: that was stupidity in the msys installer
07:16:24VarriountSkrylar: What I did to install msys with mingw64 was to first install mingw64, install msys in a separate directory, copy msys over to the mingw dir, and then adjust the PATH variable
07:16:35nequitans_fowl, what's the issue with the openarray?
07:16:42Skrylari just installed the 32-bit version, Varriount
07:16:50SkrylarI don't really need 64-bit builds for the time being
07:17:18VarriountSkrylar: Well, if you need help setting up a dual build, I'm available
07:17:27Skrylaralright
07:17:29fowlnequitans, because of the way it expands to (T*, int)
07:17:54Skrylarpet peeve: koch mentions gnu readline
07:18:04Skrylarsomeone ought to add libeditline :)
07:18:09Skrylarthe BSD-equivalent
07:18:13Varriountnequitans: Calls are actually pass by reference or pass by copy (it's determined by the nimrod compiler)
07:18:32fowlnequitans, that can be useful when a c library uses that pattern to pass arrays around, but its not explained in your article (nor should it be) i just think its confusng. i would use printf or something like that as an example
07:18:47VarriountYou force one or the other by using a ref type, a pass by reference pragma, or a pass by copy pragma
07:19:06VarriountAt least, that's what I've been told.
07:19:15nequitans_Varriount, I see -- so how does the compiler determine which one to use then?
07:19:25Varriountnequitans: No idea.
07:19:36nequitans_kk
07:19:44Varriountnequitans: Again, I might be wrong.
07:19:47fowlnequitans, the rule is something like if this type is bigger than 8 bytes pass by reference
07:20:33nequitans_but in my example the integer passed as a var is modified, does that mean it's more than 8 bytes?
07:21:36Varriountnequitans_: "offers the programmer type classes" needs to have a ' - ' after it, or possibly a comma
07:21:45fowlnequitans, by using 'var int' you enforce pass-by-reference
07:21:49nequitans_i think i might get rid of the link to C example
07:21:55nequitans_fowl, I see
07:22:59fowlsince you write about 'traits' so much you should throw in some stuff about typeclasses
07:23:14fowloh nm i see that part now
07:24:06nequitans_fowl, ah, yea, i'm curious as to your thoughts on that -- this relationship to traits has just been brewing in my mind the last few days and I'm not sure I'm quite solid on it, but i def have experienced them causing library design difficulties in a language like scala
07:25:27Varriountnequitans_: You mention Rob Patro showing you nimrod - is there a specific link to that?
07:26:24nequitans_Varriount, he and I just had in person discussions
07:26:40VarriountVarriount: Ah.
07:26:52Varriount*nequitans_
07:27:06VarriountSorry, it's 2:30 in the morning.
07:27:42nequitans_lol
07:27:45nequitans_you're in my time zone :)
07:27:50nequitans_(i'm in pittsburgh)
07:28:58VarriountVirginia.
07:28:58nequitans_fowl, so for the openarray example (i removed it from the current draft of the post), is there a better more idiomatic way to do that link to C?
07:30:10fowlnequitans, actually that is a pretty awesome idea for interfacing with C, i just dont think its a great example
07:32:02nequitans_i see -- yea, i was ambivalent about putting it as an example, but it also took me some time to figure it out through trial and error so i thought i'd post it. but i agree, it's a little confusing and i don't like putting the array[0...1000000] b/c it's more of an idiosyncrasy that would cause confusion
07:32:16fowlin my wrappers i leave the function as (T*, int) but honestly that is cumbersome, this would make passing array/seq to these functions easier than calling them with (array[0].addr, array.len)
07:32:18nequitans_i ended up removing it
07:33:13nequitans_so what do you guys think about my brief comparison with other langs?
07:33:52Varriountnequitans_: Pretty good. Could use more examples (typeclasses) but I'm probably just nitpicking.
07:34:11nequitans_Varriount, noted.
07:34:30VarriountBy examples, I mean, not of just nimrod, but of other langs
07:34:40nequitans_I see
07:35:41fowljesus.. chromium is dominating my memory
07:38:08Varriountfowl: It's a web browser, what do you expect?
07:39:03fowlmaybe it realizes "hey im using all this guys memory and swap maybe i should back off a bit"
07:39:15Varriountfowl: How many tabs do you have open?
07:39:22fowlhundreds :(
07:39:35Varriountfowl: Install the toomanytabs extension.
07:39:51VarriountEither that, or go to a support group for tab abusers
07:40:04Varriount"Tabaholics Anonymous"
07:41:05fowlha
07:41:14nequitans_i bet fowl has a memory map in his brain for how to get to a specific tab instantly. yet the computer can't handle the tabbage!
07:41:25fowli do
07:41:36fowli keep the tabs grouped nicely and all
07:41:54nequitans_i've been using pinned tabs a lot recently
07:42:04VarriountAnyone here actually read how swap memory works? It's quite interesting.
07:42:41VarriountI've read how it's done in Windows, I don't know how linux does it though.
07:42:45fowlVarriount, 6000 years ago god gave us linux, i havent questioned it since
07:43:17Varriountfowl: That's the thing. I've found many books about the internals of windows. Not so many about the internals of linux.
07:44:00fowlbecause you can access the code
07:44:09fowland read it yourself :p
07:44:27Varriountfowl: Shame on you. You know how much effort it takes to both read *and* understand code.
07:46:13fowli opened chromium again, i have three tabs open. there are 40 chromium processes open now with memory usage ranging from 3.7% to 0.8%
07:46:44Varriountfowl: How many extensions do you have installed?
07:48:29fowl5
07:49:03*brson quit (Ping timeout: 244 seconds)
07:50:21Varriountfowl: Maybe they are zombie processes?
07:50:26nequitans_thanks for your input on the post! i made the mods and i'll try to add some more examples as time passes. i'm considering it a 'living' document :-P
07:50:46fowlVarriount, no i checked after i closed it, they were all closed
07:50:47*brson joined #nimrod
07:50:59fowlno prob nequitans
07:52:57Varriountnequitans_: Yeah, it's great.
07:53:35Varriountnequitans_: Don't forget to post it on reddit when you feel that it's ready
07:53:52VarriountOh, an hacker news
07:55:05Varriountfowl: I only have a single chrome process open per tab, and per extension.
07:55:32VarriountWell, plus the 1-3 others that make up the core stuff.
07:55:40fowlyou're using chrome or chromium
07:55:47VarriountOh. Chrome.
07:56:16fowloh i have 2 gigs of updates to install. nice
07:56:28Varriountfowl: Nom nom
07:57:41Varriountfowl: It could be worse, at least it ain't Visual Studio
07:57:58fowltr00
08:01:57nequitans_Varriount, thanks -- will do
08:02:02nequitans_Speaking of chrome
08:02:12nequitans_I've been using this little tiny Chromebook 11 for a while now
08:02:24nequitans_as an 'additional computer'
08:04:20nequitans_aside from better performance (which you can't ask for too much for a $270 comp), I would really like chrome desktop apps to allow me to adjust the font size. e.g I'm using CIRC right now and i'm in this tiny font
08:06:38*zielmicha quit (Quit: Connection closed for inactivity)
08:14:50Varriountnequitans_: So is there anything you feel that Nimrod could improve upon, without drastically altering the language?
08:16:36Varriountnequitans_: Also, I think I read your "pypy vs shedskin vs ..." a while back, it was pretty good.
08:18:11nequitans_Varriount, lol, that was a big what i call 'fungus' -- i was trying to get some really simple code for a class project to run fast in python and then a sleepless night of tests :-P
08:18:34nequitans_re: Nimrod improvements
08:19:02nequitans_it's not a really big issue
08:19:04nequitans_but
08:19:42nequitans_if the pass by ref/pass by val issue could be made more clear. i.e. it helps me to know as programmer that when i'm passing in a matrix class it's just really a pointer to it rather than a copy
08:20:24nequitans_btw
08:20:44VarriountYeah. That's a documentation issue that should really be made more clear. You don't want to pass a huge struct and end up doubling memory.
08:20:57fowlthere is a pragma for that
08:21:18fowlVarriount, why do people think this happens?
08:21:37Varriountfowl: Because C/C++
08:21:53nequitans_i also noticed that i had to import modules at the root level that i never actually included, but included in some subordinate module and now it oddly requires to be included in the root module
08:21:56fowlnimrod has its own semantics
08:22:00Varriountfowl: I think he's talking about the behavior when no pragma/var/ref is forcibly used.
08:22:11nequitans_(maybe this is part of the design, but it took be by surprise)
08:22:26fowlnequitans, ah that is fixed now
08:22:52nequitans_fowl, cheers
08:22:58fowlnequitans, that is because when a generic is instantiated your module might not have access to the module that generic needs, this is what the export stmt is for
08:23:56fowlso if you have this problem still, complain to the librarymaster to fix it
08:25:34fowlVarriount, since parameters are const by default, everything can be pass-by-ref and still be secure that the parameter wont be modified
08:26:16nequitans_fowl, ic
08:26:17*brson quit (Quit: leaving)
08:26:34Varriountfowl: That fact should still be made clear somewhere
08:27:16VarriountAlso, if that fact is so, why do we have modules with ref versions of every type?
08:27:39VarriountSee: The original asyncio module
08:27:55fowlVarriount, do you know what ref is?
08:28:05fowlits a managed pointer (garbage collected)
08:28:08Varriountfowl: It's a traced reference.
08:28:14fowl"ref" is nothing to do with pass by reference
08:29:19Varriountfowl: I thought that a ref was analogous to a pointer in other languages.
08:30:47fowli guess so
08:30:50fowlthis is #nimrod though
08:30:58fowlthis. is. #nimrod!
08:31:04*fowl kicks Varriount into the pit
08:31:18fowlgood night
08:32:02VarriountGood night. When can I get out of the pit?
08:34:45Varriountnequitans_: "When C came about, preprocessors were a good idea. Then again, so was paper tape readers and pet rocks. "
08:37:03nequitans_Varriount, lol, i remember this from some internets post a while back, tho i forgot what it was about
08:37:17nequitans_something with Jav
08:37:18nequitans_*a
08:37:26Varriountnequitans: "Why I am not a Java Programmer"
08:37:50VarriountI've read the article before, but it always manages to put a smile on my face.
08:38:16nequitans_lol, yea, that's it
08:38:37VarriountI know its arguments aren't 100% substantial, but... it's such fun to read.
08:39:43VarriountI've used Java before and still do, but it's has always felt entirely too restrictive, like a nuerotic, OCD businessman
08:39:54Varriount*it has
08:42:02nequitans_Yea, I think that in that respect Scala esp. brought a fresher air to the JVM world. When I first started coding in Scala for a while, I wondered: will Java catch up to this or will a language like Scala just take over?
08:43:27Varriountnequitans_: I haven't tried Scala yet. I've had the manual/guide on my reading list for a while.
08:44:08VarriountI'd like to think that I'm more open to learning new programming languages than most programmers. If nothing else, I read the manuals/tutorials
08:44:27nequitans_It's a pretty solid language, but I've def run into efficiency issues. In some cases, it ran on par if not *faster* than my C code. But in other cases (esp with many threads on multicore machines, it was prohibitively slow)
08:45:08Varriountnequitans_: Such is the problem with JIT compiling, especially when the one for the JVM was designed for Java specifically.
08:46:30Varriountnequitans_: I've always wondered why you can't JIT compile (or rather, optimize) assembly code, eg, C/C++/Any other statically compiled language
08:47:30VarriountIs it because assembly is just too low-level to be optimized at run-time?
08:47:56nequitans_Varriount, yea, I think it's a good quality of a computer scientist to be able to pick up on a language's strengths and weaknesses and be able to use it effectively. I used to be on the DSL train: a good computer programmer/scientist adapts/develops DSLs for all sorts of useful tasks and can live in that world. Now I think that a single language could possibly allow the user to express the DSLs they want efficiently -- that's w
08:48:12nequitans_re: JIT assembly, that's an interesting idea
08:56:18Varriountnequitans_: Ah, here's a paper that explores the subject. I don't know if it's the same paper that I once saw, but it's related -> http://groups.csail.mit.edu/commit/papers/03/RIO-adaptive-CGO03.pdf
09:00:39nequitans_Varriount, interesting
09:12:49*nequitans_ quit (Ping timeout: 240 seconds)
09:20:00profmakxsrsly
09:20:03profmakxdo they write those in word?
09:20:21Varriountprofmakx: What, the papers?
09:20:32profmakxyeh
09:20:45VarriountWho knows.
09:20:52*profmakx was forced to hand in a proposal in word. cost me more than a day getting it into decent shape
09:21:28Varriountprofmakx, nequitans_: Any idea what "Notes potential avenues for additional research analysis" means in the context of an essay which analyzes another essay?
09:22:59profmakxVarriount it means "blah"
09:23:13profmakxvacuous phrase. people in research love those for some reason
09:24:26Varriountprofmakx: Tell that to my composition professor.
09:24:54profmakxVarriount what is "composition"?
09:25:43profmakxVarriount it probably means that it mentions research directions somewhere. I am surprised that people still get away with these overly vague formulations
09:25:45Varriountprofmakx: Language, english, writing.
09:26:18Varriountprofmakx: The class is intended to teach effective skills for essay analysis and writing.
09:28:21Varriountprofmakx: Here's the rubric for this particular essay, if you're interested -> https://docs.google.com/document/d/1SyvhE4kGKfh9Eo-F_anyPEwVuRVpbBN-NvMeyoQnQck/edit?usp=sharing
09:28:44VarriountI've highlighted the things in green that I'm sure my essay has done properly.
09:31:07profmakxI probably suck at writing :P
09:31:38Varriountprofmakx: Of the few skills I have, writing and reading are my best.
09:31:49VarriountAlso, Google says that you're an anonymous giraffe.
09:33:06profmakxI have no idea what that even is
09:33:12profmakxoh
09:33:27profmakxyou mean on the doc?
09:34:32*CarpNet joined #nimrod
09:36:01Varriountprofmakx: Yes
09:36:07VarriountHi cark
09:36:12VarriountEr, CarpNet
09:37:15CarpNethello
09:42:56Skrylarbonus
09:43:07Skrylarutf tests didn't mysteriously fail just because i built them on windows
09:49:03VarriountSkrylar: :O
09:49:38VarriountHm..
09:49:51*Varriount is now known as MagiKarpNet
09:49:57MagiKarpNet:D
09:50:30*MagiKarpNet is now known as Varriount
10:01:33*io2 joined #nimrod
10:01:40Varriountoo, this is interesting -> https://github.com/xnko/libapi
10:07:58Skrylarheh. coroutines are pretty neat
10:08:22profmakxSkrylar do you think?
10:08:42Skrylarprofmakx: i was acknowledging Varriount's link :)
10:09:07SkrylarI'm not sure why GCs are considered "must have next gen" but first class coroutines which are as old as assembly still get completely ignored
10:09:29Skrylareven though there have been benchmarks showing they're way better than how most people derp about IO
10:11:01*ponce__ left #nimrod (#nimrod)
10:12:05VarriountSkrylar: The only problem is that most implementations I've seen have to guess about how much memory to allocate for the stack
10:13:03VarriountI was wondering, when nimrod gets coroutines, if it could at least somewhat accurately guess the stack size (you know, being a compiler and all)
10:14:00*odc joined #nimrod
10:14:34*odc left #nimrod (#nimrod)
10:20:47SkrylarVarriount: probably, since it knows how much space the function needs for scratch
10:20:58Skrylarits kind of like how GCs work better when the compiler has some idea where to put the safe points, lol
10:21:27VarriountSafe points?
10:21:38Skrylarall though i wonder if thats the kind of thing macros should be able to do; seems like they should be able to read the AST for the function and check that kind of detail
10:21:45Skrylarthough i don't think macros get access to resolved type details :/
10:22:11*faassen joined #nimrod
10:22:25Skrylar(before i went to rust and then to nimrod, i was working on a compiler that was basically just the Io scripting language with a code emitter out the back; so i'm a big fan of the microkernel+macros-for-everything model)
10:22:39VarriountHi faassen
10:22:52VarriountSkrylar: Have you seen the compiler internals?
10:22:59Skrylarnot for nimrod
10:23:10VarriountSkrylar: Most of the compiler is a macro, essentially
10:23:16Skrylari live in enough of a small hell just fixing up this unicrap
10:23:39VarriountSkrylar: The methods you would use for a macro are pretty much the same methods the compiler would use.
10:23:55VarriountThe compiler just has access to a lot more information
10:24:08Skrylaryeah that was pretty much the model i was going for
10:24:20Skrylarwell, i had some smartass things to go along with it that i never got to
10:24:53VarriountSkrylar: Although, I doubt anyone will ever create a macro as obtuse as the lambda lifting compiler code.
10:25:09Skrylari was going to have it so you could access a meta object in the object tree, which would let you put lisp-style declaims on things like methods so the slow-interpreter would ignore them but a JIT would be able to use them effectively
10:25:35Skrylarthings like "don't use full message passing mechanics on this function, it doesn't need it"
10:26:04Skrylar(Io can do crazy things like look at who just called a method and then modify the caller object even though you didn't ask for that)
10:28:01VarriountSkrylar: Yeah, I've heard interesting stories about Io and the other smalltalk-like languages
10:28:41Skrylari love that language
10:28:53SkrylarIo is basically Lisp with the parenthesis shoved over one token
10:29:42Skrylarthey also have things like a binary message is just anything from this set of characters, so you can use +===---===+ as an operator if you feel pathological
10:29:45SkrylarIIRC
10:31:08VarriountSkrylar: What time zone are you in?
10:31:13SkrylarCST
10:32:15VarriountSo.. I'm not the only one up in the wee hours
10:32:32Skrylarnerp
10:36:10Skrylari must be a weirdo because i hate presets
10:36:21VarriountPresets to what?
10:36:26Skrylarpresets in general
10:36:40Skrylarthey felt like adding a bunch of preset views to MLO which I guess is good for newbies
10:36:50VarriountSkrylar: MLO?
10:36:53Skrylarbut i almost never actually use the "tasks completed by project" preset
10:37:05SkrylarVarriount: http://mylifeorganized.net/
10:37:22Skrylarin music stuff people actually SELL presets too
10:38:07VarriountSkrylar: I think the aversion to presets is somewhat stereotypical of programmers - I mean, look at linux
10:38:25SkrylarI like the concept, I just don't tend to use them
10:38:51Skrylarolder versions of mlo didn't have any and i think a lot of people were scared of the filter screen
10:39:02Skrylaryou can ask it to do all sorts of arbitrary filing for you
10:39:16VarriountSkrylar: My way of organizing things is to use the sticky notes program built into windows, google keep, and google calender
10:40:05Skrylari seem to end up with crippling amounts of TODOs when i start tracking them with anything
10:40:34VarriountSkrylar: Same
10:40:40Skrylarwhat i like with MLO and on the mac i used omnifocus for it
10:40:56Skrylaryou can put everything in the outline view and have this scary huge list
10:41:05Skrylarthen go to a filter view that only shows "things that are open RIGHT NOW"
10:41:32Skrylarso if i set something to depend on araq being awake, and i tell it when that usually is, it won't show those
10:41:43VarriountHah.
10:42:07VarriountYou have Araq's sleep schedule?
10:42:12Skrylarno
10:42:23Skrylari thought about putting that in if i end up doing too much stdlib work though
10:44:38*ddl_smurf joined #nimrod
10:45:31VarriountWhenever I see ddl_smurf's username, I think "Dance-Dance Revolution Smurk" (yes, I know it's an L, not an R)
10:45:38Varriount*Smurf
10:48:04ddl_smurf(sorry)
10:48:18Varriountddl_smurf: Sorry for what?
10:49:04Skrylarbleh. string slicing is a module thats going to have to be written isn't it
10:49:22VarriountSkrylar: You should already be able to slice strings
10:49:45ddl_smurfsorry you think of ddr
10:50:16SkrylarVarriount: well i wrote this painful code to do line wrapping but instead of returning copies of strings it just gave the start/end indices
10:51:37VarriountSkrylar: And..?
10:52:41Skrylari didn't see a lot of stdlib code that dealt with indices
10:52:51Skrylarmost of the string routines i saw returned copies of tiny strings
10:55:19VarriountSkrylar: True.. But modifying those procedures to return indices is probably not that hard.
11:01:08Skrylari have noticed in my local nimroding that i have started getting too many 'skblah' folders
11:01:30Skrylari should probably just rename it all under one library named 'skylights' instead of trying to keep this crap separate
11:06:17VarriountSkrylar: Does it all concern a single thing?
11:12:08SkrylarVarriount: no, its just various things i need
11:12:59Skrylarbut a gap buffer deals with text, so i put it in skText; but text needs unicode, so it references skutf, but then if a gap buffer wants to use bitfields for efficiency i have to put it somewhere else
11:13:18Skrylarwhich means i get a dozen small modules and end up having to use a meta-folder with git submodules to do anything
11:13:31VarriountSkrylar: I could have sworn that nimrod had a bitfields module
11:13:39Skrylarthat was an example
11:13:53Skrylari was entertaining the idea of using an integer where the high bit was used as a dirty flag
11:14:48Skrylarsince a gap position of -X makes no sense, it would store the value of a signed int and use the extra bit to see if the value changed; so it would only lazily move the gap
11:15:11Skrylarwhich would entail making a module to avoid spaghetti code, which has to go somewhere
11:27:57VarriountAraq: I modified the testament/babel-integration pull request so that the babel package tests aren't run when 'all' is specified.
11:53:40*BitPuffin quit (Ping timeout: 252 seconds)
12:15:48SkrylarVarriount: http://i.imgur.com/7B41peV.jpg sometimes i think i don't use my time very wisely :/
12:18:21VarriountSkrylar: *shrug* I like planning things. What software is that?
12:19:03SkrylaryEd
12:19:46SkrylarI got interested in it again because someone was asking about articy:draft alternatives on reddit and someone linked to this article where an indie made an RPG using yEd and some custom XML parsing
12:20:05Skrylarbasically made his own tool that ate yEd output and turned it in to dialog script
12:20:40VarriountInteresting.
12:20:42Skrylarall though it also has a pretty nice automatic layout button for flowcharts which is pretty sweet
12:21:05Skrylaryay suspiciously useful freeware. lol
12:30:45Skrylari wonder why gvim on windows installs with these assinine default settings
12:31:03Skrylar"your backspace key is going to have this really retarded restriction where it doesn't work half the time :D"
12:38:55*BitPuffin joined #nimrod
12:40:10VarriountSkrylar: I don't suppose there's a "beginners guide to vim"?
12:40:31VarriountOr do I just have to plunge in head first, and hope I don't drown?
12:42:53EXetoCI never read any guides, but I did start off with vimtutor the second time around, and that helped
12:46:28EXetoChttp://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html
12:51:02Skrylari don't remember how i learned vim, all though i barely know much of it
12:51:21Skrylarthere's also vimcasts which is good
13:00:57Skrylaras boring as making flowcharts and mindmaps can get, it sure does make the actual coding process really simple
13:05:30BitPuffinping Araq
13:05:47Araqpng
13:06:06BitPuffinAraq: why are we adding an alias for python programmers
13:06:39Araqer ... what?
13:07:01BitPuffinAraq: Yeah of pow
13:07:05BitPuffinAraq: saw that on githerb
13:07:16Skrylarlol githerb
13:07:58Araqwell I dunno about python but nimrod had ^ for pointer deref and got x[] instead so ^ becomes available
13:08:25BitPuffinAraq: well then why are we not going with ^
13:08:37Araqwell but we are
13:08:41BitPuffinI am referring to https://github.com/Araq/Nimrod/pull/878
13:08:56BitPuffinAraq: okay well then why alias it. Considering it is what you were bashing linagl for :P
13:09:31BitPuffingranted it's not merged
13:09:38Araqyes I got your point
13:09:39BitPuffinbut I don't see any discouraging
13:09:52AraqI didn't really look at this PR tbh ...
13:10:14AraqI just assumed it implements ^ and perhaps deprecates 'pow'
13:10:29BitPuffinwell I didn't llook at the code lol
13:10:36BitPuffinbut it doesn't sound like it by the title
13:10:49BitPuffinoh
13:10:50BitPuffinlol
13:10:52BitPuffinit adds **
13:10:57BitPuffinyou knwo how you do x ** y
13:11:00BitPuffinin python for pow
13:11:05Araqalso aliases are fine now when they are not introduced by BitPuffin ...
13:11:29BitPuffinAraq: lol, fuck off :D
13:11:31Araqbecause you added 'toString' and that is a different alias
13:11:45AraqtoString is from Java hell
13:11:51BitPuffinwell no you bashed a bunch of the other aliases too
13:11:53Araq;-)
13:12:16BitPuffinand I don't see why we'd need an alias for python nerbs, since we can have ^
13:12:18BitPuffinwhich makes sense
13:12:30BitPuffinthink ruby might use ** too iirc
13:12:44Araqwell more seriously, we should decide about an "alias policy"
13:13:15*Varriount throws an idea into the pot
13:13:16BitPuffinagreed
13:13:34AraqI don't mind to introduce -d:pythonlike and -d:rubylike to lessen the pain for scripters
13:13:39VarriountWhy not have a single file per language which implements aliases for that language?
13:13:48AraqVarriount: or that, yes
13:14:00BitPuffinwhat Varriount said sounds a lot better
13:14:12BitPuffinbecause having a bunch of conditional compilation is gonna bloat up the code imo
13:15:41VarriountThe downside to the alias file solution is that it can't override nimrod's own stuff.
13:16:02BitPuffinVarriount: hmm, you mean stuff that is in system right?
13:16:15VarriountBitPuffin: As well as the rest of the stdlib
13:16:34BitPuffinfor seriousness I don't really think that a python/rubyfier should be in the main repo
13:16:40BitPuffinbetter as a babel pkg
13:16:46VarriountBitPuffin: Personally, alias files should be a seperate pack-
13:16:54VarriountYeah, what you said.
13:16:58BitPuffinsince I don't think we actually want to encourage people writing python in nimrod
13:17:05BitPuffinVarriount: hah! :D
13:19:42VarriountSuch things, like programming styles, should realy be confined to the use of personal scripts and so-on
13:21:46VarriountAraq: Did you get my message about the testament/babel-integration update?
13:22:47AraqVarriount: sure, will merge it later
13:23:10VarriountOk, just wanted to make sure.
13:23:53Araq"- On the VLIW architecture (below HD7700) there is no GOTO instruction. Only Loop, If/Else and exit."
13:24:17VarriountWat
13:24:28VarriountIs that a Graphics card?
13:24:35BitPuffinsounds like AMD
13:24:44BitPuffinor wait
13:24:48BitPuffinmaybe a new intel thing?
13:25:05BitPuffinor old I guess
13:25:08BitPuffinI dunno xD
13:28:39VarriountBitPuffin: http://devgurus.amd.com/thread/167192
13:28:54VarriountThat's where Araq got it from.
13:29:16Araqhey ..
13:29:29Araqbut yes
13:30:34*rndbit quit (Ping timeout: 245 seconds)
13:31:39BitPuffinAraq: you just got scroogled
13:32:28SkrylarAraq: i have to nap now, but later i'll need to poke you about symbol names in the skutf repo on github
13:32:48BitPuffinI'm gonna use nimrod to write a mumble bot eventually hehe
13:32:51Skrylari'll want to make sure everything has acceptable names before shoving it in stdlib
13:32:59*rndbit joined #nimrod
13:33:01AraqSkrylar: excellent
13:33:06filwitfowl: where did you say your assimp example was again?
13:33:25BitPuffinfilwit: probably in fowltek repo?
13:33:35filwitBitPuffin: been looking for it
13:33:38BitPuffinfilwit: are you spanking the imp's ass?
13:33:46SkrylarAraq: https://github.com/Skrylar/skUtf if you want to browse through it in the interim; there's obviously a few parts that are going to get thrown out because they already exist, though the test cases are still handy
13:33:46filwittrying too.. ?
13:33:49filwitlol
13:34:34BitPuffinhttps://github.com/fowlmouth/nimlibs/blob/master/fowltek/assimp.nim
13:34:40BitPuffinda banding
13:34:55filwityeah i know, he said there was an example of it somewhere
13:35:02BitPuffinhttps://github.com/fowlmouth/nimlibs/blob/master/fowltek/musings/nim3d/lib/models.nim
13:35:05BitPuffinimports assimp
13:35:27filwitah, thought i looked through musings, thanks that's probably it
13:36:04BitPuffinand https://github.com/fowlmouth/nimlibs/blob/master/fowltek/musings/nim3d/examples/testmodel.nim
13:38:01*darkf quit (Ping timeout: 265 seconds)
13:39:21BitPuffinAraq: btw did this get fixed? https://github.com/Araq/Nimrod/issues/941
13:39:47AraqBitPuffin: it is still open for a reason
13:40:55VarriountAraq: You mentioned that there were important things that I could do, besides implementing stat()?
13:41:28Araqindeed. bug #941 is creepy
13:43:04AraqBitPuffin: just got an idea of how to hunt down this bug, but it may take a while
13:44:44*ddl_smurf quit (Quit: ddl_smurf)
13:48:54VarriountAraq, BitPuffin: Works for me using a nimrod built using latest devel
13:51:42Araqyes it's macosx specific and hence might be a corruption
13:52:04BitPuffinVarriount: yeah it's a mac thing
13:52:15BitPuffinAraq: oh, what is it?
13:52:40Araqsome node gets recycled too early, but that's just an educated guess
13:52:58Araqthe node then gets re-used and the compiler produces weird stuff
13:53:42Araqwith decent watchpoint support not hard to track down
13:54:14Araqbut nimrod supports watchpoints via software emulation ... and GDB's watchpoints are broken beyond repair
13:57:34VarriountAraq: How are GDB's watchpoints broken?
14:00:47AraqVarriount: sorry, will tell you later
14:03:29*reloc0 quit (Ping timeout: 245 seconds)
14:03:45*reloc0 joined #nimrod
14:04:51*ddl_smurf joined #nimrod
14:09:07AraqBitPuffin: system/gc.nim in 'growObj' there is a call to 'dealloc'. Disable that line, bootstrap again and try to compile your snippet please
14:16:48*nequitans_ joined #nimrod
14:22:46VarriountHi again nequitans_
14:23:07nequitans_hello Varriount!
14:24:15Araq Varriount the tester needs to produce more JSON ... not only the differences between 2 commits
14:24:22Araqif you want, you can work on that
14:29:53VarriountAraq: Can you be a bit more specific?
14:30:13VarriountDo you mean, the differences between multiple commits?
14:30:28VarriountOr the date that the tests were made?
14:30:43Araqcurrently it produces the diff between the latest commit and the commit before that
14:32:41*awestroke joined #nimrod
14:33:22VarriountHi awestroke
14:35:31awestrokeVarriount: hello!
14:43:06AraqVarriount: or you could fix the remaining lambda lifting bugs ... ;-)
14:46:16*zielmicha joined #nimrod
14:52:18*nequitans_ quit (Ping timeout: 240 seconds)
15:27:45BitPuffinAraq: ok will do it later
15:42:01*Varriount|Mobile joined #nimrod
15:44:33*r0b4 joined #nimrod
15:45:59*rob3 quit (Ping timeout: 240 seconds)
16:16:11dom96helooo
16:33:07dom96nequitans: Thank you for that great articles :)
16:33:10dom96*article
16:35:13skyfexnequitans
16:37:36skyfexHuh, this IRC client has a weird bug where if you use paste in the search field it pastes into the message field and focuses it
16:37:50skyfexShould've used irssi i suppose ;)
16:41:42dom96I wish Nimrod would at least be mentioned here: http://blog.fourthbit.com/2014/03/01/the-best-programming-language-or-how-to-stop-worrying-and-love-the-code
16:43:58filwithey dom96
16:44:04dom96hi filwit
16:45:07BitPuffinyoyo dom96
16:45:39*OrionPK joined #nimrod
16:51:03dom96BitPuffin: Still playing tha dotas?
16:51:13dom96Why do I even ask. Of course you are.
16:51:15dom96:P
16:54:01*BitPuffin quit (Ping timeout: 240 seconds)
17:08:12*faassen left #nimrod (#nimrod)
17:10:24*zahary1 quit (Read error: Operation timed out)
17:10:34*zahary1 joined #nimrod
17:23:19*Demos joined #nimrod
17:27:44*Matthias247 joined #nimrod
17:28:28*brson joined #nimrod
17:29:42*xtagon joined #nimrod
17:46:34*DAddYE joined #nimrod
17:47:53*BitPuffin joined #nimrod
17:50:36*zahary1 quit (Ping timeout: 264 seconds)
17:51:23*zahary1 joined #nimrod
18:17:23*carum joined #nimrod
18:26:21*q66 joined #nimrod
18:29:07*meguli joined #nimrod
18:42:22dom96hi meguli
18:43:02fowlfilwit, did you find the example
18:44:58*carum quit (Remote host closed the connection)
18:46:08megulihi everyone
18:46:13megulijust checking the language
18:48:41EXetoChello
18:48:47EXetoCexamine it. embrace it. write awesome code
18:54:59*vendethiel joined #nimrod
19:02:19*meguli quit (Quit: Page closed)
19:37:13nequitansdom96, hello and np. it's a pretty awesome language!
19:48:23dom96Araq: Read it so that we can reddit it. :)
19:48:29*filwit quit (Ping timeout: 269 seconds)
20:02:12*OrionPK quit (Ping timeout: 244 seconds)
20:03:30*brson quit (Quit: leaving)
20:07:04*brson joined #nimrod
20:09:43DemosHow do people feel about code completion coming up while writing comments?
20:10:05dom96That would be annoying.
20:10:21Matthias247Can be helpful when you add examples
20:11:05Matthias247but ideally it would only come up in code sections of comment blocks :)
20:11:56Demosright now it comes up ANYWHERE if you hit '.', and anywhere if you hit ctrl-space. I think turning off '.' in comments is a good idea, I like having access to it
20:12:31DemosI am also having path related problems, I could not get idetools to work if the project file was different from the file I ran my query on
20:19:07*Duck_ joined #nimrod
20:24:16*Duck_ left #nimrod (#nimrod)
20:25:45*Duck_ joined #nimrod
20:26:04*Endy joined #nimrod
20:26:08Araqhi Duck_ welcome
20:26:16Duck_good evening
20:42:11*Varriount-Mobile joined #nimrod
20:42:54Araqhey nequitans I'm reading your article right now :-)
20:43:55*Varriount_ joined #nimrod
20:45:37*Varriount quit (Ping timeout: 240 seconds)
20:46:07*Varriount|Mobile quit (Ping timeout: 244 seconds)
20:47:40*Varriount-Mobile quit (Ping timeout: 244 seconds)
20:48:22Demosthat matrix example not that great... ideally we would use fixed length arrays for a matrix.
20:49:23AraqDemos: that depends
20:49:41Demoswell yeah, if you want a dyanmic matrix you need dynamic memroy
20:49:45Demos*memory
20:50:01AraqI keep arguing that a single matrix type simply doesn't cut it, generic or not
20:50:07Demosand it is quite hard to do fixed length matrices like we want without static[T]
20:50:11Demosreally?
20:50:32Araqa 4x4 matrix is inherently different from a NxN matrix
20:50:44Araqfor like every imaginable algorithm
20:50:55Demosright, you need to specialize
20:51:39Demosthen there are various sorts of sparse matrices
20:51:53*carum joined #nimrod
20:52:18Demosthe definitions of most algorithms are the same for 4x4 matrices as they are for NxN ones
20:52:28Demosassuming that the operations makes sense on any square matrix
20:52:43*carum quit (Remote host closed the connection)
20:58:46Discolodanimrod has something else going for it compared to rust, its taking me over 3 hours to compile it
21:00:13*Duck_ quit (Ping timeout: 245 seconds)
21:00:21Araq"Nimrod also supports multiple dispatch which allows dynamic binding to variables." er ... no
21:00:40Araqit allows dynamic binding of methods
21:03:14Matthias247Discoloda: for compiling rust or nimrod?
21:03:30EXetoCRust ofc :>
21:03:48EXetoCit's an implementation issue, but then again there are no alternatives
21:04:39EXetoCI tried to compile it with 1GB of RAM. It was slow :>
21:05:27Matthias247yeah, rust takes a while. Especially when you have to build llvm. But I think it's about 45min here
21:05:28Discolodacompiling librustc took 2 hours 47 seconds, for stage 0, now its doing it again for stage 1 :/
21:05:40Matthias247and Nimrod is < 5min
21:06:51Matthias247it will build llvm only once, so the further stages will be faster. But 3 hours still sounds slow
21:07:11Matthias247notebook?
21:07:36Discolodaim on a small VPN, 512MB of ram, 2GB of swap file
21:08:15Matthias247ah ok, that are quite limited resources :)
21:08:29Discolodayeah
21:08:57Matthias247I'm glad I bought 16gb ram when it was cheap :)
21:09:07dom96Don't they have nightly builds of the compiler?
21:09:33Matthias247depends on the platform
21:10:02Discolodai wish i bought more ram for my gaming computer when it was cheaper
21:10:57dom96I wish the RAM I bought would work.
21:11:29Matthias247at work we now have a workstation with 128gb - don't know what to do to utilize that :)
21:12:01*Endy quit (Ping timeout: 240 seconds)
21:12:13Discolodamake a ramdisk and play some games with zero load time
21:12:34EXetoCput all the files on it
21:12:46Matthias247guess the GPU is too shitty for gaming :)
21:13:03*carum joined #nimrod
21:15:39DemosI have seen matlab use amounts of ram that would make you run for cover
21:16:01Matthias247oh yeah
21:16:46Discolodayou dont need super pretty graphics to enjoy zero load time
21:16:59Matthias247I did signal processing simulations with Matlab in an internship were I exceeded 4Gb (was much back then), all constantly swapped and the simulation took a whole weekend...
21:17:43Matthias247probably the same thing would now run with julia in 2 hours
21:17:49Demosyeah the workstation I had was equipped with 64gb
21:17:53Demosand matlab was swapping
21:18:58*carum quit (Read error: Connection reset by peer)
21:19:18*carum joined #nimrod
21:20:04EXetoC:E
21:20:12Matthias247but currently I'm doing no more signal processing. Mostly compiling stuff. But even compiling a whole Linux system is pretty much CPU and I/O limited and not on RAM
21:20:34EXetoCDemos: did you analyze the universe?
21:21:03Demosdata from RNA sequenceing
21:21:06Demosasstons of data
21:21:22Demosand matlab is pathetic
21:22:09Matthias247we did analyzing RF transmission channels. That's also tons of data
21:24:00*brson_ joined #nimrod
21:24:04*brson_ quit (Client Quit)
21:25:22*brson quit (Read error: Operation timed out)
21:39:55Demoshey fowl: How good is your assimp wrapper?
21:40:50Demosfor some reason it does not specify {.dynlib.} and does not seem to import all the relevant functions
21:44:28EXetoCcdecl and dynlib are pushed/popped
21:48:30Demosah, missed that
21:48:37Demosit looks pretty good
21:48:55Demosaside from not wrapping aiReleaseImport
21:52:06*carum quit (Remote host closed the connection)
21:52:42*carum joined #nimrod
21:57:48*carum quit (Ping timeout: 264 seconds)
22:12:52Matthias247I think I finally succeeded in parsing IPv6 addresses...
22:17:18Araqping Skrylar
22:18:39Araqnequitans: you should mention that the multithreading you're using is low level and soon there will available be a much better one
22:19:30Araqping Varriount_
22:34:22*Varriount_ is now known as Varriount
22:34:27VarriountAraq: Yes?
22:34:53AraqI want you to split the babel handling
22:35:13Araqthe packages under nimrod-code should be tested with 'all', the others should not
22:36:24VarriountAraq: How would one specify to test "the others"?
22:38:24Araq"official" vs "addon" perhaps
22:39:10VarriountAraq: I mean, on the command line
22:39:30VarriountWould it be two seperate categories?
22:39:40Araqyes
22:53:44VarriountAraq: testament/babel-integration PR updated.
22:55:26Araqhmm that was quick
22:55:37Araqnow I need to review it
22:55:53Araqdid you test it?
22:56:55VarriountAraq: Yes.
22:58:22VarriountAraq: I already had some functionality to filter packages, I just extended it a bit.
23:03:50Matthias247Araq, dom96: Any objections against adding an IP Address structure to the standard library? https://gist.github.com/Matthias247/9336472
23:05:49AraqMatthias247: use sets, c in {'0'..'9'}
23:05:53VarriountMatthias247: IIRC, object's with case members are unions underneath, so you might want to make those array members refs
23:06:33Matthias247Varriount: that is the expected behavior :)
23:07:14Matthias247Araq: for style or does it really make a difference?
23:07:31Araqfor style
23:08:11Matthias247I would expect the set to be slower, because it sounds like you have to compare against object instead of only comparing two numbers
23:10:12*io2 quit ()
23:10:22VarriountSets are bit vectors. Also, micro-optimization is an unnecessary evil here.
23:11:46dom96Matthias247: I like it. Add it to the new net module. Will need something to convert into a form that can be used by connect/bind though.
23:13:02Matthias247dom96: yeah, the socket procs should all take an IPAddress instead of the current string as a parameter ;)
23:13:12dom96I agree with Araq though, you should also use case statements instead of those if statements for parsing
23:13:38*DAddYE quit (Read error: Connection reset by peer)
23:13:54*DAddYE joined #nimrod
23:14:22dom96Matthias247: What if I want to specify a domain then? :P
23:14:24AraqMatthias247: the compiler optimizes away the set construction etc. it ends up producing the same code in your case
23:14:37Matthias247dom96: then you use DNS :)
23:14:54dom96Matthias247: Connect/bind currently handles that automatically
23:14:57Matthias247Araq: ok, then I'll trust you and change it :)
23:15:03Araqin other cases the set is translated to a lookup table and is faster than a bunch of comparisons
23:15:59Matthias247dom96: you basically want an overload. One proc that directly takes an address and another one that takes a string and does DNS if necessary
23:17:27dom96Sure. That will work.
23:19:20dom96Is there a use case for parsing an IP and then modifying the resulting TIpAddress?
23:19:31SkrylarSure
23:19:38SkrylarIf you're pinging a range of IPs you might want to inc() to the next one
23:21:32dom96oh right
23:22:01Matthias247I'm also not sure if i should make the inner address fields private and provide gettter methods for it
23:22:32Matthias247would prevent setting an imcompatible family
23:22:54SkrylarTrue. This would also be done for you by using a variant object
23:23:05SkrylarAt least locking address objects to the right family type
23:24:00AraqVarriount: just fyi your iterator is an inline iterator and you have 3 yields in it --> code bloat
23:24:01Matthias247Yes, that's what I have and what it is doing
23:24:18Matthias247but in the other way you can throw a user-defined conversion error
23:24:30Araqbut I don't care enough, so ...
23:24:40Matthias247that doesn't work: return (c in {'0'..'9'}) or (c in {'a'..'f'}) or (c in {'A'..'F'})
23:24:42NimBotAraq/Nimrod devel 9f81e48 Clay Sweetser [+0 ±2 -0]: Integrated 'babel' with testament
23:24:42NimBotAraq/Nimrod devel 5876e62 Clay Sweetser [+0 ±1 -0]: Removed babel package tests from those run when 'all' is specified.
23:24:42NimBotAraq/Nimrod devel 7267635 Clay Sweetser [+0 ±1 -0]: Allowed specification of what babel packages to install via new categories - 'babel-core', 'babel-extra', and 'babel-all'
23:24:42NimBotAraq/Nimrod devel 1b80d31 Andreas Rumpf [+0 ±2 -0]: Merge pull request #970 from Varriount/testament/babel-integration... 2 more lines
23:24:46SkrylarAraq: i have an iterator with 6+ yields in a row in it
23:24:56SkrylarAdmittedly it was one of those few times a goto ladder would have been more efficient :P
23:25:44AraqMatthias247: what do you mean? compiler bug?
23:26:10dom96Matthias247: You should use: case address_str[i]: of {'0' .. '9'}, {'a' .. 'f'} ...: # isXDigit
23:26:12Araqalso it's c in {'0'..'9', 'a'..'f', 'A'..'F'}
23:26:14Matthias247Araq: it also accepts 'z' and other chars
23:26:52Araqreport it
23:27:05Araq(if it's not your fault of course :P )
23:27:19Matthias247c in {'0'..'9', 'a'..'f', 'A'..'F'} -> same
23:27:27Matthias247so I'll report it
23:27:33Matthias247and use the other method
23:28:52Matthias247oh, mine also accepts it
23:28:58Matthias247seems to be my fault ;)
23:29:06Araqwell the compiler uses things like these and it works so yeah
23:29:22Araqwould be surprised if there is a bug left for that
23:29:46Matthias247think I have refactored the stupid IPv6 parsing method too often :)
23:31:10Skrylari. hate. parsing.
23:31:24Matthias247ok, works now
23:31:48dom96I used to hate parsing, but then Araq enlightened me.
23:31:58SkrylarPEGs?
23:32:16dom96while loop + case statement ftw
23:32:18SkrylarFor me it was parsec; I can actually get a parser combinator to obey.
23:32:34dom96parseutils is nice too
23:33:04dom96Similar to Haskell's parser combinator.
23:34:12VarriountMy best experience with binary stream parsing (custom protocols) was using a python library called "construct"
23:34:30Skrylartime to bother zah... vim-nimrod on windows still tries to open /tmp/nimrod.log
23:34:44Matthias247if protocols are designed in a useful manner you don't need to parse them ;)
23:34:53VarriountMatthias247: Says you.
23:34:57Skrylaractually binary protocols aren't bad; i wrote a msgpack-v5 parser in rust a while back
23:35:26Matthias247yeah, they are in most cases much easier than text protocols
23:35:38Skrylaronce you know how to do the bit fiddling
23:35:43*zahary quit (Quit: Leaving.)
23:35:49Matthias247yup
23:35:57Skrylarmsgpack uses unsigneds :>
23:36:14dom96Skrylar: Now write one for Nimrod.
23:36:15Skrylarwell, has both. it only uses signed ints for negatives; but its a line-protocol so it doesn't matter
23:36:22Skrylardom96: el oh el
23:36:37Matthias247had an intern last year that did addr[0] + addr[1] + addr[2] + addr[3] to decode 32bit values ;)
23:36:55Skrylardom96: i might at some point.
23:37:09SkrylarI found out that like nobody supports the latest msgpack... after writing code that supported the extension fields
23:37:39Varriountdom96: Why does NimBot no longer announce commits?
23:37:46Matthias247I'm doing something like messagepack (but much more advanced) at work. But unfortunatly can't make it OSS :(
23:37:56dom96Varriount: It did like 10 minutes ago.
23:38:09VarriountOh, nevermind.
23:38:41dom96Varriount: If you just pushed and it doesn't announce it then keep in mind that GitHub may not always instantly send the data to NimBuild.
23:39:09Skrylari donno.. msgpack is pretty good nowadays
23:39:21Skrylaronly tools i might want for it would be a msgpack<->json transcoder
23:39:39Skrylar(inb4 pandoc clone for xml/jason/yaml markups)
23:39:53dom96I think i've only worked with binary protocols once
23:40:21Matthias247serialization is one thing. The other one is building a good RPC library around it. With good performance and kinds of error handling
23:40:24dom96I am a master at parsing the IRC protocol though
23:40:38Skrylarisn't the IRC protocol something designed to be handled with strtok ;p
23:41:06dom96Sure. It's pretty easy to parse.
23:41:33*Skrylar glares at vim unhappily... I use the help function for 'backspace' and it says nothing about how to fix it on windows. I use Google, THERE IS A HELP TOPIC TAGGED BACKSPACE. -_-
23:41:33dom96But as with any procotol there are some complications.
23:41:39dom96*protocol
23:41:45Skrylardom96: like unicrap \o/
23:42:27dom96Can't say I ever had problems with Unicode.
23:42:48SkrylarI guess an IRCbot wouldn't
23:43:02SkrylarIts no fun if you're writing a text editor though
23:43:42NimBotAraq/Nimrod devel 7c7ed1c Varriount [+0 ±1 -0]: Fix categories.nim
23:43:48*carum joined #nimrod
23:44:03dom96Can't recall any major problems that I had with unicode when writing Aporia either.
23:44:14EXetoCSkrylar: backspace in all modes?
23:44:36Varriountdom96: GTK probably handled it all for you.
23:45:31VarriountSkrylar: Have you ever managed to get GTK built on Windows (without Cygwin)?
23:45:50dom96Varriount: Yeah, definitely.
23:46:02SkrylarVarriount: i do not touch gtk :S
23:46:08Skrylargobject is sadness
23:46:22VarriountSkrylar: Good. Your sanity is intact then.
23:46:37VarriountGTK = Circular Dependancies
23:46:45Skrylari concur with GTK handling his unicode problems
23:46:52Skrylardoesn't he use gtksourceedit?
23:47:00VarriountYes
23:47:07dom96GtkSourceView. He does.
23:47:23SkrylarY'know.. I.. Never really liked Scintilla-ish things
23:47:36SkrylarI don't know why because the text component works really well, it just feels like nobody uses it to its full potential
23:48:00dom96My sanity is unfortunately not intact.
23:48:13dom96Gtk may handle unicode well, can't say it handles much else well.
23:48:37SkrylarY'know I was actually considering building my morph gui over cairo as of late
23:48:40dom96And GIMPNet/gtk+ rarely helps :(
23:48:52SkrylarI think you can static link to MPL1.1
23:49:26dom96I am still considering writing a GUI on top of OpenGL.
23:49:59SkrylarGL is kind of like working on a ship in a bottle.
23:49:59dom96Maybe we should work on a GUI together.
23:50:06Discolodadom96: i support that
23:50:07EXetoChow about cairo?
23:50:27SkrylarEXetoC: cairo is nice but you still need to plug a font layout engine over it
23:50:46SkrylarWhich you can admittedly do with Pango on linux, and probably hook Windows' native glyph support there
23:50:57SkrylarI need to recheck if MPL1.1 allows static linking
23:51:12SkrylarI'm somewhat allergic to unnecessary LGPL dependencies :S
23:51:14EXetoCright
23:51:16dom96Are there no other font layout engines?
23:51:25SkrylarI think there are a few lesser known ones
23:51:36SkrylarAll though if the OS has one there's not a huge downside to using it
23:51:38Matthias247Ok, I've set up a PR for the net module
23:51:39SkrylarLowers your footprint
23:51:40Discolodafreetype isnt hard to use
23:51:46SkrylarDiscoloda: not a layout engine :)
23:51:56Discolodaah
23:51:59Araqgood night
23:52:08SkrylarFreetype is a rasterizer.
23:52:14SkrylarIt doesn't position the diacritic marks for you
23:53:00SkrylarEXetoC: yeah. on windows the backspace mode for gvim doesn't delete past where you start editing
23:53:28Skrylarand using :help backspace doesn't take you to the documentation on how to fix, even though there is a help topic for *backspace* *bs* which does tell you :|
23:54:15EXetoCok
23:54:26dom96Skrylar: I have a brilliant solution for you: delete vim, install sublime or something other than vim.
23:54:37Skrylardom96: lololol
23:54:39Matthias247hehe
23:54:46EXetoCSkrylar: doesn't position them how?
23:54:59SkrylarEXetoC: if i press insert, then backspace, it beeps at me
23:55:11EXetoC(FT)
23:55:13Skrylar"NO YOU SAID INSERT YOU CANT DELETE BEFORE THE INSERT POINT" "this is not 1990 and you are not vi)
23:55:43Skrylaron linux they usually turn off the pedantic options but for some reason gVim on windows has them on by default :B
23:56:04Skrylarfixed
23:56:05Discolodavim on windows has retarded defaults
23:56:14dom96Anyway. Good night.
23:56:19Skrylardom96: so what you are saying is we need to jump on the SublimeText cloning bandwagon in nimrod
23:56:20Skrylarg'night
23:56:38dom96Skrylar: Yep.
23:57:05dom96Skrylar: Sublime uses some custom toolkit which uses OpenGL right?
23:57:11Skrylarhis own stuff, yeah
23:57:25SkrylarSublime 1 was neat, then he removed the toolbars :(
23:57:54dom96I really can't bring myself to pay for it, or to use the "free" version.
23:58:04Skrylarwell, i won't buy the upgrade to 3
23:58:06dom96Especially after spending so much time on Aporia.
23:58:11Skrylarhe hasn't done anything i care about to the new version
23:59:03SkrylarCould always do that weird business model Ardour does
23:59:05Matthias247the plugin api is a little better. When when everyone tries to stay compatible with v2 it won't help
23:59:12dom96I think a Delphi/WinForms-like toolkit with an IDE which includes a GUI designer would be awesome for Nimrod.
23:59:22Skrylari was working on something like that
23:59:26SkrylarWell, not so much winforms as morphic
23:59:26Matthias247and it respects the DPI settings