<< 01-08-2013 >>

01:21:06*DAddYE quit (Remote host closed the connection)
01:45:22*q66 quit (Quit: Leaving)
01:47:00*Associat0r quit (Quit: Associat0r)
01:51:48*BitPuffin quit (Ping timeout: 256 seconds)
02:00:53*OrionPK quit (Quit: Leaving)
02:52:35*EXetoC quit (Quit: WeeChat 0.4.1)
04:20:37*DAddYE joined #nimrod
04:52:40*xilo quit (Ping timeout: 264 seconds)
05:35:02*Associat0r joined #nimrod
05:35:02*Associat0r quit (Changing host)
05:35:02*Associat0r joined #nimrod
06:33:46*DAddYE quit (Ping timeout: 246 seconds)
06:35:01*DAddYE joined #nimrod
06:52:45*Associat0r quit (Quit: Associat0r)
07:25:10*Araq_ joined #nimrod
08:18:25*Associat0r joined #nimrod
08:18:25*Associat0r quit (Changing host)
08:18:25*Associat0r joined #nimrod
08:22:08*DAddYE_ joined #nimrod
08:22:09*DAddYE quit (Read error: Connection reset by peer)
08:52:22*q66 joined #nimrod
09:16:50*DAddYE_ quit (Remote host closed the connection)
09:39:24*Araq_ quit (Quit: ChatZilla 0.9.90.1 [Firefox 22.0/20130618035212])
09:55:23*BitPuffin joined #nimrod
10:10:49BitPuffinMan the AUR package for nimrod-git really should use the --depth option.. Such a huge download
10:23:40*asterite1 joined #nimrod
10:24:17*asterite1 left #nimrod (#nimrod)
10:30:24dom96BitPuffin: Would you be able to sacrifice a whole weekend for it?
10:30:36dom96because it's really a 48 hour competition.
10:30:50BitPuffindom96: I know what ludum dare is :)
10:30:52dom96You have to get the game done in 48 hours.
10:30:56BitPuffinI've been in their irc for like two years
10:31:06dom96ahh col
10:31:08dom96*cool
10:31:10BitPuffinwhich weekend is it?
10:31:44dom9623rd-26th
10:32:04BitPuffinHmm
10:32:07BitPuffinI don't know really
10:32:14BitPuffinNot sure if I have the time
10:32:30dom96awww
10:32:34BitPuffinI'll probably do one eventually
10:32:46dom96I will probably only have time for this one.
10:32:49BitPuffinand I'll advertise that the games I'm currently writing are written in nimrod so
10:32:55BitPuffinit will probably generate more buzz :)
10:33:04dom96hehe, cool.
10:33:24dom96I wonder where fowl is, maybe he'd do it.
10:34:45BitPuffinHmm maybe
10:34:49BitPuffinI'll still think about it though
10:35:02BitPuffintoo bad there's no allegro 5 binding yet
10:35:06dom96alright
10:35:07BitPuffinand I don't have time to make one :)
10:35:15dom96The last time I did I used sfml.
10:35:22dom96*I did it
10:36:11dom96my art really sucked :P
10:36:43BitPuffinyeah I saw that you participated :P
10:38:58BitPuffindidn't check the art though or what it was!
10:38:59BitPuffingotta go!
10:40:54*BitPuffin quit (Read error: Operation timed out)
10:40:56dom96see ya
11:01:39*Araq_ joined #nimrod
11:02:31dom96hey Araq_
11:02:43Araq_hi dom96
11:12:33dom96My async stuff is now fully automatic, it can connect to itself! :p
11:13:00dom96I'm excited about getting epoll to work :D
11:13:50Araq_yay
11:13:57Araq_yeah getting rid of select is overdue
11:14:08Araq_even though we beat ROR even with select iirc
12:04:31*Trix[a]r_za is now known as Trixar_za
12:08:34*Trixar_za twitches
12:08:55Trixar_zaRuby on rails gives me nightmares
12:42:31dom96ugh, this is crap.
12:42:38dom96I can't use Nimrod for Pandacodium.
12:42:57Araq_dom96: why not=
12:42:59Araq_?
12:43:06dom96"2. The team's project must be written in one (or more) of the following languages: Javascript, Python, Ruby or PHP."
12:43:21dom96Is that rule stupid or what?
12:43:32Araq_translate to JS then
12:43:41dom96meh
13:22:27*xilo joined #nimrod
13:32:56*Araq_ quit (Quit: ChatZilla 0.9.90.1 [Firefox 22.0/20130618035212])
14:03:16*EXetoC joined #nimrod
14:06:58EXetoChola amigos
14:21:47dom96bonjour monsieur
14:27:30*xilo quit (Ping timeout: 264 seconds)
14:41:15*nihathrael quit (Ping timeout: 245 seconds)
14:41:34*nihathrael joined #nimrod
14:45:22*Sergio965 joined #nimrod
15:08:32*Mat2 joined #nimrod
15:08:34Mat2hi
15:08:53dom96hello
15:09:01Mat2hi dom96
15:09:04dom96What do you guys think of this? http://www.kickstarter.com/projects/noflo/noflo-development-environment
15:12:22Mat2fine, I have seen similar software before - as I know quite common for game generators in the 80'es
15:12:38Mat2^80's
15:12:44dom96I like the look of their IDE. But I guess it's not ready for the public yet. All I see in the docs is instructions on how to write these graphs using some text language, which totally defeats the purpose.
15:14:42Mat2hmm, makes no sense
15:17:07Mat2so I agree
15:17:13dom96if they reach their goal I will cry
15:21:13dom96btw for anyone that doesn't look at the forum much: http://forum.nimrod-code.org/t/191
15:25:43*BitPuffin joined #nimrod
15:26:50Mat2enforcing style is a good thing in my opinion
15:32:11*Trixar_za is now known as Trix[a]r_za
15:33:35*Amrykid quit (Excess Flood)
15:34:06*Amrykid joined #nimrod
15:35:06Sergio965Nimrod looks like an underscored variable language.
15:37:03EXetoCwhat?
15:37:24Sergio965I don't think enforcing a style is a good idea.
15:37:47dom96why?
15:37:48Sergio965But I think case sensitivity is needed.
15:37:56Sergio965Because different people write code in different styles.
15:38:15Associat0runderscore is bad
15:38:22Sergio965Why should the language decide if I can do "var i_like_bread" or "var iLikeBread"?
15:38:24Sergio965Associat0r: ?
15:38:25dom96yeah, I feared that would be some people's reaction :\
15:38:57Sergio965I don't like that Nimrod conflates all casing patterns, though.
15:39:12Sergio965iLikeBread != i_like_bread != iLIKEBREAD.
15:39:13dom96so you don't like style insensitivity either?
15:39:25Sergio965Nope.
15:39:29apotheonI'm with gradha on that.
15:39:29Sergio965It makes no sense.
15:39:55dom96Sergio965: Would you prefer enforced style of style insensitivity?
15:40:04Sergio965I would prefer neither.
15:40:18Sergio965Why either?
15:40:24*Trix[a]r_za is now known as Trixar_za
15:40:28Sergio965I can't think of one successful language that enforces either.
15:40:32Sergio965Or, rather, uses either.
15:40:49Sergio965(Besides things like Capitals for classes in Java, but I'm okay with enforcing capitals for types)
15:41:16Sergio965Just not for variables.
15:41:19apotheonThis whole "everything must be a particular way" focus strikes me as a weird sort of fetishistic pursuit of orthodoxy rather than focus on developing a great implementation of a good language and letting the growing community sort it out.
15:41:43Sergio965"fetishistic pursuit of orthodoxy" is rather extravagant. This is not heresy.
15:41:43apotheon. . . and it reminds me of Go and Python.
15:41:58apotheonSergio965: I'm kinda agreeing with you, so I'm not sure why you said that.
15:42:05Associat0rthat's the point of a language to enforce certain things
15:42:22apotheonAssociat0r: The point of a programming language (at least when I'm picking one to use) is what it enables.
15:42:24Sergio965apotheon: We can agree on an end-goal and yet reach it in many different ways.
15:42:29apotheon. . . not whose orthodoxy it tries to enforce.
15:42:44Sergio965Anyways, I need to grab lunch. This is an interesting discussion though.
15:42:54apotheonSergio965: I have no idea what you're trying to argue against when you disagree with me while I'm basically agreeing with you.
15:43:11Associat0rit enables readibility and order in this case
15:43:19Associat0rconsistency
15:43:21apotheon. . .
15:43:30apotheonthe One True Readability
15:43:33apotheonOkay.
15:43:38Mat2as I learned here yesterday, humans need order
15:43:38dom96Araq's plan to enforce style is on the other side of the extreme. What we have now gives the programmer ultimate control, but people don't like that... if we go to the other side then we are essentially scaring away programmers anyway just as we are right now...
15:44:18apotheonIt makes a certain amount of sense to me to . . .
15:44:26apotheon1. reserve first-letter capitals for specific purposes
15:44:40apotheon2. require first-letter lower-case for everything else
15:45:01apotheon3. ridicule people who use all-caps outside of contexts where compatibility with other languages demands it
15:45:14apotheonApart from that, this whole effort seems pointless and contentious.
15:46:31Associat0rOCaml and F# enforce that Data constructors start with UpperCase for example
15:46:43dom96As does Haskell.
15:47:10Associat0rLisp's use dashes between words
15:47:19Mat2It is totally irrelevant what style is prescribed as long as one is prescribed
15:47:46dom96I think it would be interesting to start a poll on HN. I am guessing everyone would vote for "case sensitive with no enforced style" though.
15:47:46Associat0rit is very relevant what style is prescribed
15:48:06apotheonCommunities develop standards. People who violate them just for personal taste get their code shunned. I don't see a need to define a community by enforcing standards before people using it in general get a chance to define those standards based on community composition.
15:48:42apotheonIt seems, as I said, like a fetishistic focus on orthodoxy, and shifts attention from the important stuff at this early stage to bikeshedding. Like I said, I'm with gradha.
15:48:51Associat0rsometimes you need a dictator
15:49:02Associat0rmany times infact wrt language design
15:49:24Mat2I disagree, preferences in style are just habituations
15:49:27apotheon. . . and yet, that's not a compelling argument.
15:49:32apotheon(re: Associat0r . . .)
15:49:45apotheon"Sometimes, you need freedom." See how well that works?
15:49:49apotheonIt convinces nobody of anything.
15:49:55EXetoCI think having to type underscores all the time for example is a big deal
15:51:37apotheonMat2: In communities that develop their own styles, stylistic standards tend to emerge that suit the syntactic needs of the language, to some degree. It's not "just habituation". It provides cues to the coder and code reader about the semantic payload of the source by way of variances in stylistic features in a line of code.
15:52:18apotheonThat's one reason that "one true style" across different languages is an *awful* idea.
15:52:52dom96I have never had a problem with style insensitivity in Nimrod. But the issue is not minor, I think we have lost many users because of this language characteristic. Some people won't even try the language because of it.
15:53:30apotheonUsing dashes as word separators in tokens would be a terrible idea in C even if the - character wasn't used for arithmetic, but it's a great idea in Common Lisp for readability and ease of typing.
15:54:05apotheondom96: Case insensitivity itself (as in BASIC and SQL) is a terrible idea. I agree with that.
15:54:58dom96apotheon: Why do you think that?
15:55:37apotheonIt encourages shouting, for one thing.
15:56:01Mat2apotheon: The semantics of a language is logically a poor choice for assessing the efficiency of an algorithm because the processor architecture has no semantic meaning in the context of the runtime characteristics.
15:56:23Associat0rit also enciurages underscores
15:56:31dom96apotheon: shouting?
15:56:34apotheonIt also leads to people inconsistently representing a particular token across the sources of a project.
15:56:39apotheonSHOUTING
15:57:03dom96You mean using ALLCAPS?
15:57:12EXetoCYEP
15:57:22apotheonMat2: What does that have to do with anything I said?
15:57:28apotheonEXACTLY
15:57:33apotheonSHOUTING
15:58:49dom96Why are inconsistent tokens a problem?
15:58:59apotheonIf I name something "datum", and call it "Datum" somewhere else, and "DATUM" in a third place, that's a hanging offense, because it makes it difficult to keep track of where "datum" is being used no matter what programming language I'm using.
15:59:32Mat2aoptheon: Statistics show no significance of different styles both in terms of readability. I also disagree that semantic payload of the source depends of style to some degree
15:59:53apotheonMat2: 1. Statistics can be made to show anything.
16:00:01apotheonMat2: 2. You got that backward, so it's no surprise you disagree.
16:00:19Mat2fine, so your own argument shows nothing ?
16:00:57Mat2ah ok, it was a wrong translation, sorry
16:01:01apotheonI can only assume you didn't understand my argument at all if that's what you think, but I have no idea what part of it you misunderstood, because your responses seem to have absolutely no connection to what I said other than the fact you initiated your replies with "apotheon:".
16:01:30dom96apotheon: what? Presumably if I wanted to check where a variable is being used in a case sensitive language I would simply search for it. Why can't I do that in a case insensitive language?
16:02:11Mat2apotheon: I have disabled automatical translation and now your statement makes sense to me
16:02:18EXetoCyou can, assuming that the style is the same everywhere
16:02:45apotheondom96: Does your need to know that a particular variable is being used only ever come up in a context-free manner that is served by text searches? Don't you ever want to be able to read code and understand it clearly, rather than just wondering where a particular variable is being used in total?
16:03:02dom96I'm sure all editors support case insensitive searching.
16:03:03*xilo joined #nimrod
16:03:43EXetoCnm, was thinking of style insensitivity
16:04:44apotheonI mean, sure, you can count how many times a variable appears in your sources that way, and you can see where a change to a variable's value in one place might affect things in other places that way, but text searches don't tell you that a particular variable you've seen before appeared in a surprising place when you're just reading the code in that place and not expecting to see it there (for
16:04:50apotheoninstance).
16:04:58dom96apotheon: I can read variable names with varying case easily. Foo is the same as foo to me. I know that my Foo variable which is defined on line 1 is being used on line 5 where I see a 'foo' in my source code.
16:05:48apotheonIf you're not specifically looking for it, it'll jump out at most programmers more clearly if it uses a consistent capitalization style. Maybe you're different from most programmers, though.
16:05:59apotheonFor all I know, your brain may be mostly case-insensitive.
16:06:22dom96I think it's a case of habit.
16:06:35apotheon"case" of habit -- funny
16:06:45*BitPuffin quit (Ping timeout: 264 seconds)
16:06:54dom96hrm?
16:07:16*dom96 must be missing the humour
16:08:10apotheonThe F and f characters are distinct characters. Seeing them as the same letter is a matter of training, rather than of basic nature -- and, by training, we are prone to seeing them as conveying difference in meaning anyway (beginning of sentence meaning, or noun meaning in German, or proper noun meaning in English, et cetera), not as being *exactly* the same with no difference in usage, so in
16:08:16apotheonmany ways it just reinforces that natural recognition of them as distinct characters.
16:08:46apotheondom96: We were talking about case sensitivity, which refers to whether a letter was capitalized or not, and you referred to something being a case of habit, as in an instance.
16:09:01apotheonIt's punny.
16:09:05dom96I see.
16:09:16apotheon. . . unless you didn't mean to use "case" to mean "instance".
16:09:54Mat2stlye is related to readability. For some languages it's also related to semantic but in both cases I do not see any arguments for prefering a specific style because at last it's the algorithm what's important - not its formulation
16:10:01Associat0rapotheon: the point isn't to make variables the most readable, but instead to make the structure of code more apparant
16:10:21apotheonAssociat0r: I think I made that argument already.
16:10:29Associat0runderscores are just noise
16:10:30dom96apotheon: I did.
16:10:45Associat0rhttp://www.reddit.com/r/programming/comments/1iyp6v/is_there_a_really_an_empirical_difference_between/
16:10:51apotheonAssociat0r: They can serve as cues for understanding the structure of the code.
16:10:53Associat0ralso wastes space
16:11:10Associat0rapotheon: no they don't it makes variables not stand out on their own
16:11:13apotheon. . . unless the space used helps with clarity.
16:11:22apotheonAssociat0r: So you say.
16:11:33apotheonAssociat0r: Great argument. "I say this. Accept it or die."
16:11:43Associat0rspaces between variables help yes
16:11:49apotheon. . . or whatever consequence you imagine applies. Maybe it means I'm dumb, instead of meaning I die.
16:12:04Associat0rbut spaces or underscores within variables hurt
16:12:11*DAddYE joined #nimrod
16:12:11apotheonWhatever it is, I find it a wholly unconvincing argument to have you just repeat your position.
16:12:36Associat0rapotheon: everything is explained in that thread
16:12:49Mat2readability is a subjective class. For a chinese readability can be very different to what people in europe will call readable !
16:13:10apotheonWell, I'm done with what I was doing here (where I'm sitting, that is -- not the IRC channel). I need to get on with my day. I think I'll just declare myself the "winner" by virtue of the fact that I actually explain my reasoning, while most others just repeat their positions with no support.
16:13:23Associat0r"CamelCase, on the other hand, lumps all the identifiers together such that it's clear where an ident ends, and where punctuation and whitespace begin. It makes for a much faster read, which helps tremendously when consuming a new API, or learning someone else's code."
16:13:35dom96Perhaps we should just quote our variables just like our strings to allow spaces in their names :P
16:14:07Associat0rdom96: we do that in F# for unit tests
16:14:48dom96I would imagine that no one would use such a language though.
16:15:11Associat0rI wouldn't use it for normal code
16:17:42dom96Perhaps Nimrod's problem is not that it is Style insensitive, perhaps the problem is that Google/Mozilla is not behind it. If we get rid of SI, will people start to use Nimrod, or will they find another small issue which they will use as an excuse not to use the language.
16:18:29Associat0rdom96: that's the problem yes
16:19:34dom96It would be sad to go through such a big change only to not gain anything and in fact, lose so much. The users that we have now are all used to SI now, I know I am...
16:20:53Associat0rI never saw style insensitivity as an excuse to not learn a language
16:21:21Mat2with that I can agree
16:21:57EXetoCI'm only a little annoyed by how the types are name as a result
16:22:05EXetoC*named
16:24:11dom96Associat0r: I fear that the people in this IRC channel may be the people who share your view. And the rest simply stopped reading after they figured out that Nimrod is style insensitive.
16:28:12*DAddYE quit (Remote host closed the connection)
16:28:43Associat0rdom96: I really don't think so, which other mainstream lang enforces style?
16:28:44*DAddYE joined #nimrod
16:29:04dom96Associat0r: None that I know of.
16:29:22dom96Haskell comes closest, it enforces types to start with an uppercase letter.
16:29:37dom96Which I think is pretty elegant.
16:29:39Associat0rbut it's not mainstream
16:30:13dom96hrm, what do you define as 'mainstream'?
16:30:42Associat0rmainstream as in the top 10 of langs used
16:30:47Associat0ror maybe top 5
16:31:19Associat0ranyway popular langs the regular joe knows about
16:32:30dom96yeah, there are none.
16:33:02*DAddYE quit (Ping timeout: 240 seconds)
16:33:14Associat0rit's seriously a non-issue, those people who complained will find other issues for why not to adopt the lang
16:33:18Associat0rthat
16:33:31Associat0r's not to say style enforcement is a bad thing
16:33:44vegaiAssociat0r: go does some style enforcing
16:33:52vegaias does python, I would say
16:33:56Associat0rbut it's not mainstream yet
16:34:20dom96What style enforcing does Python do?
16:34:20vegaioh, you were talking of identifier names. Ok, so python doesn't do that really
16:34:29Associat0ralso does the Go compiler really reject other styles or is it a separate tool?
16:34:29vegaiI was thinking of indentation, but nevermind
16:34:31dom96ahh.
16:34:44Associat0ralso Python doesn't enforce style I use camelCase there without problems
16:34:57vegaiAssociat0r: it uses capital letters to define private/public of various things
16:35:17vegai...but it's debatable whether that is really style enforcing either
16:36:02EXetoCthe PEP 8 hitmen do, though :>
16:38:51Associat0rfor people to adopt your lang there should be some big company behind it or has todo something with Javascript and the web
16:40:29*Araq0 joined #nimrod
16:41:56dom96perhaps some company will notice nimrod and buy Araq's creation.
16:42:44EXetoCc(:)
16:52:18*Araq0 quit (Quit: Bye)
16:54:31*DAddYE joined #nimrod
17:01:11*rubino123 joined #nimrod
17:06:11Associat0rdom96: o I also forgot, if it's on the JVM it's chances are higher too
17:06:42dom96over my dead body :P
17:07:32*Trixar_za is now known as Trix[a]r_za
17:08:39*Mat2 found an easy way compiling efficient code for iAtom
17:16:01*Trix[a]r_za is now known as Trixar_za
17:16:41Mat2these CPU is well (and restrictive) designed I must say
17:40:55apotheonWhat big companies were behind Perl, PHP, Python, and Ruby when they saw their early mass adoptions?
17:41:32dom96How did those languages succeed then?
17:42:02apotheonPerl was something that didn't exist at the time, and it struck a chord.
17:42:35apotheonPython was in many ways seen as a reaction to Perl, and people who had grown sick and tired of certain aspects of Perl but still needed something to fill that niche adopted it.
17:42:44apotheonPHP was actually an offshoot of Perl, initially.
17:42:50apotheonRuby had a "killer app".
17:44:03apotheonI don't really think that Nimrod should be aiming to be the next C++ or Java or whatever, anyway. I think it should be aiming to be something more like the next Scheme or Haskell, but specifically targeted at C users. That's how it'll succeed. You don't have to be top-ten to succeed, after all.
17:44:37apotheonOnce you're getting a solid community behind it, then maybe think about figuring out how to hit the next stratum.
17:45:13apotheonLanguages that go straight from sea level to Mars tend to suck. Look at the examples: C++, Java, C#, Visual Basic . . .
17:45:18dom96Yes, I would be happy if Nimrod was as popular as Haskell.
17:45:37dom96But we're not growing fast enough for that.
17:46:19EXetoCthere are so many new-ish languages that people find interesting
17:46:57apotheonThings that can be achieved, without some outside agency, that can help to boost its popularity to that level should be considered. A book, some "killer app" kinda things, and a rich library ecosystem with a good library distribution system, are all good examples of that sort of thing.
17:48:08Mat2how about using nimrod for an effective operating-system with some applications most people want use ?
17:48:15apotheonIf you can also figure out which programmers out there are most likely to appreciate what Nimrod has to offer, you might target them, as well -- and, in the process, try to avoid offending them or disenfranchising them with language design decisions that aren't really germane to the important benefits of Nimrod per se.
17:48:42apotheonWriting an operating system is a *huge* project, and then you've just shifted the popularity problem from the language to the OS.
17:49:00Mat2exactly !
17:49:13apotheonI think it's much, much harder to make an OS popular than a programming language.
17:49:20EXetoChuge indeed. wouldn't be of any practical use obviously, but I'm sure people would be impressed
17:50:02apotheonIf you can, say, duplicate the MINIX 3 kernel in all its important particulars, using Nimrod, that'd be an interesting curiosity, but I'm not sure it would do much for Nimrod's popularity in the long run.
17:50:07Mat2you don't need a huge os in my opinion - an effective would be enough
17:50:17apotheonIt doesn't have to be a huge OS to be a huge project.
17:50:28apotheonI'm kinda assuming you'd want the OS to be something someone could actually use . . .
17:50:31dom96I've tried doing the same thing as https://github.com/charliesome/rustboot
17:50:44dom96You can see the difference in popularity.
17:50:51dom96https://github.com/dom96/nimkernel
17:50:57apotheon. . . and siphoning that much creativity and effort away from Nimrod itself to feed the OS project is probably not cost-effective strategy.
17:50:59Mat2apotheon: yes
17:51:10EXetoCeffective? :p
17:51:16dom96Even though my version does even more...
17:51:28dom96People in the reddit thread failed to notice that it's even written in Nimrod.
17:51:55Mat2ok, that speak of the people in the reddit thread
17:51:58apotheonThe upshot is that I think building an OS as a marketing strategy when you're an independent project is a losing proposition.
17:52:22Mat2probably you're right
17:52:32Mat2but it can be worth the try
17:53:11apotheonI think I'm going to put off doing anything much with Nimrod, by the way, until I see how this style enforcement thing hashes out. I just don't have the time to screw around with something that might be completely invalid and, ultimately, painful to use in six months.
17:53:22Mat2and I think most programmers are more impressed from 'huge' projects (has nothing to do with rationality, only psychology)
17:53:38EXetoCsure
17:53:39apotheonMat2: Pick a "huge" project that isn't actually a huge project, then.
17:54:10Mat2well I do already
17:54:12apotheonHow pure is Nimrod's self-hosting at this point, by the way?
17:54:22EXetoCI'm fine with maybe marketing with that in mind, as long as design decisions aren't :>
17:54:53EXetoCok that was a badly composed sentence
17:55:01apotheonYeah, I had no idea what you were saying.
17:55:25apotheondom96: Do you know the answer to my question?
17:55:47dom96100% pure?
17:55:52dom96It's written completely in Nimrod.
17:55:59apotheonIn general, I think that programming language geeks who like compiled languages won't take a language seriously if it's not substantially self-hosting.
17:56:04apotheondom96: Cool beans.
17:56:48EXetoCgood thing it is then
17:57:09dom96The compiler is indeed a "huge" project.
17:57:28apotheonThat should be highlighted as a brag point, then.
17:58:10apotheonAs for me . . . I'll take a language seriously if I like the language itself, if the licensing isn't contentious, and if it accomplishes stuff I want to be able to do. Bonus points if it obsolesces something awful.
17:58:30dom96apotheon: I wish you would just do something with Nimrod. You said that you would on the condition that we would change to a copyfree license, and we did. Where are these projects of yours?
17:59:13apotheondom96: I said that thinking Nimrod was basically a defined language with just some minor stuff needing to be ironed out. This style enforcement thing is a huge change, conceptually, though.
18:00:42apotheondom96: Also . . . I spent four weeks with a (temporary) full-time job which left me drained and uncreative whenever I wasn't working, so I haven't done *any* coding for the last month or so. I'm finally starting to get my life back on track, and was starting to show my face in here again with an eye toward writing a browser-agnostic bookmarking tool when I found out that in six months it might
18:00:48apotheonbe invalid code because of this style enforcement thing.
18:02:00Mat2try the code-translation tool Araq mentioned in the forum
18:02:08apotheonAn image manager tool is another one in the queue, as is an SMTP client.
18:02:15dom96Well that sucks. I don't think Araq will just change things on a whim though, he will provide a transition path.
18:02:22dom96Yeah, what Mat2 said.
18:02:55apotheonMat2: I don't want to just translate my code into a style I'm going to find painful to use. At that point, I'd just abandon the project and see if anyone else liked it enough to pick it up -- and I'm not sure that won't be the case right now.
18:03:16apotheonI'd rather write code in a language I know will still be palatable in six months.
18:03:38*BitPuffin joined #nimrod
18:03:46EXetoCseveral people have opposed the static enforcing though, so we'll see what happens
18:04:16apotheon"we'll see what happens" is exactly my strategy with Nimrod right now
18:05:23apotheonOh, by the way, I have a great idea for a crazy "huge" project to build Nimrod popularity -- and I think it's a much easier niche to break into than OSes.
18:05:33dom96oh?
18:05:56apotheonMake a fast, well-designed browser rendering engine that is substantially toolkit-agnostic.
18:06:08Mat2good idea
18:06:21dom96So exactly what mozilla is doing using rust? :P
18:06:26Mat2but how is that easier than os development ?
18:06:35apotheonI think it'd be much quicker to get the thing up to speed as a working, useful project. The only major downside is maintenance going forward, because of the changing standards for the web.
18:06:37dom96yeah, what Mat2 said.
18:06:55EXetoCdom96: not much
18:07:04apotheondom96: Servo? Meh. It's basically just a Mozilla project on the side, kinda like Microsoft's "Singularity" kernel for the OS market.
18:07:20dom96EXetoC: ?
18:07:29Mat2Singularity is a ggod example I have in mind
18:07:33apotheondom96: Either it'll go nowhere, or it'll just be the new Mozilla kernel. A Nimrod rendering engine would be new/original/independent/different.
18:07:37Mat2^good
18:07:50EXetoCs/^/* :p
18:08:13EXetoChm, maybe I need to escape it
18:08:26apotheonAlso . . . give the rendering engine a copyfree license so I can get the Copyfree Initiative to pimp it.
18:08:46apotheons/ggod/good/
18:08:49apotheon(problem solved)
18:09:10apotheonAt present, the only copyfree licensed rendering engine is the one used by w3m, which is pretty sad.
18:09:25apotheonServo had some potential for that, but then the developers went stupid.
18:09:49dom96It would be pretty hard to break into the rendering engine "market".
18:09:50EXetoCoh
18:10:00*BitPuffin quit (Ping timeout: 245 seconds)
18:10:10apotheondom96: Not as hard as you think, I think.
18:10:21dom96Far better to go after something which has a potential for earning you lots of money.
18:10:35apotheondom96: Mozilla explicitly rejects rendering engine portability right now. We're basically down to WebKit-only for independent browser projects these days.
18:11:25apotheondom96: The browser market *desperately* needs a rendering engine that is designed for reuse in different browsers other than WebKit, especially given the stupidities of WebKit design.
18:12:07apotheondom96: In fact, if you give it an API accessible from other languages such as C and Go, I'm pretty sure the xombrero project would consider jumping from WebKit to the Nimrod rendering engine, if it meets the criteria I described above.
18:12:57apotheonAlso . . . things like feature bounties and consulting have the potential to earn you a lot of money if you create a rendering engine that catches on at all.
18:13:40dom96It does sound like a fun project heh
18:14:09apotheonIf the Nimrod language itself hashes out to something I like, I'd love to pitch in some effort on some of the rendering engine project scutwork.
18:14:22apotheon(. . . as a way to learn the language, among other reasons.)
18:14:43dom96Well I most likely won't be starting such a project.
18:15:34dom96But would contribute if someone else creates it.
18:16:42apotheonIt might make sense to have a page with a list of project ideas, where the rendering engine thing could be listed. For each thing listed, indicate reasons it would be a good idea in its own right, reasons it would be good to do it with Nimrod, and reasons it would be good for Nimrod to do it.
18:17:30apotheonEven if you don't want to start the project, you can help encourage others to do so.
18:17:35apotheondom96: What projects are you working on?
18:18:06dom96I'm currently working on an async macro which replicates C#'s await functionality.
18:18:47apotheonHm. Is there anything you're working on, in Nimrod, that would be more conceptually accessible to people who won't necessarily code in Nimrod?
18:18:51dom96And of course I have Aporia, Nimbuild, Nimforum, jester, babel, my gameboy emulator, and a lot of other projects ideas pending.
18:19:08apotheonOh, right, you make all the cool stuff, I guess.
18:19:36vegai21:09 < apotheon> Servo had some potential for that, but then the developers went stupid.
18:19:41vegaiwhat does this refer to?
18:19:52apotheonlicensing
18:19:57vegaiaah.
18:20:12apotheonAmazingly, I remembered the context of that comment right away.
18:20:36dom96apotheon: I have plans to make Aporia language-agnostic and a competitor to Sublime text.
18:20:56apotheon. . . and copyfree?
18:21:02dom96perhaps
18:21:13apotheon(not that it's likely to matter much to me on a personal level; I'll probably keep using vi)
18:21:26apotheon(it'd be nice to be able to add it to the copyfree list of software, though)
18:23:10dom96Sadly, I only have one month of summer holidays left. It's nice to see some of the new people helping me with my projects, but I would love to see more.
18:24:17apotheonI'm actually at a kind of turning point in technology selection for copyfree.org back end. I need to decide what tools (including language) I'll use for the major rewrite I'm planning.
18:24:27apotheonI'm guessing I'll end up using Ruby, at this point.
18:24:40dom96:\
18:26:04apotheonIt's just bad timing, I guess. Nimrod's not in a state of language stability where I can reasonably choose it.
18:26:29apotheonI might go with Go. I doubt I actually need any of the benefits Nimrod provides over Go for that project.
18:27:37apotheondom96: Is there any chance I could convince you to drop the advertising clause from babel's license?"
18:27:40apotheons/"//
18:28:01Araqapotheon: lol
18:28:28Araqthe enforced style and the old SI are really the same design
18:28:31apotheonOf Aporia, Nimbuild, Nimforum, jester, and babel, only Aporia and babel are currently ineligible for inclusion in the copyfree software list right now.
18:28:48Mat2hi Araq
18:28:52apotheonAraq: Okay . . .
18:29:01Araqhowever ... I failed to make this clear
18:29:08Araqutterly failed
18:29:26dom96Araq: You're still kind of failing, as I am a bit confused.
18:30:21Araqlook, it's 2013 and your tool should really be able to render the code like you wish
18:30:34Araqthis is what SI is all about
18:30:40dom96apotheon: argh. I like my advertising clause. It helps me sleep at night. Maybe if you decide to use Nimrod instead of Go my thoughts will turn in your favour :P
18:31:14apotheonAraq: What exactly does SI stand for?
18:31:19Araqhowever the SI also lead to the T/P prefixes which cost us 80% of all potential users I'm afraid ...
18:31:29AraqSI = style insensitivity
18:31:31apotheondom96: We'll see how style enforcement turns out.
18:31:52dom96However, I was planning on using a similar advertising clause for Aporia.
18:31:57apotheonAraq: Prefixes that are reminiscent of Hungarian notation really annoy a lot of programmers.
18:32:04Araqso ... the new design is a weird compromise that the first char is CS
18:32:18dom96Because I like the name Aporia, and I don't want people to use it :P
18:32:33Araqso that 'var parser: Parser' is valid (well it is now I already but that works due to special scoping rules)
18:32:47apotheondom96: This is what I mean by "advertising clause" . . .
18:32:48apotheon3. All advertising materials mentioning features or use of this software
18:32:48apotheon   must display the following acknowledgement:
18:32:48apotheon   This product includes software developed by Dominik Picheta.
18:33:06dom96I see.
18:33:09apotheondom96: I don't see how that stops people from using the name of the software. You're talking about a poor man's trademark, basically.
18:33:16apotheon(re: Aporia)
18:33:26dom96Yep. I was talking about 4.
18:33:47apotheonClause 4 doesn't disqualify a license for copyfree compliance.
18:34:15dom96But you're right. Clause 4 means nothing unless I get a proper trademark.
18:34:19apotheon. . . so, while I find it a little silly personally, go ahead and keep it if you like it that much.
18:34:47dom96Although doesn't it still have an effect if someone wants to fork my software and keep the 'babel' name?
18:34:54dom96in that they can't do that.
18:34:58apotheonClause 4 doesn't mean nothing without a trademark (and trademarks are actually evil, as enforced by law). It is effective in cases where people are using your source code.
18:35:02apotheon(in theory, anyway)
18:35:08apotheon(the courts have the final say)
18:35:42Araqhowever ... people have some irrational fear that I sometimes write this_that and then later thisThat and make it harder to read
18:36:04Araqwhich is complete backwards
18:36:09Araq*completely
18:36:11apotheonAraq: What exactly is under consideration for the Nimrod language, regarding style enforcement, then?
18:36:40Araqon the contrary, having both this_that and thisThat and they mean *different* things is what's really confusing
18:37:06Araqif they mean the same, it's can automatically be transformed back into consistency
18:37:18apotheonAraq: Is there a clear explanation of the whole shebang somewhere that I can read?
18:37:29Araqunfortunately not ...
18:37:44dom96what about that forum thread I linked?
18:37:58apotheondom96: link again, please
18:38:01apotheonif you have it handy
18:38:06dom96http://forum.nimrod-code.org/t/191
18:38:15Mat2I found it very instructive
18:38:55apotheondom96: I'll read it again (less skimming, this time) and maybe run my interpretation of it past Araq to see if I know what I'm talking about.
18:40:37apotheonAraq: Okay . . . is it the case that you're not talking about making the actual language implementation enforce style, but will instead just provide a prettifier for those who want to enforce a particular style?
18:41:06Araqapotheon: not quite
18:41:13apotheonPlease clarify, then.
18:41:31Araqpeople argued somewhat convincingly that a unified style helps them read code on github
18:41:56Araqand so this enforced style is for code that you have to read when you're not in your IDE/editor
18:42:30apotheonIs it a code display prettifier that doesn't actually touch the underlying code in its stored form, then?
18:42:44*apotheon is confused.
18:43:43apotheon"Yes, apotheon -- you are obviously confused, and easily so."
18:44:12Araqthe display prettifier currently makes everything the same style for github, but it's also good for rendering the identifiers as you like
18:44:15apotheonI'm starting to feel like the dumb kid in class because I'm still not sure exactly what Araq is trying to say.
18:44:53Araqso ... it's actually pretty simple: all code is stored the same way, but can be viewed as prefered if you happen to have a proper editor plugin
18:45:06apotheonWill the compiler reject anything for style violations like use of underscores in variable, constant, or method names, or for use capitalization in the wrong place (or lack of capitalization where it should be)?
18:45:59apotheonDoes "proper editor plugin" support stuff like vi?
18:46:04Araqmy plan was to make that optional via pragmas, apotheon
18:46:17apotheonOpt-in, or opt-out?
18:46:28Araqthe default being turned ON
18:46:42Araqbut now I think the default should be turned OFF :P
18:47:00apotheon"use strict"
18:47:02Araqsince I got so much heavy resistance ;-)
18:47:02apotheon(har)
18:47:49apotheonWhat about the "plugin" thing? Is this something that requires A) your editor to have a tractable plugin architecture for this and B) someone to have written the plugin specifically for that editor, so that people with plaintext editors are SOL?
18:48:18Araqapotheon: we already have a VIM plugin and the compiler is written with these things in mind
18:48:23apotheons/for that editor/for that editor's plugin architecture/
18:48:33Araqthe compiler supports a sockets API for querying
18:48:41apotheonAraq: Is there anything that would work with, say, nvi?
18:48:51Araqno idea what nvi is
18:49:03apotheonIt's a more old-school vi implementation.
18:49:14Araq*shrug*
18:49:23apotheonBasically, to work with nvi, it'd probably need some kind of editor-agnostic filter that sits between the editor and the file, I think.
18:49:38Araqif you want to live in the 70ies, why even bother with a new programming language?
18:49:43apotheonSo . . . I guess the answer is A) yes and B) yes.
18:50:25apotheonAraq: The key isn't so much nvi as it is "Will this require me to choose from a list of 'approved' or specifically supported editors?"
18:50:41apotheonI just think nvi serves as an effective litmus for that.
18:51:12EXetoCsurely you can do without a plugin then
18:51:25apotheon. . . especially considering that something that works like nvi will be pretty much everywhere except most MS Windows systems, while something from the approved/supported list is unlikely to be there unless someone specifically put it there.
18:51:50Araq"except most MS Windows systems" exludes many machines so
18:51:51apotheonEXetoC: You could do without a plugin, anyway. I'm just trying to figure out how broadly The Plan will actually apply.
18:51:57apotheonAraq: not my point
18:52:16apotheonIf you'd stop getting defensive about it, this conversation might be a lot smoother.
18:53:33EXetoCfeel free to merge my branch any time. 4-line diff :>
18:53:57Araqapotheon: also we have a chicken and egg problem: why declare the language stable when we have few users anyway?
18:54:27apotheonI'm not saying you should declare the language stable. You probably shouldn't if there are big changes you still want to make.
18:55:10apotheonThe more stable it is, the more likely people are to want to start using it, of course, so you shouldn't break it from time to time just because you don't have a lot of users -- but if you have good reasons to break things while settling on a final design, you should do it.
18:55:44Araqfair enough
18:55:55apotheonFor me, personally -- not for the project, or for everyone in the world, or whatever, just for me -- it doesn't make sense to use Nimrod for the projects I have in mind if I'm not sure I won't decide I don't like the language in six months. That's all I was saying about that.
18:56:40apotheonSo . . . to summarize . . .
18:58:00apotheonMy impression is that the language will not assign semantic import to things like capital letters or underscores by default (most likely), but there will be a default style enforcement scheme that can be turned on with a pragma, and there are plans to offer editor display style filter plugins for the editors you guys commonly use.
18:58:05apotheonIs that about the size of it?
18:59:07apotheonAraq: . . . and I'm not sure what this means for type signature prefixes, at this point.
19:00:33Araqapotheon: well capital letters are meaningful but only for the first character which allows us to get rid of the type signature prefixes
19:00:45Araqthat's the plan anyway
19:01:01apotheonAraq: For what purposes are initial capitals meaningful?
19:01:07apotheon(according to The Plan)
19:01:16Araqto distinguish types from non-types
19:01:25apotheonIs it types that get caps?
19:01:29Araqyeah
19:01:47apotheonInteger would be a type, and integer would be a variable or whatever -- right?
19:01:52Araqright
19:02:25apotheonIf all it takes to get rid of the type signature prefixes is capitals being mandatory and reserved for types, I think that change is pure win.
19:02:44apotheonI don't know if there's a better way to do that, but in absence of a better way, I think that's a fantastic plan.
19:02:53Araqwow thanks
19:02:57apotheon. . . specifically in terms of not annoying programmers in general.
19:03:59apotheonI prefer it that way myself, too, but it's not such a big change that it'd aggravate me too much if you didn't make that change, assuming the prefixes would themselves only be used for types. I think there's a huge, very pervasive bias against such prefixes, though.
19:04:22Araqapotheon: I agree
19:04:26apotheonThe way people bitch about the NS prefixes in ObjC, for instance, is pretty astonishing.
19:04:41Araqhowever currently every common type is spelt like 'int' in Nimrod
19:04:47apotheonah
19:04:52Araqso we need this transition tool
19:05:08EXetoCand the underscores? people are concerned with grepability, though I think it's a minor issue in practice, because most people adhere to the official style, right?
19:05:37AraqEXetoC: the underscores are no problem for nimgrep and even for grep (_)? is easy enough to do
19:05:49apotheonI might say that (if it doesn't clash with something else) something like :int would work, too, except the anti-Perl orthodoxy is rabid about "sigils", which could severely damage the language's acceptance rate amongst key demographics like the Pythonistas.
19:05:50Araqand indeed the official style doesn't use them
19:06:33apotheonOkay, sounds good to me.
19:06:54EXetoCdidn't know it dealt with that
19:07:05EXetoCmakes sense
19:07:47apotheonY'know, one reason I dislike style enforcement in a language is the simple fact that it stops pathological subcommunities that habitually write shitty code from identifying themselves as clearly as would be ideal. Consider GNU style for C code -- one of the clearest indicators I've ever seen that the subcommunity in question is incompetent to write good code.
19:08:16Araqapotheon: you're highly biased about this one though ;-)
19:08:50apotheonSeriously -- have you ever tried to read GNU code, even after prettifying it so it uses a more tractable style (say, KNF)?
19:08:54apotheonIt's fucking *awful*.
19:09:28EXetoCbecause of the indented braces? yeah, wth :>
19:09:45apotheonIf the GNU guys wrote good code, I'd be sad that their code was locked up in awful licensing. Because they write bad code, I can be happy that people will be inspired to reimplement the same stuff in other styles *and* with other licenses at the same time.
19:10:16apotheonThe fugliness of the GNU style just adds to my astonishment at the imbecility of core GNU coders.
19:10:37apotheonThere's about one good thing ever made for GNU, I think: the grep algorithm.
19:10:55Mat2well, there must have some reasons
19:10:57apotheon. . . and it annoys the shit out of me, because it keeps people from wanting to use other grep implementations.
19:11:59apotheonI think a lot of GNU style and coding conventions developed around the GNU community's emacs fetish. It's fine if you want to use emacs, but you shouldn't write all code in ways designed to conform to your editor of choice so that it becomes painful to edit your code in other editors.
19:12:12EXetoCit's easy to fall into that licensing trap
19:12:21apotheonThere are other problems, too, though I think Araq would disagree with me on some of those.
19:12:34apotheonEXetoC: What do you mean?
19:13:51apotheonnote: I don't want to get into a fight over licensing in this channel. I would like to influence licensing on Nimrod stuff, of course, but I'll try to keep it non-ideological here because it would be rude to turn this channel into a warzone.
19:14:44apotheonAraq: You've managed to convince me that I should see if I have any trivial projects to use as experimental contexts in which to use Nimrod for the near future. Thanks.
19:15:14rubino123For nimrod to take off: 1) excellent documentation with examples -> think a community built "python module fo the week" but for nimrod 2) take on one of the big benchamrks like the pypy benchmarks or the language shootout documents
19:15:28apotheon(probably primarily things where I can just write it and post it to the web somewhere, then forget it if I don't care to continue working on it, without feeling like I've wasted my time, at least for now)
19:16:33apotheonrubino123: Documentation quality is definitely an important factor for many people. If a culture of documentation improvement can be fostered, I think that could be huge.
19:16:49apotheon("huge" as in "a big help")
19:17:27rubino123apotheon; i think i read a report that the rise of languages is related to the amount and quality of documentation
19:17:47apotheonWhich comes first, though?
19:17:54rubino123amount
19:18:09apotheonI mean the rise of the language or the amount-and-quality of documentation.
19:18:23rubino123the beatles were succussful because of the amount of songs they wrote; not necessarily the quality of each one
19:18:44apotheonPopularity of a language can attract more help developing documentation. Documentation can attract more popularity. Which leads the others in the study behind the report?
19:18:48dom96rubino123: In regards to '2)', somebody ported the shootout benchmarks to Nimrod a while ago, would be nice for someone to run them again, i'm sure further optimisations can be made also: https://bitbucket.org/jmb/shootout/wiki/Home
19:19:07rubino123Apple during Steve jobs was successful becuase he forced huge amount of itertations until he felt a product was ready for release
19:20:03rubino123I would keep a benchmarks tab on the nimrod page then to watch nimrods progression
19:20:10rubino123just like pypy
19:20:23apotheonThat might not be a bad idea.
19:20:47dom96I am planning on making nimbuild run some benchmarks and create a nice graph showing the results with each commit :)
19:20:49apotheonPyPy, by the way, is the one thing I like best about Python.
19:20:58apotheon(coming from someone who doesn't really like Python)
19:21:12rubino123That said may people in the python community still think pypy is just experimental and fold in the ruby community know the rubinous vm exists but are still not compelled to use it --- speed is in itself not always power
19:21:19EXetoCquantity over quality eh? well, we have several few euclidean vector implementations I think :>
19:22:09rubino123EXetoC, just use the best iteration
19:22:11apotheonI used Rubinius as my primary Ruby implementation for a while, but honestly there's a certain amount of laziness that makes me less inclined to use it most of the time when I don't have a specific need for it.
19:23:50EXetoCrubino123: real programmers have their own sets of wheels :-)
19:24:52rubino123EXetoC, hopefully their are not forced to maintain their own standard lib
19:25:05rubino123Dlang
19:25:36EXetoCbecause of the GC issues?
19:26:33apotheonrubino123: Who? (re: maintaining distinct stdlib)
19:26:36rubino123possibly I have only read about it; but I thought there was a major rift between the users and the devs on what was a proper stdlib; I think language idioms were a large part of it
19:27:03apotheon"hopefully their are not forced to maintain their own standard lib"
19:27:08apotheonWho is "they"?
19:27:13apotheons/is/are/ really
19:27:26rubino123users; the great programmers
19:27:37apotheonI have no idea what we're talking about, now.
19:27:47apotheonIs this about PyPy or Rubinius or Nimrod or something else?
19:27:51rubino123Ruby / Python -. lets commodity level programmers get great suff done
19:28:00EXetoCapotheon: I think misspelling english words is the norm
19:28:19apotheonEXetoC: What?
19:28:22apotheonI'm lost.
19:28:33apotheonI'll just bow out of the discussion for now, I guess. I can't figure out what's being discussed.
19:28:39rubino123sorry; I have not even looking at the text before I send
19:29:08EXetoCsame. I don't think I've said anything useful in a while
19:30:26rubino123This is about giving a good language the best chances of becomming popular with users by following the best practices of other modern languages - python, ruby, haskell (though haskell has only become popular recently after a decade+ of development)
19:31:08apotheonI think Haskell only started gaining ground because of a spike in popularity of the idea of "functional programming".
19:31:30apotheon. . . which probably started fading because of the fear, uncertainty, and doubt surrounding Haskell's whole monad situation.
19:32:37Mat2what, if popularity of newer programming-languages have nothing to do with practices or features but primary with social dynamics ?
19:33:04apotheonThat's not always the case, but it certainly seems to have been the case with Haskell.
19:33:09rubino123Mat2: I think it has everything to do with readability
19:34:06rubino123On two seperate occasiona I have hear the Quant Managers say their decision for a language was mainly and first due to readability of the code they had to approve
19:34:15apotheonSimilarly, Logo was actually kind of an excellent language that could have gone a lot further than it did, but it was a victim of its own success within the narrow niche of "educational language". Because it was so successful in targeting that niche, it got pigeonholed as a toy language for children, and BASIC ended up being regarded as a more "serious" language.
19:34:20rubino123OCAML and python
19:34:25apotheon. . . even though BASIC was a worse language pretty much every way.
19:34:29rubino123Haskell is in that camp
19:35:20rubino123Has anyone used the Julia language?
19:35:23apotheonI think OCaml is mostly a victim of its bizarre licensing constraints and tightly controlled centralized development in France.
19:35:47Mat2hmm, there exist a trend to formal declaration (in spirit of a common, mathematical notation). In my experience most people which are not firm reading symbolical representations have difficulties understanding such code
19:36:35rubino123agreed on OCaml; it seems to have fallen behind in developement as it seems strange that a functional based language never learned to handle multicore as soon or easily as the rest of the pack
19:36:51Mat2probably that's more relevant to functional languages however
19:37:18apotheonY'know, one thing that would help any indie language gain popularity is being "first" at something that a lot of people think is cool, or useful in some kind of revolutionary way.
19:37:30apotheon(not necessarily literally first, but positioned that way)
19:38:05rubino123Anyone see the "Future of Programming" talk?
19:38:07rubino123http://worrydream.com/dbx/
19:38:44apotheonMat2: I dunno that it's convined to FP languages. Look at Smalltalk. The question that comes to my mind is whether corporate backing or bureaucratic design was the more significant factor in Java eating its lunch.
19:38:52apotheons/convined/confined/
19:40:59rubino123Apotheon: I think smalltalk, like ruby tries to do too much; the philosophy is there are 10 different ways to do one thing where is python and ruby on rails for that matter follow the "there is one best way" to do things
19:41:12rubino123convention over configuration
19:41:55Mat2hmm I had readed an interview with its creator some time ago. Java is an evolvement from Oak from which some quirks remain
19:42:03apotheonSmalltalk and Ruby have had dramatically different popularity trends, though. I don't think TIMTOWTDI has anything in particular to do with it in this case.
19:42:30apotheonMat2: Oak was the pre-release name for the project, yeah.
19:42:50apotheonI'm not sure why they changed it. I think I read something about that, but don't recall the details.
19:42:59rubino123apotheon: do not forget to compare language evolution
19:43:51apotheonrubino123: Okay . . .
19:44:20Mat2Sun had some copyright troubles with Oak because it share 'influences' from Self
19:44:37Mat2^shared
19:45:05apotheonAraq: Beware the temptation to think there's one silver bullet for language popularity, by the way. I'm sure you're aware of the temptation and the falsity of the idea there's such a silver bullet, but I figure a friendly reminder can't hurt.
19:46:27apotheonMat2: How so? Wasn't Self a Sun project at the time?
19:47:58Araqapotheon: I know, no matter what I do, people complain ;-)
19:48:51apotheonhar
19:49:23apotheonThe lesson to take from that is that you shouldn't screw up your language in pursuit of a popularity silver bullet. Well, *a* lesson, anyway.
19:49:56*Endy joined #nimrod
19:50:21Mat2apotheon: No but some 'technology' of Self was feared to be not copyright free (that was nonsense of course)
19:51:43Mat2however, I don't see any similarities for myself so whatever these influence was (it can be it was the prototype-based object model) there discarded
19:52:09Mat2^it was discarded
19:52:12apotheonThe only thing I know about that was borrowed from Self was some VM optimization.
19:53:36Mat2the Java VM is one of the worst example I know (beside pCode for UCSD Pascal)
19:53:58apotheon. . . or maybe it was the JIT compiler. I'm not sure.
19:54:10apotheonSomething not particular to the *language*, per se, anyway.
19:54:23Mat2yes
19:54:23apotheonI have yet to meet a JVM I liked.
19:54:57apotheonThe persistent process optimization the JVM does is impressive, but everything else about it seems to suck.
19:55:24apotheon(Keep in mind I'm not exactly an expert on the JVM, so take my comments for what they're worth.)
19:57:01Mat2its an academic approach fitting a complex JIT compiler to an ineffective and over complex VM just to compensate low performance
19:57:08apotheonHey, I've got another idea for a decent project that could raise some popularity for Nimrod: a reasonably performant PDF rendering library under a license that has no license compatibility issues (thus, a copyfree license).
19:57:47apotheonHell, if that happened I'd probably write a PDF viewer front-end myself, if someone didn't beat me to the creation of one I'd like.
19:58:41Mat2nice project
19:59:35Mat2I assume you do not like Poppler
20:00:05apotheonIn general, I think making these projects usable from other languages will help boost widespread use of Nimrod on the back-end, which would raise awareness of it and give rise to more use of the language on the front-end as well.
20:00:19Araqapotheon: +1
20:00:21apotheonPoppler is pretty mediocre, and the license causes some legal incompatibilities at times.
20:00:30Araqreally useful idea
20:00:33apotheonthanks
20:00:39apotheonI'm pretty good at useful ideas, I think.
20:01:04Araqhowever a PDF2Text that doesn't suck would also be sweet
20:01:35apotheonIf someone who knows what he's doing gets these projects started -- rendering engine, PDF renderer -- I'd happily pitch in as a scutwork code monkey as a means to help me learn the language and support a project I like.
20:01:44apotheonAraq: Yeah, it would be pretty awesome.
20:02:23apotheonPoppler has been getting slower and slower for big PDFs, I think.
20:02:47rubino123R style dataframes could not hurt either
20:03:02apotheonrubino123: Elaborate, please. What do you mean by "R style dataframes"?
20:03:41rubino123R dataframes for exploratory data analysis
20:03:51*BitPuffin joined #nimrod
20:04:02rubino123the python library pandas made it a point to prot them to python and julia lang made it priority too
20:04:21rubino123prot = port
20:04:35apotheonAs a relatively easy project that might be fun and might get some attention, and would pretty much have an endpoint goal so it doesn't become your whole life, there's the idea of the implementation of a complete set of Unix userland tools in Nimrod.
20:04:57BitPuffinapotheon: what was your idea for a project?
20:05:02rubino123I like that too
20:05:05apotheonrubino123: Yeah, good point, then. Get the numerical analysis people on board with Nimrod.
20:05:29apotheonBitPuffin: Uh . . . implementation of a complete set of Unix userland tools in Nimrod?
20:05:34rubino123Araq mentioned he has techincal computing in mind thus the strong template support
20:05:51BitPuffinapotheon: ah, cool. Including stuff like useradd?
20:06:34apotheonBitPuffin: Maybe, though that might be more OS-specific. I was thinking more stuff like pwd, grep, ed, sed, ls, and so on.
20:06:48BitPuffinapotheon: ah okay
20:06:55BitPuffingood way to learn
20:06:59apotheonI'm not sure about the stuff like useradd -- how portably that could be implemented.
20:07:16apotheonYeah, I might tackle some userland tools as a way to get into Nimrod from the ground floor.
20:07:16rubino123Can nimrod be compiled into an arduino or arm MCU? An drone autopilot maybe ?? : )
20:07:29apotheonrubino123: good idea
20:08:08apotheonArduino development (especially if it doesn't require a specific IDE) with Nimrod would be an awesome option to have.
20:09:59rubino123I think ability for diffusion into userland is the key here; microcontrollers and mobile developement might be the best way to go... Instead of web frameworks ala rails perhaps a mobile framework will be the next big big thing
20:10:33apotheonBasically, anything that can in principle replace GNU Coreutils (without necessarily matching its quirks and specific nonessential features) fits the requirements of my Unix userland tools idea.
20:10:45Mat2apotheon: I work on bringing up Nimrod to the duinomite
20:10:53Associat0rrubino123: my experience with Python is that there are also many ways todo things and most people don't even choose the best way
20:11:05*apotheon looks up duinomite.
20:11:06Mat2(on top of my own language)
20:11:31apotheonAssociat0r: That's probably because they're too busy adhering to the orthodoxy.
20:12:28*Endy quit (Ping timeout: 264 seconds)
20:12:38rubino123Associat0r, sure but the great python programmers take the time to learn the "python idioms" which usually are the optimized way of doing things for low level code bytes
20:13:05rubino123class and object creation are areas of contention and open for interpretation
20:13:08Mat2low-level programming in phyton ?
20:13:09Associat0rapotheon: btw OCaml's problem is mostly that it was to be used for theorem proving and research
20:13:45rubino123Associat0r, theorem proving is why the math folks love the functional based languages
20:13:50Associat0rif you want an polished and supported ML with libs your only choiche is F#
20:14:23Associat0rrubino123: I mean most people don't even use the combinators like map in Python
20:14:42rubino123Associat0r: they are missing out
20:14:52Associat0rthey seem to write out iterarions and stuff the long way
20:14:55apotheonMat2: Tell me more about this DuinoMite stuff, please.
20:15:07rubino123Thought list comprehensions are somewhat more flexiable than map in and of itself
20:15:15rubino123thought = though
20:15:16apotheonIt looks like an Arduino competitor from what I've found so far, but I'm not sure what would be better (or worse) than with Arduino, so far.
20:15:37apotheonAssociat0r: What if you want ML without .NET?
20:16:16dom96Haskell.
20:16:23Associat0rrubino123: list comprehensions are a longer than a map
20:16:34rubino123longer but you can get more done in one line
20:16:50Associat0rHaskell isn't a ML
20:17:06apotheonAm I missing anything? http://paste.apotheon.net/?p=nimrod_projects
20:17:11Associat0rapotheon: what's the problem with .NET?
20:17:13rubino123complex processing / formating of data without lambdas
20:17:13apotheon(a list of good project ideas)
20:17:26apotheonAssociat0r: Sometimes, you don't want to code for a particular framework platform.
20:17:31apotheons/you/"you"/
20:17:51Associat0rapotheon: well you always do with a language that has a runtime and std library
20:17:52apotheondom96: I wouldn't exactly call Haskell an "ML".
20:18:03apotheonAssociat0r: No, I don't.
20:18:19apotheonAssociat0r: I hope you're not trying to turn this into an OS war.
20:18:24Associat0rapotheon: yes you do unless you're doing systems programming
20:18:27dom96apotheon: It's close enough to F# and OCaml though, I think.
20:18:53Associat0rif you use OCaml you're gonna use the OCaml runtime and libraries
20:19:04apotheondom96: I dunno. There are distinct differences. They may seem very similar to someone who doesn't really use FP languages in general, I guess.
20:19:17Associat0rif you use F# you're gonna use the F# libraries and runtime which happens to be .NET
20:19:33dom96What makes a language an "ML" language?
20:19:37apotheondom96: I've actually really enjoyed SML, to the extent I've used it, but it's stuck in academia by the paltry state of its ecosystem.
20:20:03Associat0rdom96: Haskell is pure and has non-strict evaluation
20:20:16apotheondom96: ML languages are languages descended from, and still significantly similar to, the original ML.
20:20:21Associat0rand higher kinds
20:20:28rubino123apotheon: port of the python standard lib
20:20:31apotheondom96: SML and OCaml are, in practice, it for ML languages these days, I think.
20:20:50apotheonrubino123: The whole thing . . . ?
20:20:54rubino123jk
20:20:58apotheonhar
20:21:10BitPuffinEXetoC: Why are the XYZ characters exported? I don't see the point
20:21:52Associat0rapotheon: I wasn't stirring up an OS war
20:22:00BitPuffinHmm
20:22:01dom96apotheon: I think reactormonk worked on (is still working on?) arduino support.
20:22:11BitPuffinI wonder how I should represent a matrix..
20:22:31BitPuffinI think internally it should be a one dimensional array
20:22:41apotheondom96: that's cool
20:22:43EXetoChiding it seems a little pedantic, and it's useful documentation. exporting only when nimdoc is defined would be confusing
20:22:58dom96apotheon: Hrm, well I only used Haskell and looking at OCaml it seemed similar so I thought that it is also considered an ML language.
20:22:58rubino123can nimrod adopt apl / j syntax for matrix ops
20:23:14BitPuffinEXetoC: pedantic? I don't see how, exporting it seems excessive
20:23:38BitPuffinEXetoC: better to just document how to swizzle imo
20:24:43BitPuffinHow do I get the length of a range?
20:25:26rubino123can nimrod have conventions that keep the programs in L1 cache (ala apl / k / j) for speed
20:25:54rubino123its conjecture on my part but I believe the apl family was optimized for the cpu caches
20:26:14rubino123according to wikipedia - i think
20:26:43Mat2yes, in addition to parallel processing (in modern systems - sadly all very expensive)
20:27:21rubino123a port of kbx would win alot of propritary finance shops
20:27:23apotheonCriminy, I haven't gotten any writing done for my work today.
20:27:28rubino123for kdb rather
20:27:49rubino123Apotheon; me too
20:28:01rubino123Its been great brain storming with you all but I got to go code
20:28:04rubino123for real
20:28:15rubino123and not just read and muse of it for a while
20:28:20apotheonI was talking about writing in English, actually, but . . . yeah, coding has been suffering for me lately, too.
20:28:25apotheonrubino123: Have fun.
20:28:38*rubino123 left #nimrod ("Leaving")
20:29:35BitPuffinAraq: Will it be able to override [] for array types soon?
20:31:22EXetoCI don't know if that's a good idea. maybe your type should be distinct
20:31:56BitPuffinhmm
20:31:59BitPuffindistinct array?
20:32:01EXetoCand then maybe provide a converter for it
20:32:19BitPuffindon't need that
20:32:51BitPuffinEXetoC: I wonder if marking it as distinct and then using the borrow pragma will stop me from overriding []
20:35:11AraqBitPuffin: yes
20:35:24BitPuffinAraq: to which thing? :)
20:36:57AraqI only read the highlighted question
20:37:50BitPuffinah
20:37:52BitPuffinokay
20:38:07BitPuffinwell then maybe making matrices a regular array will work too
20:38:27BitPuffinstill though
20:38:43BitPuffinThere is a problem because I have to use ranges
20:39:12apotheondom96: Do you know where I could find something about reactormonk work on Arduino stuff?
20:39:18BitPuffinsince I want the array to be of one dimension (because that makes OpenGL totally happy) I can't get the length
20:39:51BitPuffinC.low + C.high -1 doesn't work
20:40:51BitPuffin(C = Columns
20:40:52BitPuffin)
20:41:22dom96apotheon: No idea, I think he might've pushed something to his fork: https://github.com/Tass/Nimrod
20:41:35apotheondom96: Okay, thanks.
20:42:24apotheonHm. Old fork, judging by the license notice.
20:42:50BitPuffinis there a convention inside the code for nimrod how to spell constants?
20:42:57EXetoCBitPuffin: the alignment will be the same if you nest arrays
20:42:58BitPuffinI know that nimrod is type insensitive
20:43:09EXetoCor whatever it is you wanted to do
20:43:20EXetoC*byte size
20:43:29AraqBitPuffin: I use myConst mostly
20:43:33BitPuffinEXetoC: byte size is the same, but traversal is not afaik
20:43:39BitPuffinAraq: like a function?
20:43:43BitPuffinproc*
20:44:11Araqyes
20:44:50EXetoCa cast should do
20:45:00BitPuffinAraq: cool, thanks
20:45:07Araqwhy does 'len' not work for you?
20:45:14AraqI fixed it
20:45:28EXetoCin a function ideally, which would return a "ptr array..."
20:47:22AraqEXetoC: sounds like a disaster
20:47:30Araqreturning a ptr array
20:48:01EXetoCit's just a workaround
20:48:36EXetoCa temporary one, most likely
20:49:37Mat2get some sleep. ciao
20:49:40EXetoCbb
20:49:49*Mat2 quit (Quit: Verlassend)
20:50:12BitPuffinAraq: it doesn't work on a range
20:50:58EXetoCcan't you just hide the range stuff with templates for now?
20:51:12Araqwell make it work for ranges then
20:51:42BitPuffinYou mean contribute to system?
20:51:53Araqproc len*[T: range](x: T): int {.noSideEffect.} = high(T) - low(T) + 1
20:51:54apotheonIs there a small, testing-purposes webserver for Nimrod, akin to stuff like webrick for Ruby?
20:52:13BitPuffinapotheon: believe there is actually
20:52:23apotheonWEBrick, to capitalize properly.
20:52:25dom96apotheon: httpserver module
20:52:29apotheoncoolio
20:52:52apotheondom96: Is there any reason that wouldn't be suitable to making local-use web applications in Nimrod?
20:52:52BitPuffinAraq: well low and high doesn't work either
20:53:14apotheon(e.g. leveraging it to use the browser as the GUI for an application that doesn't depend on an Internet connection)
20:54:17dom96apotheon: Not at all. I will be improving it though and it's interface may change a bit. But I will deprecate the functions that are already there of course instead of removing them.
20:54:31AraqBitPuffin: well they should
20:54:40Araqexample code?
20:54:49dom96apotheon: I would suggest using jester.
20:54:50EXetoCI think he means in declarations
20:54:59apotheondom96: good to know
20:55:28apotheonUt-oh. This is what came up in a search for "nimrod httpserver": http://sbtourist.github.io/nimrod/
20:55:42EXetoCwhen passing it to a type parameter or something. I don't know, it's a little vague
20:55:51apotheonWhat does the "browsers" module do?
20:55:52BitPuffinAraq: yeah just a sec!
20:56:07dom96apotheon: it launches your default browser :P
20:56:10apotheonaha
20:57:19BitPuffinAraq: https://gist.github.com/BitPuffin/6135229
20:57:38apotheonOh, crap, I need to get going.
20:57:47apotheonTake care, folks.
20:57:52BitPuffinsee you apotheon
21:06:12BitPuffinAraq: Adding range as a type restriction did unfortunately not work
21:07:04Associat0rhttp://www.reddit.com/r/programming/comments/1jik2m/gamedev_what_language_do_i_use/
21:07:51AraqAssociat0r: thanks you for nothing
21:08:05BitPuffinyeah Associat0r
21:08:44EXetoClol
21:09:28BitPuffinAnd python is mentioned, boo is not really another language
21:09:34EXetoChe wants more experienced users to say something
21:09:36BitPuffinit's just python for .net
21:09:47dom96That's almost like linking to the Programming language list on Wikipedia.
21:11:21EXetoCdoes it present a weighted sum of both objective and subjective strengths yet? :>
21:12:54dom96gah, I really despise buffering.
21:14:15Associat0rBoo is't just Python.NET
21:14:16BitPuffinAraq: no ideas?
21:14:24Associat0rIronPython is that
21:14:49AraqAssociat0r: what about editing your post and adding Nimrod to this list?
21:14:58Associat0rAraq: it has been there all along
21:15:11Associat0rright after Rust
21:15:20Araqwtf
21:15:21BitPuffinactually maybe that's just what it once was
21:15:22EXetoChaha
21:15:35*BitPuffin switched from Rust to Nimrod
21:15:36Araqmust be some browser refreshing thing?
21:15:47Associat0rI can put it in front if you want
21:15:53AraqI swear it wasn't there the first time
21:16:06Associat0ryes it wasn't there first time but it was when I posted it in the channel
21:16:25AraqI see
21:16:29Araqwell thank you then :-)
21:16:40BitPuffinisn't andralex one of the main developers of D, talk about biased :D
21:17:09AraqBitPuffin: I'm looking at your problem right *now*
21:17:15BitPuffinAraq: sweet
21:17:33Associat0rIMO people shouldn't be posting stuff about gamedev langs when only mentioning the status quo
21:17:40Associat0rin this day and age
21:20:57Associat0r"Everything from ancient legacy languages like COBOL and FORTRAN to modern languages like Python can target the CLR."
21:21:30Araqquite true but also quite meaningless
21:21:40Associat0rand not a mention of F#
21:22:01AraqPython has so many extensions in C that Python for .NET is irrelevant
21:22:23AraqFortran on .NET also seems futile
21:22:36Araqnot sure about Cobol
21:22:58BitPuffincobol for .NET?
21:23:05Associat0rIronPython used to have a perf advantage, but probably not anymore
21:23:33Araqit still has over CPython
21:23:41BitPuffinpypy
21:23:42Araqdunno about PyPy
21:24:03AraqPyPy still uses way too much RAM afaict
21:24:37BitPuffinwell
21:24:51BitPuffinunless you are running on something other than a desktop or maybe even a laptop
21:24:56BitPuffinRAM isn't much of a problem
21:26:26BitPuffinI wonder if there will be an llvm based (or something) compiler for nimrod one day
21:26:50comexyou tried it once, right? :)
21:26:52BitPuffinI still don't ever want to lose the compile to C and JS stuff though
21:27:09BitPuffinbecause C allows nimrod to run on consoles and phones
21:27:22BitPuffinand JS lets you run nimrod in the browser :)
21:27:36comexregarding that list, serious gamedev doesn't do garbage collected for a reason.
21:27:39reactormonkapotheon, it's messy.
21:27:57comex(JIT in general is iffy when latency is so important)
21:28:30EXetoCit can be disabled whenever, unless the language sucks
21:28:58comexwell, that's a dubious article in general
21:29:16comexit barely mentions performance
21:29:46BitPuffinEXetoC: problem with D is that most language features become un-usable when disabling GC
21:30:38Associat0rcomex: you can do serious gamedev with GC especially when you use staging
21:31:40Araqcomex: the same serious game developers who are foolish enough to use C++ instead of C? :P
21:32:02comexAraq: yep
21:32:26comexAssociat0r: maybe, i have yet to see it
21:32:30comexthis is why I like rust
21:32:39BitPuffineveryone pretty much uses C++ :/
21:32:41comexunfortunately, from what I've heard, rust is not actually all that fast in practice yet
21:33:00Araqcomex: that's hardly a reason not to hype it here
21:33:35comexAraq: huh?
21:33:37Associat0rcomex: Naughty Dog used Scheme for serious games in the PS1 and PS2 era
21:33:48comexAssociat0r: sure, for *scripting*, people use lua for that a lot
21:33:58Associat0rcomex: it wasn't for just scripting
21:34:00comexthey used Scheme in the PS3 era, too
21:34:02Associat0rcomex: check out GOAL
21:34:08EXetoCScheme for PS back in the days? interesting
21:34:17Araqmany games mostly consist of scripting ...
21:34:37BitPuffinactually the engine was written in Scheme
21:34:44comexAssociat0r: oh, cool
21:34:46BitPuffinTheir own version that could step down to asm
21:34:48BitPuffinactually
21:34:50Araqthe engine is bought and expensive and not to be touched :P
21:34:52BitPuffinwasn't it lisp?
21:35:17Associat0rhmm I see PS2
21:35:31comexbut the article suggests it's not exactly a dynamic garbage collected language anymore
21:36:39Associat0rwell it's like a DSL
21:37:05Araqin my tests my GC had a latency of 1ms ...
21:37:06EXetoCBitPuffin: such as slices? I can't remember what else, but there are library types for that. still pretty lame though
21:37:11comexhere is what i was referring to: http://www.gamasutra.com/view/feature/6195/the_secrets_of_enemy_ai_in_.php?page=1
21:37:22BitPuffinEXetoC: think slices was one of em yeah
21:37:28BitPuffinEXetoC: maybe ranges or something too
21:37:29Araqyou have 16ms per frame if you target 60fps
21:37:57comexAraq: presumably that depends on how muchs tuff you have on the heap...
21:38:04Araqno
21:38:05comexdunno, maybe it's possible these days
21:38:06comexhowever
21:38:18Araqit only traces the stack
21:38:19comexwe also have slow mobile processors :)
21:38:27Araqso it's O(stack depth)
21:38:35comexgenerational collector?
21:38:42BitPuffinand lots of games run on android that are written in java
21:38:46comexstill have to deal with old objects
21:38:47BitPuffinwhich is garbage collected
21:38:48Araqdeferred reference counting
21:38:50BitPuffinjust fine
21:39:05EXetoCaren't the developers struggling though? that's what I've heard
21:39:23Araqcomex: no, but there can be problems with cycles :P
21:39:33comexEXetoC: they are. http://stackoverflow.com/questions/2484079/how-can-i-avoid-garbage-collection-delays-in-java-games-best-practices
21:39:38comexAraq: well, that's not garbage collection :P
21:39:45Araqbullshit
21:39:50comexwhich is not to say it's bad
21:39:59Araqit's GC according to any meaningful definition of the term
21:40:04Associat0rcomex: done in C# http://flyingdevstudio.blogspot.nl/p/games.html
21:40:19comexAssociat0r: i said serious ;)
21:40:24comexand minecraft is done in java too
21:40:33Araqbut sure maybe I shouldn't call it GC
21:40:47Associat0rcomex: in C# on mobile devices, and a serious game, it's a flightsim
21:40:48comexi suppose minecraft is serious, but i mean technically rather than game design
21:40:54Araqpeople are so full of bullshit with their half knowledge it never stops to amaze me
21:41:08comexAraq: you talking about me? :)
21:41:10dom96Isn't Kerbal Space Program written in C# too?
21:41:15Associat0ryeah
21:41:19Araqcomex: not really ;-)
21:41:19Associat0rno
21:41:23Associat0rit uses Unity
21:41:28BitPuffinAraq: calm down :)
21:41:28Associat0rso it's only C# for scripting
21:41:48Araqcomex: you however are full of typical reddit opinions if I may say that
21:41:50Associat0rbut infinite flight is full C#
21:42:01AraqC++ bad, C good, C + Python winning combo
21:42:08comexAraq: pfft, most people on Reddit don't think that
21:42:09BitPuffinamen to that
21:42:15Araqexceptions bad, lets script in Python instead
21:42:23comexalthough i don't usually read r/programming anymore, it's kind of dead
21:42:26Araqwhat do you mean Python uses exceptions everywhere?
21:42:30comexI read Hacker News instead
21:42:41Associat0rthat's worse
21:42:44Associat0rJavascript good
21:42:45BitPuffinyup
21:42:55Associat0reverything else bad
21:42:55BitPuffinuh
21:42:56BitPuffinno
21:43:01BitPuffinJS is pretty crappy
21:43:06comexI do like Python but I wish it used exceptions less :)
21:43:18BitPuffinit's got good things though
21:43:23Associat0rBitPuffin: I mean HN
21:43:28dom96JS all the way, lets all just use JS everywhere. Node.js is where it's at, am I right?
21:43:38BitPuffinAssociat0r: yeah that's what I said yup to
21:44:04EXetoCexceptions are unobtrusive in expressive languages
21:44:43Araqcomex: that doesn't help, Python is crazily dynamic everywhere anyway
21:45:10AraqPython: nice syntax, absurd semantics, but hey, nobody notices
21:45:15comexI tend to like dynamic, as it simply lets me write less code
21:45:20EXetoCand like I said, it's a blessing in many cases where you don't want to do anything other than terminating
21:45:35comexand the OO semantics are weird but I have yet to see an OO languages with non-weird semantics
21:45:43comexnot saying this is a good thing
21:45:48Araqcomex: and yet when C++ does the same it's pure evil
21:45:57comexC++ is /much/ weirder than Python :)
21:46:38Araqhard to argue against that :P
21:47:07comexbut i probably wouldn't want to write a large codebase in Python
21:47:08EXetoCC++ is definitely not weird
21:47:13*EXetoC runs
21:47:20comexhowever it's excellent for smallish command line scripts
21:47:36EXetoC+1
21:47:45Araqactually I prefer static typing for scripts
21:48:07Araqwho has test cases for scripts anyway?
21:48:22BitPuffinyeah, I think I might agree actually
21:48:27comexi don't have test cases for anything, i'm a crappy programmer :p
21:49:03Associat0rcomex: I use a typed language and my code is shorter than Python
21:49:11comexAssociat0r: let me guess, Haskell?
21:49:13comex;p
21:49:16Associat0rcomex: F#
21:49:36comexmaybe it's less *lines* than Python :)
21:49:36Associat0rcomex: also not every OO lang has weird semantics
21:50:08EXetoCsteve yegge wasn't able to convince me I'm afraid :>
21:50:11AraqAssociat0r: arguably it does, the basics of OO are weird
21:50:28BitPuffinI can't figure out how OO got so huge
21:50:33BitPuffinit's not all that ground breaking
21:50:54comexAssociat0r: name one :P
21:50:57Associat0rit's not that weird actually as described in Cook's paper
21:50:57EXetoCsome call it marketing
21:51:50Associat0rcomex: Scala's OO for example
21:51:52comexbut I do admire the succinctness that functional languages can achieve
21:52:08Associat0rcomex: yes it's not perfect but it's not weird as like Python
21:52:34AraqAssociat0r: http://lambda-the-ultimate.org/node/4754#comment-75640
21:52:50Araqargue with Andreas Rossberg instead :P
21:53:15Araqwho likely forgot more about type systems than I will ever know ;-)
21:53:56Associat0rI saw that comment before
21:54:05Associat0rand yeah he's probably right
21:54:56Associat0rAraq: what about structural subtyping?
21:54:56reactormonkAraq, what is nominal subtyping exactly?
21:55:22Associat0rCook's paper wasn't specifically about nominal subtyping was it?
21:56:08Associat0ralso I think OCaml's OO doesn't really count since it's based on row polymorphism
21:56:24Associat0rand what about module apscription?
21:56:37comexmodule what?
21:56:51Associat0rabscription
21:57:01Associat0rlike in ML
21:58:20comexascription, apparently
21:59:14AraqAssociat0r: structural subtyping seems aweful to implement which makes it a bad idea already IMO
21:59:41Associat0rcorrection "signature ascription"
21:59:43Araqcompilers spend lots of time in the type graphs already
21:59:47comexit's fun though, feels dynamic while not being slow
22:00:01Araqthis holds for both Nimrod and LLVM at least
22:00:15Araqin fact LLVM's type system had to be redesigned because of it
22:00:28Associat0rI see
22:01:10Associat0rAraq: http://www.reddit.com/r/programming/comments/1dumt1/objects_and_functions_conflict_without_a_cause/c9uansb
22:01:27*OrionPK joined #nimrod
22:02:25Araqalso Cook's paper is indeed not about nominal subtyping but about OO's general idea
22:02:58Araqand IMHO the general idea really is bad and oversold
22:03:23Associat0rtrue but it also gets too much flack
22:03:35comexI don't understand why you are all criticizing OO and yet when I suggest writing "foo_do_something(x)" rather than "x.do_something()" you think I'm crazy :)
22:03:46comexi guess it's essentially orthogonal
22:03:58Araqcomex: infix notation has nothing to do with OO :P
22:04:02comexbut very often correlated
22:04:28Araqtrue but we're talking about semantics here anyway
22:05:12comexon the other hand, it's not merely syntactic
22:05:27Associat0rAraq: I mean if you have to have subtyping because you want to extend in a certain axis, why greenspun around it?
22:05:29comexwell, usually
22:05:56comexyou would expect "foo_do_something" to point to a specific function (no overloading), while "x.do_something()" could easily be virtual
22:06:12comexalthough I guess ML modules and generics in general break that promise
22:06:36comexactually, screw it, lots of functional programmings use generics that way, ignore me
22:07:18BitPuffindrop everything and watch this: http://www.twitch.tv/bethesda listen to god speaking
22:07:19EXetoCit has nothing to do with OO in Nimrod so I don't really care. it's just a chain-friendly piece of syntax to me
22:07:37EXetoCBitPuffin: ffs, I'm trying to be productive here
22:07:51BitPuffinEXetoC: at 00:07?
22:07:53EXetoCit's bad enough that these people keep talking about stuff :>
22:07:53AraqAssociat0r: *shrug* I included inheritance for the exception hierarchy and memory efficiency for what it is worth ... ;-)
22:08:13Araqthat doesn't mean I have to like the feature :P
22:08:13EXetoCBitPuffin: sure
22:08:26comexhow exactly does inheritance promote memory efficiency? :P
22:08:39Araqit doesn't really ;-)
22:08:55comexand exceptions suck, therefore you have no good reason for inheritance ;)
22:09:24EXetoCBitPuffin: ooh Carmack. I forgot about the buyout. this might help me get into the zone actually
22:09:46*comex is mostly joking
22:09:59dom96BitPuffin: What is Carmack doing in a bethesda stream?
22:10:08BitPuffindom96: bethestda owns id
22:10:14dom96oh
22:10:20AraqAssociat0r: Odersky's comment is not convincing btw
22:10:31Araq"Type classes are wonderful, but ultimately not scalable enough because they create a global namespace of instance definitions. In a million line system you cannot guard against the situation that two parties will unknowingly create conflicting instances for the same type class."
22:10:35Associat0rmany people in the F# community are very hostile toward OO but their code ends up being a blob of free functions without some obvious extensibility boundaries, I mean F# has no ML style modules and OO is the only way to gain some of the large scale modularity back
22:11:11Araqnothing scales for a million line system anyway
22:11:29Araqand if you need millions of line in the first place, you do it wrong
22:12:00Associat0rAraq: true but the global instance thing is still an issue even in small codebases
22:12:14dom96BitPuffin: btw gaben is the one and true God.
22:12:17Associat0rthe standard lib suffers from it in some ways
22:12:22BitPuffindom96: hell no
22:12:28BitPuffinlove gabe
22:12:29BitPuffinbut no
22:12:34dom96BitPuffin: blasphemy
22:12:37comextype classes and implicit supertype casting are two sides of the same coin
22:12:53BitPuffindom96: JC created gabe
22:12:54comexboth of them let you use one object in many roles without doing anything explicit to convert it
22:12:57BitPuffinso he's really god
22:13:08Associat0ralso if you need subtyping you have to greenspun around
22:13:12Associat0rhttp://www.haskell.org/haskellwiki/Existential_type#Dynamic_dispatch_mechanism_of_OOP
22:13:43Associat0rhttp://www.angelfire.com/tx4/cus/shapes/
22:14:03comexwhich is probably fundamentally the wrong thing; although of course the problems manifest quite differently
22:15:33EXetoCBitPuffin: I think Carmack might be a better game programmer than me even
22:15:44BitPuffinEXetoC: possibly :P
22:17:07Associat0rthere are many game programmers I rate higher
22:18:30BitPuffinI look up to him as a graphics programmer
22:18:30EXetoCnotch?
22:18:34OrionPKlol
22:18:42OrionPKthat should warrant a hardy guffaw
22:18:50Associat0rGeoff Crammond, David Braben, David Kaemmer
22:19:01dom96BitPuffin: I consider gaben a God because I am actually looking forward to HL3, I don't have any games to look forward to from JC.
22:19:23BitPuffindom96: Well, that's not really what makes him god
22:19:24OrionPKthats a matter of game design and marketing
22:19:25OrionPK:P
22:19:26comexwell, to some degree. I mean that being able to convert List<Sub> to List<Super> feels fundamentally like a good idea when a sub "is" a super, but if super is merely a member of sub, it doesn't
22:19:35BitPuffindom96: and gabe isn't the one maknig HL3
22:19:41BitPuffinmostly
22:19:55EXetoChe does it all
22:19:56comexthen again, being able to convert it in O(1) time to an immutable List<Super> can be useful, occasionally
22:20:09BitPuffinlol
22:20:18BitPuffinHe's the only valve employee :D
22:20:18AraqAssociat0r: you're right in that advanced functional/type system features pretty much allow OO and thus need to be considered misfeatures ;-)
22:21:03dom96BitPuffin: Yeah, but thanks to him we had the pleasure of playing HL
22:21:11AraqAssociat0r: but on the other hand Robert Harper disagrees with us so we must be wrong
22:21:13BitPuffindom96: for sure
22:21:15dom96And will have the pleasure of playing HL3
22:21:24BitPuffindom96: except it will never come out
22:21:27Associat0rbut a lot systems programming relies on subtyping
22:21:41comexAssociat0r: huh?
22:21:44dom96BitPuffin: it must!
22:21:44comexlike what?
22:21:59BitPuffindom96: man I hope so :( daddy needs his milk
22:22:04BitPuffin(lol)
22:22:13dom96lolwhat
22:22:33Associat0rcomex: like things that can have many different implementations
22:23:13Associat0rhardware abstraction layers for one
22:23:38comexwell. any sane language needs to make it possible to implement virtual methods. but it doesn't need to be a language feature really
22:24:03Araqcomex: C's aliasing rules permit the first member of a struct to alias the whole struct
22:24:15Araqthat really is a subtyping feature
22:24:15comexAraq: what about that?
22:24:22Associat0rcomex: I wasn't talking about lang feature in general
22:24:28Associat0rI'm just saying the concept
22:24:33Araqeven C can't do without subtyping
22:24:34comexaraq: it's a very minor one :)
22:24:41comexit's not usually necessary
22:24:49Associat0rso why not make it a lang feature?
22:24:53Associat0rif it's so common
22:24:55Araqit is for python's implementation and for GTK
22:24:59comexAssociat0r: because it's _not_ that common
22:25:10Araqcomex: it IS common
22:25:36comexcommon as in a large project will have a bunch of virtual method tables, sure. common as in how OO languages do it is at least an order of magnitude more common :)
22:25:56AraqI agree
22:26:01Associat0ralso Harper isn't a systems programmer, he's a language guy and if all you do is compilers then you might miss out on why OO might be usefull
22:26:09comexharper is insane
22:26:18AraqI wasn't talking about virtual methods though
22:26:24comexhe's the "dynamic languages have one type" guy, i believe
22:26:33Araqyeah
22:26:42Araqand that's correct
22:27:05Associat0rGUIs and simulations you would do with OO too conceptually at least
22:27:49comex(while this is an interesting observation, he takes it too literally: he claims that this means functional languages can do anything that dynamic languages can do [never mind that you'd have to rewrite everything to be dynamic] and generally overlooks the ways that dynamic types can form a type system that is more flexible, albeit less reliable, than a static one)
22:27:51Associat0rI value Shapiro and Kay's view about this matter more than Harper's
22:28:13Associat0ralso http://matt.might.net/articles/best-programming-languages/
22:28:41Associat0r"At the time, I saw functional programming as strictly superior to object-oriented programming, so I didn't see a need for a language that fused functional and object-oriented programming. (That was probably because all I wrote back then were compilers, interpreters and static analyzers.) "
22:29:13Associat0reven Paul Hudak admitted that there were some good uses for OOP
22:29:22comexmy experience is that it's a matter of reading his latest post to find something stupid
22:29:31comexquote:
22:29:32comex“Declarative” means “what, not how”. But every language has an operational semantics that defines how to execute its programs, and you must be aware of that semantics to understand programs written in it. Haskell has a definite evaluation order, just as much as ML has a different one, and even Prolog execution is defined by a clear operational semantics that determines the clause order and that can be influenced by “cut”
22:29:58comex</rant>
22:30:46comexdoes anyone does not see why this is nonsensical?)
22:30:47AraqAssociat0r: Kay is pretty much a fraud
22:31:06Associat0rI'm not so sure about that
22:31:11Araqthank you for nothing, kay, smalltalk is a poor man's Lisp
22:31:42Associat0rKay isn't really that fond of Smalltalk
22:31:54Associat0rthe media makes it seem that way
22:32:06AraqKay is full of himself and I don't know why
22:32:07Associat0rbecause all they know about Kay is OOP and Smalltalk
22:33:07Araqcomex: I don't get it. The quote is accurate.
22:33:50Araqmy personal definition of "declarative" is "execution order is different from how it's written down" btw ;-)
22:34:29Araqso C's for loop is quite declarative as the last statement is executed after the loop body
22:34:42comexo.0
22:34:56AraqGo's "defer" is declarative for the same reasons :P
22:35:11Araqyeah I know it's a strange definition
22:35:18Associat0rAndreas Rossberg had some bad things to say about Go's defer thing
22:35:19comexi interpret 'declarative' as 'what, not now', not trivially as in the order is different from the source order, but as in it is the language (or library)'s job to figure out how best to execute an abstract series of operations
22:35:24comex*not how
22:35:44comexfor example, SQL is considerably declarative in this sense
22:35:54Associat0rhttp://lambda-the-ultimate.org/node/4735#comment-75201
22:35:59Araqyeah but SQL is the boring example everybody agrees on
22:36:25comexsure, but Harper in that quote is basically saying there is no merit to that distinction because all languages have semantics
22:36:39comexwhich is nonsensical
22:36:50Araqperhaps but it's Harper
22:37:05Araqhe's always right and you merely don't understand him :P
22:37:40comexfyi, i think the defer thing is an interesting issue, but not related to what i would call "declarative"
22:38:01Araqit's almost declarative
22:38:18Araqopen(f); defer close(f); // wrap in a macro and it's declarative
22:38:24comexdefer/RAII/whatever genuinely can produce cleaner code that doesn't require you to account as many error cases, but it can also be confusing if the cleanup has an unexpected effect
22:38:33comex*account for
22:39:14comeximo, therefore, it's best left for relatively simple deallocation semantics
22:41:54comex(just don't get me started on kernels with complicated reference counting semantics for different kinds of values)
22:44:40Araqcomex: there is no such thing as a "dynamic type system", types are static, if they are "dynamic" they are *tags* :P
22:45:18Araq[never mind that you'd have to rewrite everything to be dynamic] <-- also wrong. You can use some trival projections
22:45:41comexAraq: okay, the rest of the world calls them types though :P
22:46:03Associat0rthe rest of the world is wrong
22:46:49comexyou can definitely try to make a language that makes it easy to switch between dynamic and static typing - Dart does this, but for stupid reasons, and only with a simple OO type system
22:47:24Araqno need to try, it's very easy anyway
22:47:53Araqnew Integer(f(obj.getIntValue());
22:48:06Araqtedious perhaps
22:48:11Araqbut not hard at all
22:48:47comexyeah, tedious sort of negates the advantage of dynamic types :P
22:48:49Associat0rDart's type system is idiotic
22:50:09Associat0rcomex: some interesting videos here http://events.inf.ed.ac.uk/Milner2012/videos.html
22:50:29comexi don't like watching videos very much
22:51:11Associat0rcomex: the PLT heavyweigts are talking there
22:52:09EXetoCRasmus Lerdorf?
22:52:44comexoh I guess there are slides though
22:53:10Associat0rOdersky's talk is good
22:53:18Araqnice conversations, but I have to sleep now
22:53:19Associat0rand the FP panel
22:53:24Araqso good night
22:53:38comexnight
22:54:09Associat0rthe concurrency panel I still have to see, Xavier Leroy's talk was theorem prover heavy
22:54:20Associat0ralso Pierce's talk was nice
23:36:32Associat0rcarmack talking about haskell and stuff http://www.twitch.tv/bethesda
23:37:31BitPuffinrelated to what carmack said
23:37:45BitPuffinhow do we mark a proc as brutally pure in nimrod?
23:37:53BitPuffin{.noSideEffects.}?
23:37:58dom96yes
23:39:04dom96I've been listening to him talk this whole time... now i'm inspired to do some game dev in Nimrod.
23:39:05BitPuffinwould be better to have to do {.sideEffects.} hehe
23:39:12BitPuffindom96: same here
23:40:06dom96Did he just say that Garbage Collection is a "huge programming win"? :P
23:40:13BitPuffindom96: he sure did :D
23:40:21dom96:D
23:40:43BitPuffinand I agree
23:45:55Associat0rI would take what he says with a grain of salt, last time he was praising Java because it was supposedly safe
23:46:05EXetoC:o
23:46:23Associat0ro and he liked Go
23:48:19BitPuffinAssociat0r: well it is pretty safe
23:48:37BitPuffinunless you mean exploit wise
23:50:47BitPuffinI could probably say that I like Go too without even touching it. But I wouldn't say I love it because it's amazing and solves everything, and I doubt he does too
23:51:07BitPuffinhighly disagree with his opinion on linux games though
23:51:13BitPuffinthat it would be better to focus on wine
23:52:14comexnow that Mac is becoming a bigger target, it seems reasonable to try to get developers to use the same OpenGL code on Linux (and improve drivers to avoid different code paths being necessary)
23:52:46Associat0ralso Haskell and GC isn't the be all end all, with stuff like Idris around and Rust's linear types
23:53:33dom96The problem on Linux now is IMO the graphics drivers and Xorg.
23:54:01BitPuffindom96: xorg is on its way out
23:54:14dom96It's not happening fast enough though.
23:54:21BitPuffinit's finally going fast
23:54:27BitPuffinwayland has a stable api and all
23:54:39Associat0rBitPuffin: Go has many problems
23:54:40dom96So when can I replace Xorg then?
23:54:40BitPuffinand ubuntu will ship with Mir in october
23:54:44BitPuffinAssociat0r: sure
23:55:41BitPuffindom96: I'd say by the end of this year ish, you'll have lower performance for a while but eventually it will get better
23:56:54dom96As long as I am no longer forced to use some crazy VLC settings to watch videos then I'll be happy.
23:58:29BitPuffindom96: hehe yeah.
23:58:40dom96And as long as Wayland doesn't use 70% of the CPU when watching videos.