<<01-07-2012>>

00:55:32fowlI was getting an error for missing gluErrorUnicodeStringEXT, so I googled it and it seems its windows only, putting when defined(windows): before the proc fixed it (for me, not on windows)
00:57:11*Trixar_za is now known as Trix[a]r_za
04:40:27*XAMPP quit (Quit: There is no such thing as coincidence, only the inevitable.)
13:20:14Araqzahary: why does nimDestroyRange need to be exported?
13:23:06Tasserdom96, shouldn't parseFoo take a tainted string as well
13:23:37dom96I don't think so.
13:23:55Tasserdom96, why? isn't parsing the step that converts unstructured to structured data?
13:24:12dom96TaintedString is a string which comes from the outside world, i.e. it's unsafe to parse.
13:24:41dom96Like lets say you get some information from the outside world, and you want to make a sql query out of that.
13:24:43Araqin fact I thought the same as Tasser :-)
13:24:53Araqparsing is input validation
13:25:02Araqwell the way parseutils does it
13:26:01dom96I don't think it's suited for parseutils though. If you want a proc which validates input it should take in a TaintedString and convert it into a string then check whether it is valid, or make it valid using parseutils.
13:26:01Araqhowever the parsing functions should also be usable for untainted strings and then you have a problem
13:26:23TasserAraq, converter for string -> TainedString ?
13:26:34Araqproc parseInt(s: TaintedString|string, ...
13:26:35Tasseror simple type subserset?
13:26:43Tasserehh superset
13:26:49Tasseralso known as inheritance
13:26:51Araqwould be the proper signature but nimrod doesn't support that
13:27:13Tasserwhy can't any string be used as TainedString?
13:27:42Araqbecause it's implemented as a 'distinct' string and distinct does not imply any subtype relation
13:28:04Araqthe converter may work
13:28:22Araqbut it causes problems quickly
13:28:26Tasserwhy so?
13:28:37Araq"my string" & "tainted string"
13:28:48Tassergives a tained string
13:28:53Araqnope :P
13:29:05Tasserwhy not?
13:29:06Araqaccording to you, it's a nontainted string
13:29:24Araqbecause the tainted string is converted to ... oh wait
13:29:41Araqlol
13:29:53Araqseems you're correct :-)
13:30:23TasserI still wonder why the taint part is done with the type system
13:30:37Araqhow would you do it?
13:30:40Tasserbut I suppose a string is the only data that can be tained?
13:30:48Tasserorthogonally
13:30:53Tasserbut that kind of sucks as well
13:31:08Araqit's only necessary for strings in practice IMO
13:31:25Tasseruntil you parse them
13:31:49Tasseryeah, it's fine
13:31:57Tasserjust add a converter from string to tainted one
13:32:19Tasserconverter is basically an inheritance hack ;-)
13:32:39Araqyes but more flexible :P
13:33:00Araqbut it's a nonissue really
13:33:07Araqthe current way is not hard to deal with
13:33:19Araqand btw taint mode is off per default anyway
13:33:34Araqit's only the compiler's error message is somewhat misleading
13:33:42Tasserbut do you agree with "parsing tainted -> clean"?
13:33:51Araqnot really
13:34:07AraqI agree it's the way to do it for parseutils
13:34:25Tasseryeah, that's what I kind of meant... the other part you're right
13:34:50Tasserwhat's those n_n prefixes in the bootstrap btw?
13:35:09Araqos_cpu number
13:35:21Tasseroh
13:35:25Araqbut since lots of files are shared/platform independent
13:35:34AraqI chose to use meaningless numbers
13:36:00Araqotherwise I'd get bug reports like "it uses x86_mac/times.c on linux!"
13:36:12Tasserhehe
13:37:10Tasserso an issue filed then?
13:37:42Araqdunno
13:37:52Araqlots of more important things left to do
13:37:54Araqbut ok
13:38:02AraqI'll make it a feature request
13:39:18Araqconverter sucks currently as the compiler does no trivial inling for them for now
13:39:38Araqand without inlining you'd get a string copy operation implicitely
13:39:50Araqwhich sucks
13:40:14Tasserindeed
13:42:02Araqso ... every tainted string is a string?
13:42:16Araqno
13:42:22Araqevery string is a tainted string, right?
13:42:43Tasserindeed
13:43:13Araqbut we also have:
13:43:28Araqproc add(x: var TaintedString, y: string)
13:44:03Tasserthe compiled should choose add(x,y: string) in that case
13:44:20Tasserso you choose to handle TainedString and strings differently - so what?
13:45:18Araqjust checking some ops
13:45:41Araqis s[i] valid for tainted strings? I suppose it is ...
13:46:28Araqin fact, 'distinct' is still missing essential features like "subscript op is allowed"
13:46:42*Trix[a]r_za is now known as Trixar_za
13:47:00Tasserwhat's "distinct"?
13:47:20Araqthe type feature that enables tainted strings
13:47:36Araqtype TaintedString = distinct string
13:47:43Araqis the declaration if taint mode is on
13:47:49Araqotherwise it's:
13:47:57Araqtype TaintedString = string # simply an alias
13:48:21Araqit's planned to support:
13:48:39Araqtype x = distinct y with `==`, `[]`, ...
13:49:41Trixar_zaHmmmm
13:49:45Tasserwhy not copy?
13:49:56Araqcopy what?
13:50:08Tasserseems like a type copy to me
13:50:08Trixar_zaHow hard is it to write a rst parser?
13:50:23AraqTrixar_za: use nimrod's docutils package
13:50:37Araqan rst parser takes months to create
13:50:40Trixar_zaNo, I was thinking of using Wiki software like LionWiki
13:50:50Trixar_zaThen just writing in a simple rst parser
13:51:04Trixar_zathen I can just dump the text files in the data directory and have instant wiki pages
13:51:43Araquse nimrod's docutils and jester and implement a nimrod based wiki software instead
13:51:58Araqthere is no such thing as a "simple rst parser"
13:52:15Araqit's one of the hardest to parse languages IMO
13:52:28Trixar_zaThen why did you use it? :P
13:52:34Araqbecause I love it
13:52:51Trixar_zaI see you like difficult women then
13:53:39Araqunfortunately yes ;-)
13:53:41Trixar_zaThe kind that has red hair, good in bed and insane that they come after you with a scissor to cut off your balls for cheating (true story)
13:55:22Araqsounds good :P
13:57:14Trixar_zaTrue, red heads are always the most fun
13:57:22Trixar_zaEspecially if you have good reflexes
13:59:35Trixar_zaAlso, I'm quite lazy if you haven't noticed. To me it's less effort to use an existing php txt file based wiki and adapt it's parser to display the files I want
13:59:35Trixar_za:P
14:00:28Araq*shrug*
14:00:46AraqI'm so lazy I had to invent a new programming language that supports my laziness ... :P
14:01:19Trixar_zaI once made LionWiki's parser compatible with true Wikipedia-like syntax, because people were complaining :/
14:02:59Trixar_zaWell, Laziness is an art. It's to reduce the total amount of effort required to do something. So even if the initial effort seems excessive, it does reduce the total amount for continued effort to do the same thing.
14:10:18*Nyx joined #nimrod
14:10:30Araqhi Nyx
14:10:32Trixar_zaInteresting
14:10:43Trixar_zaThis is dom96's Python IRC client
14:10:54Araqoh ...
14:10:57dom96hehe
14:11:03Araq:-(
14:11:15dom96Haven't worked on it in years.
14:11:35Araqit's a zombie irc client then
14:11:39Araqback from the dead
14:11:41dom96And it's filled with random bugs :D
14:11:49Araqit came to hunt me down
14:11:56Nyxlol
14:12:06Trixar_za[16:11:13] Araq: 7e00::f03c:91ff:fe93:822b PRIVMSG #nimrod :it came to hunt me down
14:12:13Trixar_zaThat's how all of Araq's messages look
14:12:37dom96Araq: The python, it will choke you. The Nyx, it will love you.
14:12:43dom96Trixar_za: Screenshot?
14:12:51dom96I never tested it with IPv6 hostnamed :D
14:12:54dom96*hostnames
14:13:53Araqdom96: make NimBot fight Nyx :-)
14:14:14dom96Araq: hehe
14:14:19Araqshodan vs. xerxes :Dd
14:15:05Trixar_zahttp://trixarian.net/nyx.jpg
14:15:30Trixar_zaoh, the upload stalled
14:15:31Trixar_zafun
14:15:32Trixar_zalol
14:15:32TasserAraq, https://github.com/Araq/Nimrod/issues/148 wasn't low/high partly magic?
14:16:17dom96Trixar_za: Can has the rest of screenshot? :P
14:16:24dom96Ahh there.
14:16:26Trixar_zaRight, fixed
14:16:51dom96lol. My parser obviously fails with IPv6 :P
14:17:45Trixar_zaIt's an interesting client though :P
14:17:54AraqTasser: ugh yes low/high are magic
14:18:26Araqbut the bug seems to be new, I remember fixing 'count' for 'char'
14:19:09*Nyx quit (Quit: Nyx IRC Client, visit http://sourceforge.net/projects/nyxirc/)
14:20:38Trixar_zaAnd yes, my SliTaz desktop looks similar to Windows
14:20:39Trixar_za:P
14:21:31TasserAraq, wtf, tab.low and tab.high correctly return 0 and 255
14:22:03Araqwell yes
14:22:14Araqbut try to add +1 to 255 for an unsigned byte
14:23:58Araqoh lol I only fixed it for 'items', not for 'countup' apparently
14:31:33*Trixar_za is now known as Trix[a]r_za
14:43:50*Trix[a]r_za is now known as Trixar_za
14:54:10Trixar_zaHmmm, Aporia is actually pretty light
14:57:40Trixar_zaExcept some of the keys don't work
14:57:42Trixar_za:/
14:58:21Araqbug reports to dom96 :-)
14:59:04dom96Wchich keys?
14:59:11dom96*which
14:59:42Trixar_zaWell, I can't type def
15:00:08Trixar_zaand when I went SHIFT+ N E V E R M I N D
15:00:11Trixar_zaonly R showed up
15:00:12Trixar_za:P
15:07:47Trixar_zaOk
15:08:06Trixar_zaIt's because I compiled it with nimrod c -d:release --opt:size
15:08:41dom96I bet I have some asserts which cause this somewhere
15:08:44Trixar_zacompiling it without -d:release breaks it - you can't use any keys in it and it refuses to close
15:09:02dom960_o
15:09:14Trixar_zacompiling it with just -d:release allows me to type :/
15:10:48Araqdon't use --opt:size then
15:10:53Trixar_zalol
15:11:03Trixar_zaYeah, using -d:release makes it work perfectly
15:12:37Araqit's pretty strange though
15:14:00dom96indeed
15:14:43Trixar_zaWell, without -d:release and when you run it as ./aporia
15:14:48Trixar_zaIt shows Key Used: Right
15:14:57Trixar_zadepending on which key you're using
15:14:58Trixar_za:P
15:23:51dom96Well it should
15:24:29Araqargh
15:24:42Araqhow to get a unique id for an object in javascript?
15:25:04AraqI don't want to map every hash value to 0 ...
15:52:15*JStoker quit (Excess Flood)
16:03:16*JStoker joined #nimrod
16:07:48*shevy quit (Ping timeout: 248 seconds)
16:20:50*shevy joined #nimrod
16:36:14*Trixar_za is now known as Trix[a]r_za
17:10:27TasserAraq, ehm
17:11:01TasserAraq, you need an id or just something to test disimilarity?
17:11:17Araqa hash value
17:11:22Araqbut I hacked around it
17:11:34AraqI use obj["_NimID"]
17:11:48Araqand if it doesn't exist, I increment a global to get a new id
17:13:57Tasserhave fun with mutex
17:14:15Araqwhy?
17:14:23Araqthere is no concurrency in JS, is there?
17:14:32Tasserthere is async in JS
17:14:59*Araq doesn't care
17:27:19Araqugh my JS codegen sucks
17:31:21Araqsee you later
17:46:04Tasserhow much?
18:01:47*JStoker quit (Excess Flood)
18:08:16*JStoker joined #nimrod
18:37:35*filwit joined #nimrod
18:37:45filwithi peeps
18:39:36filwitI'm not sure if anyone's around, but the other day I was trying to figure out how to make an "interface" in Nim similar to C#/D/Java's 'interface' construct
18:40:15filwitI never got it working, though I didn't have a whole lot of time to try. Anyone around that might know a bit about how to tackle this?
18:40:38filwit(or the Nimrod equivalent?)
18:42:04dom96hello filwit
18:42:14filwithi dom96
18:42:45dom96As far as I know the only way to achieve an interface-type thing is to have a list of procedures.
18:43:03dom96Similar to how the streams module works.
18:43:07dom96or how asyncio does.
18:43:08filwitI thought that's what 'method's where for :S
18:43:17dom96Perhaps.
18:43:34dom96Maybe my idea of interfaces is wrong D:
18:43:42filwitbasically I have it almost working...
18:43:53filwitbut I can't create a completely blank type
18:44:00dom96Can I see your code?
18:44:06filwitwith blank methods I mean
18:44:11filwitsure, one sec
18:45:19filwithttps://gist.github.com/3029213
18:45:26filwitthat was my simple test
18:46:27filwitso basically I want to create a type (IShip) that provides a couple blank methods for it's derivatives
18:47:11filwityou know, now that I think about it... I guess I could just static assert (if that's possible) from the IShip methods to enforce that those aren't called directly
18:48:06dom96give me a sec.
18:48:13filwitnp
18:51:01dom96You could have this: https://gist.github.com/effee3d78d270ea2fadf
18:51:05dom96But I don't really like it.
18:51:15dom96And I'm not sure if it fits your purpose
18:52:16filwitah right, function pointers are the same as methods i suppose
18:52:56filwitbut it's not the greatest syntax to create a FighterShip if I have to manually link up the procs in the constructor
18:53:13filwitthough I suppose Nimrod encourages closure style objects
18:53:18dom96You can also do this: https://gist.github.com/971f505d655ef5688852
18:53:36dom96You don't need to use methods
18:54:09dom96I am still not entirely clear on what the purpose of methods is.
18:54:14filwityes, but that doesn't work
18:54:23dom96Why not?
18:55:11filwitif I have an array of ref IShip, and I use it to update a bunch of different kinds of IShip types: FighterShip, BomberShip, etc
18:55:20filwitI need dynamic dispatch
18:55:38dom96I see.
18:56:00dom96You do need methods then
18:56:22filwityes, I think I can get it to work realy
18:56:31filwithow can I static assert?
18:56:52dom96What do you mean by static assert?
18:57:03filwitis there a {.msg: "compile time message".} i can use?
18:57:12filwitasserting at compile time
18:57:26dom96{.error: "...".}
18:57:27dom96I think
18:57:37filwitah, thanks, I'll try that
18:57:38dom96But, huh?
18:57:54dom96What do you want to happen?
18:57:59dom96What's the problem with your code?
18:58:35filwitwell, in languages that have an interface primitive, you use it to enforce (at compile time) functions that need to be implemented by derived types
18:58:51filwitI want to get similar functionality
18:58:55dom96I see.
18:59:01dom96I don't think that pragma will work
18:59:11dom96It will be raised all the time
18:59:29dom96It's only not raised when it's in a `when false:` I think
18:59:53filwitwell I don't care so much about enforcing the type implements all the methods, only that you get an error if you try and call one on an IShip directly
19:00:19filwitso:
19:00:26dom96Well since it's only known at runtime what the type is.
19:00:34dom96You can only raise an exception at runtime.
19:00:50dom96So just do: doAssert(false) or raise newException(.., ...)
19:00:56filwitmethod fire(ship:IShip) = {.error: "Not Implemented".}
19:01:06dom96Right, well I need to go. Spain vs. Italy :P
19:01:08dom96see ya later
19:01:13filwitha, bye
19:21:33*filwit quit (Quit: Leaving)
21:17:32*zahary quit (Read error: No route to host)
21:18:10*zahary joined #nimrod
22:36:52fowlwhere is c2nim?
22:37:17Araq$nimrod/compiler/c2nim
22:38:50fowlhrm im missing it
22:42:57Araqwhich version?
22:44:58Araqwhich os?
22:47:14fowl0.8.14 linux
22:48:14*filwit joined #nimrod
22:48:23Araqhi filwit
22:48:29filwithi Araq
22:48:34Araqinterfaces are to be done with a tuple of closures ;-)
22:48:38filwitI figured out my previous problem
22:48:56Araqor you use an 'assert' in the abstract method as dom96 suggested
22:49:02*filwit should have just read the docs again
22:50:04filwitso who's winning the football game?
22:50:10dom96Spain won
22:50:17dom96It was embarrasing
22:50:21dom964-0
22:50:23dom96For a final.
22:50:24filwitnice
22:50:28dom96A new record actually.
22:50:37filwityou voting for them?
22:50:38dom96Highest score lead or whatever
22:50:42Araqand germany would have never beat this spain team
22:50:50Araq:-/
22:51:01Araqso it doesn't really matter we lost against italy
22:51:06dom96lol
22:52:01filwitone thing I never really liked about soccer is that the scores are always low....
22:52:27dom96I'll never understand you americans :P
22:52:34filwit:-P
22:52:41dom96Not that i'm a big fan of football
22:52:49dom96or soccer as you call it
22:53:20filwitwell... in our football, we actually have tactics
22:53:26*filwit *says that and runs*
22:53:40filwitX-P
22:54:27Araqwhatever
22:55:17filwitlol, I'm not a huge sports fan myself. I'm just poking fun
22:56:21filwitso, anyways...
22:56:27filwitwe finished our game
22:56:34Araqcool
22:56:42filwitso I'll have some time to help with stuff now
22:56:48Araqexcellent
22:56:48dom96filwit: You shouldn't say that, ballotelli will kill you :P
22:57:16dom96(But I shouldn't be bringing back this off-topic topic :P)
22:57:21dom96Anyway, that's great!
22:57:35filwitguys want to see?
22:57:40filwitwe made a short promo
22:57:49dom96sure
22:57:57filwithttp://www.youtube.com/watch?v=7pvCcgQiXNk&feature=g-u-u
22:58:40filwitwe had to change the graphics a couple of times because of limitations with WP7, which is why it took us longer than expected to finish the thing
22:58:50filwitbut in the end I'm pretty happy with it
22:59:33*dom96 likey
22:59:47filwit:)
23:00:04fowlcool
23:00:04Araqis it windows only?
23:00:33filwitAraq: no, it's Window, Mac, Linux + Tablets/Phones + Xbox360 (indie)
23:01:09filwitbut we've only published to Xbox and WP7 today, and don't have the Android/iOS/PC builds done yet
23:01:58filwitwe hope to have the builds done in a day or so, but each platform has a review process that can take a few days. (7+ for iOS)
23:02:24filwitso it'll be a week or so before you see it on those platforms
23:02:40dom96filwit: Submit it to steam :D
23:02:58filwitwe plan too, especially since it's coming to Linux soon
23:03:38filwitalso, we're hoping we might get it into a Humble Bundle as a minor/side game
23:04:47filwitWe hope to get it on the upcoming Windows 8 marketplace, Mac Appstore, and Ubuntu Software Center
23:05:00filwitanyways, I'm pretty excited :)
23:06:28dom96cool
23:06:35dom96Would be nice to see it in a humble bundle
23:06:53dom96Then I would know someone who made a game that is in a humble bundle! :D
23:07:52filwitI hope
23:09:46dom96Anyways, good night.
23:10:00filwitnight
23:13:22filwithmmm... I don't have to 'instantiate' a seq[] before I add to it do I?
23:13:35Araqyou do:
23:13:41Araqvar s: seq[string] = @[]
23:14:06filwitis there a function alternative to the '@[]' syntax?
23:14:24AraqnewSeq(s, 0)
23:14:27filwitbut thanks, that works
23:14:32filwitokay, thanks
23:14:38*XAMPP joined #nimrod
23:15:52filwitmind if I default that parameter and make a pull request so 'newSeq()' works?
23:16:00filwitor do you have something against that?
23:16:15Araqhm dunno
23:16:37Araqwe should encourage to set it to a useful size
23:17:37filwitwell considering you need to do that before adding anything, I would think encouraging clean syntax would be best. but It's your language :)
23:18:08Araq@[] is clean syntax :P
23:18:27filwittrue
23:18:58Araqbut seriously
23:19:13Araqwhat is it with you and constructor syntax?
23:19:27Araqwhy is it so important?
23:19:49Araqwhat percentage of your code is initialization?
23:20:24filwitwell, my points about wanting constructors has more to do with understanding the types I'm working with
23:20:36filwitnot just the few lines that actually initialize the object
23:21:04filwitif I can't just glance at a line and see the type, I think there's something wrong with the design (slightly)
23:21:28filwitit's true that a lot of the work is done with proper IDE support
23:21:29Araqyou don't like type inference then, right?
23:22:39filwitnot really
23:23:10Araqalright I see
23:24:04filwitit's mostly practicality. If I have to look up a function definition to see what Type i'm working with, something is wrong (IMO)
23:24:14filwitIDE support helps a lot, true
23:25:09filwitbut it's still... annoying... to need to hover your mouse over something, where in other OOP languages you can simply glance and know that information through the syntax
23:25:25filwitdon't get me wrong, I think Nimrod does a whole lot of things right
23:25:47AraqMyObject obj = new MyObject(); :P
23:26:11filwitvar obj = new MyObject() yes
23:26:26Araqwell my point was
23:26:35filwitoh
23:26:41Araq"new MyObject" actually prevents factories
23:26:56filwitwell see, I'm open to new or different ideas
23:27:03Araqand thus is not abstract enough
23:27:10filwitor even arguments for factories alone
23:27:19*Trix[a]r_za is now known as Trixar_za
23:27:26filwitbut I still think my argument is valid
23:27:49filwitfor practical reasons, normally you don't need that sort of abstraction, you just want regular construction
23:27:57Araqnot really; the convention is 'newT' and then you can see the type easy enough too
23:28:11Araqexcept that 'newT' can be turned into a factory
23:28:13filwityes, but even with Aporia code, often this isn't the case
23:28:16Araqas it's only a convention
23:28:29Trixar_zaWait. Steam is coming to Linux?
23:28:49filwitespecially when Nimrods types are TType/PType all over the place, and then the factories use 'newType()'
23:29:03Araqwell the convention is:
23:29:07AraqinitT # returns T
23:29:12filwitTrixar_za: yes
23:29:13AraqnewT # returns 'ref T'
23:29:26Araqand perhaps:
23:29:35AraqallocT # returns 'ptr T'
23:30:03Araqbut 'ptr' is rare enough that we have no convention for it
23:30:03filwityes, I understand how, given a strictly followed set of naming rules, it can be easy to understand the type
23:30:26filwitthe problem is that often we use others libraries, who may use different rules
23:30:51filwitor we change our rules and pass on code, and others don't know the original naming convention
23:31:41filwitIt's usable, but honestly I just think that theres a better way that doesn't force developers to understand naming conventions to be able to understand the code
23:32:10filwitI hope you're not seeing me as saying "Nimrods unusable unless there's constructors"
23:32:12filwitcause I'm not
23:32:36Araqwell constructors are planned but they don't do what you think they'll do
23:32:39Trixar_zaQuestion: Who is 'we'?
23:33:03Araqand I think it's a very mood point
23:34:02Araqbecause the naming convention is not hard to learn
23:34:14Araqand if you don't want to adhere to it, fine
23:34:45Araqconsistency between different libraries is hard to achieve
23:34:58Araqwhat if lib A uses factories and lib B does not?
23:35:08Araqhere you go with your 'new T' syntax ...
23:35:39Araqand factories are IMO essential for OO
23:36:01Araqas often you don't want inheritance but "object patching" instead
23:36:36Araq"add to all Objects of type T this field 'x' please"
23:36:47Araqyou can't do that with inheritance alone
23:37:01Araqyou *need* to abstract the object construction for this to work
23:37:31Araqthere are other ways to achieve object patching and nimrod may support true partial object type descriptions some day
23:37:37Trixar_zaOh God. I actually know what you're saying.
23:38:06Trixar_zaI have been around you guys too long :/
23:38:47filwitThat is a valid reason for factories, but I think my point is equally as important considering you *most* often use simple construction. I just think there's a way to achieve both
23:38:49Trixar_zaThat and the 59 page essay on Event Driven Design (of which OO is a subset)
23:38:58filwit(citations needed)
23:39:51Trixar_zaHmmm, my headache is gone too
23:40:05Trixar_zaSo please continue, I'm actually interested
23:41:38filwitI know you say naming conventions are easy to follow, but I kind of disagree. We're not really talking about any function here, but the 'main' functions
23:42:13filwitwhen you read code, you see a variable that's doing things, and you need to know what it's type is to really understand what's going on with those functions
23:42:28Araqhttp://nimrod-code.org/apis.html
23:42:38filwitI admit, factories do work here, as often they're clear enough to understand
23:42:43Araqin C# it's either Count or Length or Size ...
23:42:48Trixar_zaOk, let me try to understand. Factories are objects with pre-set attributes and functions?
23:43:19AraqTrixar_za: a factory is a function that abstracts object construction and hides the object hierachy from you
23:43:25filwitArqa: C# uses Count when counting is implied, and Length when the operation is O(1)
23:43:49Araqso a factory pretends to return T but may return a subtype instead
23:44:05Araqfilwit: no, it's just messed up :-)
23:44:22Trixar_zaSo it's just a obfuscation of object design for the sake of...er... simplicity?
23:44:44filwitI don't see how. It informs the programmer about operation cost
23:45:01Araqyou have a class hierarchy and then decide you actually don't like the type proliferation and hide it in a factory :-)
23:45:06Araqfilwit: oh please
23:45:07filwitand both Count and Length are easy enough to find and understand on the Suggest List
23:45:21Araqit's Length for arrays and Count for Lists
23:45:29Araqand both are O(1)
23:45:36Araqas both are not braindead
23:45:43Trixar_zalol
23:46:25filwitthat's true, but I think this has more to do with a common Itorator type for foreach loops
23:46:32Trixar_za... ok, something is up with my playlist tonight. It's just throwing up songs about "Making a move" or "Change your Life" or "Make the Leap" type of songs.
23:46:34Araqand the inconsistent naming is a PITA in C#
23:46:35filwitthough I'm not sure
23:46:40Trixar_zaAnd people think God doesn't exist
23:47:12Araqand I program daily in C# btw, so don't try to convince me it's not :P
23:47:44filwitthough I find it odd that now you're suggesting that C#'s naming discrepancies are a big issue, when you where previously saying that relying on naming conventions (which often change) isn't a big deal
23:48:27Araqmy point is:
23:48:31filwitthis is actually my point about factories, they're hard to _remember_ which one to call
23:48:38Araqit's much better in nimrod already
23:48:45Araqbecause nimrod uses 'len' consistently
23:48:54filwitwhere as common constructor keywords are easy: 'name' + type
23:49:00Araqand I never hear you complain about C# :P
23:49:02filwittypo: 'new' + type
23:49:44filwitI'm not a huge fan of C# for other reasons, but I do think they get most of their naming right
23:50:01Araqand nimrod's convention can actually be adhered to when you have a factory
23:50:08filwitmost of the library functions in C# system are very easy to understand and descriptive
23:50:49AraqI never know if it's X() or just X ...
23:51:16Araqbut yeah C# ain't too bad
23:51:30Araqit could be better though; but then it would be Nimrod :D
23:51:43filwittrue ;)
23:52:38filwitmostly the problems with C# are it's pre-processor syntax and it's limited system power (though we do have the Marshal lib)
23:52:56Trixar_zaIn my personal opinion (which probably isn't worth much), I find the syntax of Nimrod both weird and extremely flexible.
23:53:44filwitTrixar_za: I like Nim's syntax overall. I think it's clean and simple, yet powerful
23:53:54Trixar_zaOh and by osmosis I'm actually picking things up from you guys
23:54:01filwitbut there's still just a few things that 'erk' me
23:54:18Araqnimrod's syntax is good but could be better :-)
23:54:26AraqI'm working on it
23:54:45Araqthough in my not so humble opinion I think my design aged extremely well
23:54:58Trixar_zaYou still have to write up a specification for it - according to the manual anyway
23:55:03Araqkeep in mind it's from 2004
23:55:34filwitone thing I really like about Nimrod syntax is that it combines procs and templates into the same calling conventions
23:55:42Araqand most of the new sexy stuff didn't exist back then
23:56:04Araqlike coffeescript ... :D
23:56:25filwitwhere in D you need to use a '!' to differentiate between 'compile time' parameters and run-time ones, in Nim you just call functions that can do very powerful things.
23:56:34Araqfilwit: that's a major design idea
23:56:46AraqI decoupled the syntax from the semantics
23:57:02Trixar_zaYep, somehow I knew it would be js generator
23:57:43AraqI got carried away
23:57:49filwitlol
23:57:51AraqI only wanted to make a single test green
23:58:09Araqand ended up improving the JS backend
23:58:15Araqwhich isn't even documented
23:58:26Araqand has no priority
23:58:38Trixar_zaAtleast you enjoy working on your language
23:59:46Trixar_zaBtw Araq, I talked one of the devs of SliTaz into using Nimrod to rewrite certain bash or javascript functions in SliTaz
23:59:55Trixar_zaAnd he's already better at Nimrod than me
23:59:56Trixar_zalol