<<17-02-2013>>

00:00:12Araqfilwit: what about the fonts you used?
00:00:23Araqare these standard fonts?
00:01:43dom96oh well, you can't please everyone I guess.
00:01:54filwitSans for the regular text, and Discognate (http://www.1001freefonts.com/dfonts6.php) for nimrod and a the ".expressive .efficient .elegant"
00:02:25filwiti like the blue better too, dom, but i don't mind the gold either
00:03:01filwiti just like the "cool" look, but honestly, the goal almost first the crown and "nimrod" (first king) better
00:03:03fowlfilwit: cool design
00:03:09filwitthanks fowl
00:03:15fowli like the dark background its a lot easier on the eyes
00:03:41filwitgood to hear :)
00:05:59dom96Yeah, I suppose gold makes sense with the crown.
00:08:35fowlif i change some stuff in evals.nim whats the proper way to test it
00:08:46Araqnow the new design only needs a sunset picture in the background ...
00:08:54fowljust nimrod c koch; ./koch boot .. ?
00:09:04Araqfowl: I found tests/run/tmacro2 useful
00:09:51Araqrun 'nimrod c -r tests/run/tmacro2' after bootstrapping
00:10:04Araqand check the output is still the same
00:10:09fowlok
00:11:11Araqnow the new design only needs a sunset picture in the background ... nah, just kidding :P
00:11:35filwitokay.. for a second there i thought you where serious, lol
00:11:52filwiti was gonna say, gold logo on sunset picture doesn't work
00:12:30filwitwe should have an About page, which talks about the programmers, and you can put a picture of a sunset on yours
00:13:16fowlhrm
00:13:27*fowl didnt realize there was `continue` >_>
00:13:55filwiti always wanted to rename "continue" to "pass"
00:13:59dom96No, what we need is some embarrassing picture of Araq :P
00:14:15*filwit supports Dom's notion
00:14:19dom96:D
00:15:00fowli'd rather `next` than `pass`
00:15:09filwit^ good point
00:15:13fowli think pass would confuse anybody who's used python before
00:15:27filwitbut 'next' is a common variable name... it might get annoyhing
00:15:31filwitannoying**
00:16:22dom96how about 'skip' ?
00:16:34filwityeah, that works best actually
00:16:44filwitanyways...
00:16:52filwitone of the most pointless keywords to rename
00:16:53filwitlol
00:17:24Araqcontinue is perfectly fine
00:17:50filwitany keyword over 4 character long is ugly
00:17:58filwit(jk)
00:18:04filwit(sorta)
00:19:22filwitWhat is the Nimrod equavalent to 'stdin.byLine'?
00:19:33filwitequivalent*
00:19:52fowlshould be stdin.byline
00:20:00Araqstdin.lines
00:20:20filwitk
00:21:16filwitfowl: i disagree.. byLine sounds like an action.. 'lines' describes that it's just a sequence of lines
00:22:38fowlsry i thought you were asking about the stdin part
00:23:42filwitit should be: "Console.lines"
00:23:53filwitultimately, that is the easiest to understand
00:24:00filwit:P
00:24:08Araqit's weird
00:24:29Araq"input.lines" perhaps
00:24:35Araqor "readInputLines" :P
00:25:02filwiteh.. Console.inputLines or ConsoleInput.lines or Console.input.lines
00:25:06Araqbtw I never think Console.WriteLine(x)
00:25:18AraqI think: echo x
00:25:23Araqor x.echo
00:25:30Araqor perhaps just: x!!!
00:25:36filwitConsole.write(x) <-- best
00:25:45filwitConsole.writeInline(x)
00:25:48AraqConsole is an implementation detail
00:25:53filwityes
00:25:59filwitits descriptive
00:26:02Araqso it's not natural
00:26:06Araqit's annoying
00:26:07filwitno one will guess what is going on in the code
00:26:08fowlproc `>>`*(some) = echo($some)
00:26:09fowl:D
00:26:14fowl>>42
00:26:28Araqecho 42
00:26:32Araqworks ;-)
00:27:17Araqperhaps it's: 42.echo(stderr) instead?
00:27:25fowli want to hack the compiler to do levenshtein distance to resolve symbols so i can do ehoc 42
00:28:16filwithahaha
00:28:35Araqyou think it's natural to attach the 'write' to the console and not to the data that is to be written
00:28:49filwityes, you are writing to the Console
00:29:02AraqI don't agree it's particularly natural
00:29:28filwitthere is a dynamic between Object/Params
00:29:50filwitobviously you cant have every object contain a function that does something only to itself
00:29:57filwitx.writeToConsole()
00:30:16filwitcause even then you're still defining "Console"
00:30:51Araq*shrug* it conflicts with the infix
00:31:08Araqnotation: if x.matches(regex) ...
00:31:44Araqmatches is part of the regex type and yet you want it to be the second param
00:31:44filwiti disagree with that syntax
00:32:00filwitwait.. maybe i'm confused
00:32:13filwitwhat is 'x' in your example, a string or a regex?
00:32:20Araqa string
00:32:41Araqif X matches PATTERN is the logic
00:32:54Araqyou can't have PATTERN matches x IMO
00:33:01filwitwell see, in this case, you're searching for something inside the string, correct?
00:33:12filwitin the case of the Console, you're writing too the Console
00:33:16filwitso it should be first
00:33:24fowlit is first
00:33:28fowlstdout.write "hi"
00:33:42filwityes i know
00:33:52Araqyes it's first, it's also annoying enough so that we have echo :P
00:34:02fowlconsole is ambiguous anyways, is it stdout, stdin, stderr? maybe its a curses interface
00:34:23filwitfowl: you cater to the common situation
00:34:41filwitConsole is easy to understand and has a broad meaning of "the terminal"
00:34:41Araqfilwit: 'matches' should be in the regex class
00:34:55Araqand yet you want it to be the second param
00:35:11filwitfowl: so "Console.write(...)" or Console.lines() should mean stdout, stdin repectively
00:35:12Araqyou can't put it into the string class
00:35:33filwitAraq: i think i'm confused about your example
00:35:52filwitAraq: x.matches(regex) matches a patter in the string, based on regex right?
00:36:19filwitAraq: so in this case, the string is the most important element, the regex is just the pattern
00:36:23Araq"identifier".matches("[a-z]")
00:36:40filwityes, "identifier" is what you're searching against
00:37:04filwitit's like saying: number += othernumber
00:37:11filwitnumber is being modified
00:37:13Araqit may be more important but it's fundamentally wrong to attach 'matches' to the string class
00:37:25filwityou don't say: othernumber.inc(othernumber)
00:37:33filwitsorry: othernumber.inc(number)
00:37:42Araqand nothing is modified in my example :P
00:37:53filwitAraq: you're right
00:38:05filwitAraq: ultimately i wouldn't want there to be that...
00:38:20filwitit should be: Regex.find(x, regex) : string
00:38:38fowlthats what it is homie
00:38:43fowlre.match(x, regex)
00:38:55filwitre is what?
00:38:58filwitmodule name?
00:38:59fowlthe regex module
00:39:04filwitthat's horrible
00:39:09AraqRegex.find(x, regex) is horrible
00:39:14filwiti use 're' as a local var name
00:39:20fowlyou should be able to.
00:39:43fowlyou only need the module name if there are two match(string, re) functions
00:39:47filwitmodule names and Classes (and their functions) should make an attempt to describe what they do
00:39:58filwitso that others can understand (at a glance) what the code is doing
00:40:25filwitusing common words and full names makes the learning curve much flatter
00:40:26fowlyeah, i wouldnt expect parsing utilities to be in a module called parseutils
00:40:31fowlstreams? dont put them in "streams"
00:40:47fowlmake it OutputStringStream and InputStringStream
00:40:55fowlafk
00:41:01filwiti didn't say that
00:41:16filwiti said they should be descriptive, not overly descriptive
00:42:02Araqfilwit: the problem is that you have: x.append(y) because the verb happens to have the right subject/object ordering
00:42:29Araqbut then you have Regex.matches(x, y) when the verb doesn't
00:42:30filwitin that example, y is being appended to x?
00:42:39Araqyeah
00:43:10Araqwhy not Seq.append(x, y)? because English 'append' happens to fit
00:43:15filwitwell the Regex.match(x, y) is one justification or Extension types
00:43:40filwityou could justify using UFCS in that situation
00:43:57filwitto extend the functionality of a string in some cases
00:44:10Araqwe call it "method call syntax" btw
00:44:18filwitokay
00:44:23Araqbecause UFCS is not "uniform" at all
00:44:35filwiti always thought it ments "universal"
00:44:46Araqx.f(y) is much less uniform than f(x, y) or (f x y)
00:44:51Araqoh ...
00:45:15Araqperhaps you're right and it stands for "universal", I'm not sure
00:45:41filwityeah, idk
00:46:04Araqanyway, my point is valid
00:46:22Araq'f' is the special thing it deserves to come first
00:46:53filwitperson.run()
00:46:57filwitnot run(person)
00:47:12filwitperson.jump(10)
00:48:02filwitand more importantly (even if you prefer jump(person, 10)) is that you find 'jump' through person, because that's your context
00:48:15filwitperson is the acting entity
00:48:26filwitit's the noun, jump is the verb
00:48:36filwit10 is just the details
00:48:48Araq10.days.later
00:49:19filwitDate.in(10, Days)
00:49:54Araq'in'?
00:50:28filwityeah as in "from now"
00:50:34filwitbut yeah, kinda confusign
00:50:55filwitmaybe better to say: Date.future(10, Days)
00:51:00filwit'Days' is an enum
00:51:21Araqso your 'verb' is 'future' :P
00:51:36filwitlol.. well this is code, not english
00:51:50Araqah now we're getting somewhere :P
00:51:52fowl10.days.fromNow would be a better example, 10.days being a measure of time for 10 days and fromNow(time) adding time to now()
00:52:04filwityou could always do: Date.fromNow(10, Days)
00:52:18fowljesus
00:52:19Araq'fromNow' still is no verb
00:52:33fowlfactory patterns suck
00:52:53Araqanyway your examples still are very game scripting oriented
00:52:54fowli dont want to Integer.parse32(someString) i just want to someString.parseInt()
00:53:28Araqyou should read more of the compiler's code
00:53:31filwitvar day = Date.fromNow(10, Days) # you know it's a Date object, and you know it's data
00:53:51Araqlots of procs start with 'c: PContext' and it's only an annoying implementation detail
00:54:15filwitAraq: i don't follow
00:54:21filwitidk what you mean
00:54:36Araqit's arguably even a workaround for the missing dynamic scoping in Nimrod
00:55:09AraqsemExpr(c, n) # checks the expression 'n' in the context 'c'
00:55:15filwitoh, you mean the whole P/TType thing?
00:55:20Araqnah
00:55:59filwityeah well see, i don't care so much about parameter names and local vars
00:56:11filwitcause usually the functions is small enough
00:56:17filwityou can see what those things are at a glance
00:56:33filwitbut when you start getting pages of code, you need to define what's going on
00:56:43Araqno my point is: the order is especially arbitrary for this example
00:57:01filwitoh i see
00:57:07AraqI pass 'c' first for consistency
00:57:34filwitso you can do: c.semExpr(n)?
00:57:44Araqsure
00:57:50filwitwell i was asking
00:57:55Araqbut you can't really read it as: "please context check n for semantics"
00:57:55filwitis that why you do it?
00:58:10filwitoh i see
00:58:17filwitbut see, that's a different problem
00:58:23Araqyes
00:58:32Araqit's a different *problem domain*
00:58:33filwitit should be: Syntax.check(c, n)
00:58:55filwitor something like: SyntaxUtils.check(c, n)
00:58:58AraqSemantics.check(c, n)
00:59:02filwitidk, something along those lines, yes
00:59:13Araqnah, that's absurd
00:59:21Araq"Semantics" is no person
00:59:26fowlfilwit: you come from java?
00:59:35filwitSemantics is the environment
00:59:55filwitin this case, it's a single entity, but and entity none the less
00:59:58fowlso
01:00:03fowlsemantics is a namespace
01:00:11filwitfowl: no - C# & D (some C/C++)
01:00:17filwitfowl: and javascript
01:00:19fowlthere is already a namespace (the module the function is in)
01:00:54filwitfowl. Yes, you can use modules as global objects, that is one way to do it
01:01:17filwitregardless, the use case (eternally) should be Semantics.check(..)
01:01:47filwitlook.. unless the programmer is really diligent with documentation, then you need good syntax like that (IMO)
01:02:04fowlsemexpr() isnt in a public api
01:02:08filwitfor the simple fact that someone who doesn't know your code, but wants to, is going to read it
01:02:36fowlfilwit if you had your way keyboards would wear out extra fast
01:02:42filwitfowl: I don't know exactly what someexpr() does... so it's hard to judge
01:03:12filwitfowl: millions of devleopers use C# and Java every day, and what I'm saying isn't half as bad
01:03:26filwitthe points is, there are reasons those languages got so popular
01:03:34filwitthey work well in big projects
01:03:36fowlfilwit: show an example of more than one function
01:04:07filwitfowl: what do you mean? what example would you like to see?
01:04:24Araqfilwit: C#/Java had lots of corporate money and were hyped
01:04:39filwitalso, i never meant that you should need to prefex "Semantics" if you are calling things from withint "Semantics"
01:04:50fowlString.match(String.uppercase(somestr), Regex.new("[A-Z]+", Regex.CaseInsensitive))
01:04:55fowlis that ideal^
01:04:57AraqC is very successful and only has function(a, b) syntax
01:05:05filwitAraq: that's true, but that's not all there is too it.
01:05:54filwitAraq: C was the original, it didn't have any competitors, AND it's still the best for low level stuff because it's easy to wrap for higher-level languages
01:06:11filwitthere's a reason people make higher-level languages though
01:06:13Araqfilwit: that's pure bullshit, sorry
01:06:24fowlthere is so much more noise than somestr.uppercase.match(re("[A-Z]+", re.caseInsensitive))
01:06:29AraqC had lots of competitors
01:06:41filwitAraq: no need to apologize. i'm not offended that you have a different view :)
01:06:52Araqand did slowly win over the alternatives
01:07:08Araqin particular on the PC were Pascal and Basic were strong
01:07:09filwitAraq: and you're right, C did have a lot of compeditors, i misspoke on that
01:07:31filwitAraq: so the reason C got big was due to other reasons
01:07:35Araqand it's still crappy for low level stuff
01:07:48filwitfowl: sorry, one sec
01:07:59Araqmy cpu has overflow flags for a start...
01:08:15AraqC can't access them.
01:08:20filwitAraq: but not because of it's function call ABI
01:08:59filwitC has it's problems, but having a extremely simply syntax is good for wrapping into higher-order things, that was my only point
01:09:22AraqC has a quite complex syntax
01:09:36Araqwith lots of problems
01:10:51filwitfowl: like I said before, regular expressions is a justifiable place for UFCS
01:11:13filwitAraq: sure, but not it's function calling convention, like you pointed out
01:11:21filwitand that's all you really use when binding to the language
01:11:25filwitwell.. not really
01:11:32AraqC is also only simple if you're ignorant about it :P
01:11:39filwityes
01:12:31filwitanyways, i think we can agree that "C does it" isn't a good reason for anything.. but it's popularity was, IMO, due to other factors than it's syntax
01:12:52filwitC is "you get what you see"
01:13:04filwitso it makes sense driver/OS developers where attracted to it
01:13:39AraqC is "you get is what you see" until you turn on the optimizer
01:14:10Araqsorry, it's just absurd to say that C#/java are popular because of obj.f(x) syntax
01:14:25filwiti didn't say that exactly
01:14:27AraqC is popular despite lacking it then?
01:14:48Araqand Delphi is unpopular desipite it got it?
01:15:12filwitno, you're putting to much into my words for one
01:15:31filwiti didn't mean that C#/Java's only reason they are popular is due to their syntax
01:16:13filwitbut they do work well with larger projects because of the library names
01:16:33filwitthat's more of a personal experience statement
01:16:56filwitin my experience, many people have reported C# and Java as easy to use
01:17:06AraqIME they don't really work well with larger projects due to reflection
01:17:30Araqthanks to reflection even the simplest refactorings cannot be proven correct
01:17:56Araqbut I know nobody cares about correctness anyway
01:17:56filwithow is reflection a problem?
01:18:03filwitmaybe i don't know what you mean by that
01:18:12filwityou mean the ability to reflect on types?
01:18:20filwithow would that be a problem?
01:18:57Araqit's a major PITA as many frameworks for Java/.NET use reflection for everything
01:19:11filwitaahhh i see
01:19:24filwitand they search for speficic variables by name
01:19:31filwitand that breaks when you refactor something
01:19:32Araqfor instance, yes
01:19:50filwitthat could be a problem with Nimrod's macros...
01:20:05filwitdon't they also have access to the variable names?
01:20:15filwitit just depends on how you code things at that point
01:20:23Araqno really
01:20:52Araqwhen you rename and the macro depends on to the var's name, a compiletime error is much more likely
01:21:03Araqit depends onto what the macro does though
01:21:17Araqbut it's MUCH better than C#'s reflection
01:21:22filwitso yeah, early error checking is great
01:21:39filwitand yeah, C# isn't very good in that way
01:21:47filwiti totally agree
01:21:57filwit(that's why i say i don't like it)
01:22:07filwit(and Java has even bigger problems)
01:22:28filwitbut just cause they get something wrong, doesn't mean other things aren't right
01:22:46Araqbut sorry, you're simply wrong
01:23:04filwitnah, i think descriptive names are importants
01:23:06Araqit's easy to navigate in a large C# project because you have IDE support
01:23:10filwitbut we can agree to disagree
01:23:31filwitIDE helps navigating across files
01:23:39Araqthe IDE support is much more helpful than the System.IO.File.ReadAllBytes hierarchy
01:24:23Araqheck, I don't know the hierarchy at all
01:24:45filwitwell System.IO.File.ReadAllBytes is obviously an exaggeration, and not even used in C#
01:24:48Araqit's some sort of intellectual masturbation that the IDE *hides* from me :P
01:25:23filwitand It's not even about Hierarchy (although I don't mind heirarchy like you do)
01:25:30filwitit's about method names
01:25:39fowlAraq: how come the interpreter cant support cast
01:25:40filwitthat's the only points i've been trying to make
01:25:58Araqbut the method names in Nimrod's public modules are fine :P
01:26:13filwit.len?
01:26:16Araqbut yeah, let's agree to disagree
01:26:19Araq.len is fine
01:26:23Araqpython uses it too :P
01:26:24filwitit's okay
01:26:39Araqand it's an abstract thingie anyway
01:26:58Araqhash tables have a 'len' too in Nimrod
01:27:22filwityes..
01:27:33filwitthat doesn't mean the name should be cryptic
01:27:43filwit.len isn't the best example
01:27:47filwitit's relatively clear
01:28:00filwit(still prefer .count, but whatever)
01:28:56filwitanyways... i need to continue making the HTML
01:29:01filwitwe have been talking about this for awhile
01:29:15fowlfilwit: macros and templates are fun
01:29:22filwitfowl: i know :)
01:29:34Araqfowl: it now supports 'cast' when you bootstrap with -d:useFFI
01:29:36filwitfowl: one of Nimrods best features for sure
01:30:06fowloh cool
01:30:25filwitfowl: im not really new to Nimrod
01:31:18Araqfowl: it can evaluate the SDL example at compile time, but the key events do not work
01:31:32Araqbecause the compiler computes the field's offsets wrongly
01:32:17fowli still get error: cast not allowed in safe mode
01:32:34Araqhrm, strange
01:32:48filwitoh Araq, i forgot. Are you a Windows or Linux guy?
01:32:49Araqdo you have the latest version?
01:33:02fowlbuilt with -d:release -d:usegnureadline -d:useffi
01:33:03fowlyea
01:33:17Araqfilwit: mostly Linux
01:33:28filwitgreat!
01:33:35filwitArch?
01:33:40filwit(like dom)
01:33:46AraqMint :P
01:33:54filwitahh.. Debian?
01:34:02filwitMint Debian i mean
01:34:08Araqyeah, rolling release or what it's called
01:34:30filwityeah okay. just wondering. I use Arch
01:34:47filwitbut my second choice would probably be Mint Debian
01:35:42AraqNimrod is in Arch's repositories, right?
01:35:55filwiti don't think so
01:35:57fowl-git is in aur
01:35:58fowli think
01:36:09dom96release and -git is
01:36:11filwitit's in AUR
01:36:16filwitso is Aporia
01:36:30Araq:O
01:36:45*Araq didn't know that
01:37:18fowli want to port SFML
01:37:23dom96oh cool. Schala created an Aporia PKGBUILD.
01:37:25fowlrewrite in nimrod
01:37:36fowlsomeone should help me with that (=
01:38:59Araqfowl: do you test 'cast' in the interactive mode?
01:39:25Araqcause it's still not allowed there then (I forgot to enable it)
01:40:52fowlis there some place up top where exceptions are caught because i keep getting exceptions that break the sessions and its really annoying
01:41:35Araqthere are 2 kinds of exceptions in evals.nim
01:41:45fowloh this is an internal error
01:41:48Araqreal nimrod exceptions and "fake" exceptions
01:42:27Araqthe "fake" exceptions are usually the painful ones
01:43:34NimBotAraq/Nimrod 87081dd Araq [+0 ±1 -0]: enable 'cast' in interactive mode (beware)
01:43:40Araqfowl: there you go
01:43:45fowlcool
01:44:00Araqbut the results can differ from the C backend :P
01:45:37fowlError: cannot map value from FFI [ERecoverableError]
01:45:51fowlcant recover from ERecoverable? :(
01:46:10Araqfix it
01:46:43Araqtry this:
01:47:03Araqtry: result = evalAux(c, n, {}) ... in tryEval
01:47:27Araq(try ... except ERecoverableError: )
01:47:48Araqbut that's no real solution
01:47:57Araqinstead you should create a bug report
01:51:39Araqgood night
01:53:47fowlnight
02:00:15*dom96 -> sleep too
02:00:16dom96bye
02:03:41*reactormonk quit (Ping timeout: 252 seconds)
02:08:04filwitbye guys, looks like eveyrone's ooff
02:08:11filwitheading out my self
02:08:15*filwit quit (Quit: Leaving)
02:25:33fowlwell initially my toolings with SDL in interactive mode is working
02:25:42fowli can poll events and they look sane
03:32:12*XAMPP-8 joined #nimrod
03:36:10*q66 quit (Remote host closed the connection)
03:52:21*reactormonk joined #nimrod
04:33:39*XAMPP-8 quit (Ping timeout: 248 seconds)
05:04:48*XAMPP-8 joined #nimrod
05:34:07*XAMPP_8 joined #nimrod
05:34:55*XAMPP-8 quit (Ping timeout: 260 seconds)
05:38:43*XAMPP_8 quit (Ping timeout: 248 seconds)
05:55:33*filwit joined #nimrod
05:55:48filwitworking html: http://reign-studios.com/nimrod/web/
06:04:08filwitwill talk to you folks about it tomorrow
06:04:11*filwit quit (Quit: Leaving)
07:01:56fowlsdl skeleton with continuations : https://gist.github.com/fowlmouth/4970500
07:42:51*gour joined #nimrod
07:52:57*Anaphaxeton says goodmorning to all!
08:28:59Araqhi Anaphaxeton
08:29:10Anaphaxetonhi Araq
08:29:14Anaphaxetonhow is dev going?
08:29:39Anaphaxetongo make an llvm frontend. you will become more famous!
08:30:00Anaphaxetonsomeone was asking me what general purpose language to use
08:30:03Anaphaxetoni said nimrod
08:30:09Anaphaxetonhe picked Go .....
08:33:19Araqit's an "llvm backend"
08:33:32Araqand no, we're not working on it
08:33:37AraqI started one once
08:33:50Anaphaxetonit is a frontend since it uses llvm as a backend
08:33:51Araqbut the advantages it would provide are very slim
08:34:00Anaphaxetoni am talking about marketing here
08:34:31Araqhey, we got a new website design
08:34:42Araqhttp://reign-studios.com/nimrod/web
08:34:48Araqhow about that for marketing? ;-)
08:35:20fowlhey Anaphaxeton
08:35:28Anaphaxetonhi fowl
08:35:34Anaphaxetonnice page and nice logo
08:36:46Anaphaxetonheh the wise words of knuth
08:37:09Anaphaxetonthabs dont work here!
08:37:13Anaphaxetontabs*
08:38:00Araqit's a design
08:38:17Araqmy name is misspelt too ;-)
08:39:12Anaphaxetoni thought such things could happen only to my websides
08:41:33AraqAnaphaxeton: Go doesn't even have generics
08:42:28Anaphaxetonhe is stupid
08:43:17Anaphaxetonwhen i will need a general purpose lang i will give nimrod a chance
08:43:28Anaphaxetonfor now i am trapped in the C world
08:43:36Araqyou should give it a chance for everything else too
08:43:58Anaphaxetonthat
08:44:01Anaphaxetonscripting?
08:44:05Anaphaxetonwhat*
08:51:53Araqyes
08:52:07Araqbut you can also use it with C quite easily
08:57:24*gour nods
09:01:36AraqI have to go, see you guys later
09:07:02*gour_ joined #nimrod
09:07:02*gour quit (Disconnected by services)
09:08:12*FreeArtMan joined #nimrod
09:12:22Anaphaxetonmorning gour_
09:18:58gour_morning Anaphaxeton
09:19:01*gour_ is now known as gour
09:19:29Anaphaxetonis there a lua-nimrod bridge?
09:20:41gourthere are, iirc, lua bindings
09:21:08goursee http://nimrod-code.org/lib.html
09:28:36*FreeArtMan quit (Quit: rm -rf /)
10:00:47*Anaphaxeton is innovating again
10:01:10Anaphaxetonit seems almost nobody knows about UEFI matters
10:19:13*fowl quit (Ping timeout: 248 seconds)
11:16:43*Anaphaxeton quit (Read error: Connection reset by peer)
11:29:01dom96morning all
11:54:53gourmorning dom96
12:01:12*q66 joined #nimrod
12:26:51*Anaphaxeton joined #nimrod
13:02:52*Anaphaxeton quit (Remote host closed the connection)
13:03:37*Anaphaxeton joined #nimrod
14:37:27*FreeArtMan joined #nimrod
14:44:37*FreeArtMan quit (Read error: Operation timed out)
15:04:37*Anaphaxeton quit (Read error: Operation timed out)
15:08:06*FreeArtMan joined #nimrod
18:07:16reactormonkmoooorning
18:10:11Araqhi reactormonk
18:25:46*filwit joined #nimrod
18:26:06filwitafternoon, people
18:26:28filwitdid you see the working HTML site I posted?
18:27:01filwitif not: http://reign-studios.com/nimrod/web/
18:27:05dom96hey filwit
18:27:09filwithi dom
18:28:28Araqhey filwit
18:28:40filwitso whenever you guys want to switch things over, I will help you understand the code and make more pages out of it
18:28:47Araqgood news: I still like the design :P
18:29:00filwitand i will give you the source art as well (Inkscape SVG)
18:29:12filwitglad to hear it, Araq :)
18:29:19dom96filwit: brilliant.
18:29:36Araqwell it's planned to switch with a new release
18:29:48filwitETA?
18:30:10Araq1-2 months I guess :-/
18:30:24filwitokay sounds good
18:31:03filwitin the meantime, i will zip up the source and send it to whoever (you and dom?) just let me know emails
18:31:51dom96email pm'ed
18:32:00filwitalso, i would encourage whoever is going to manage the code, to get familiar with it
18:32:07filwitokay, thanks dom96
18:33:03filwitthe site is pretty simple, (no JS or anything), so it shouldn't be difficult
18:33:43Araqfilwit: indeed, it's sweet, just looked at it
18:34:28Araqyou tested it in multiple browsers, right?
18:35:49filwiti've written enough websites to know what to avoid, but I haven't done extensive testings
18:36:14filwitit's one of the things i wanted everyone to help with (cause I'm to lazy to boot into windows and try it on IE)
18:36:38filwit(jk, I will just get to that later)
18:36:57filwitit's been tested on Chromium & Firefox (linux)
18:37:54dom96filwit: Adobe Browser Lab is your friend :P
18:37:59filwitmy only concern is IE7 and below (they do something funky with their box-model and positioning, but i forget exactly what is the PITA there)
18:38:20filwitdom96, at right, i forgot about that!
18:38:30dom96also browser shots.
18:39:14filwitI've always used IETester
18:57:34filwitokay, just tested in Adobe Browser labs and it appears to work well in all browsers
18:58:23filwitthough, Browserlabs kinda sux
18:58:33filwityou can't see rollover effects or anything
18:59:55dom96yeah true
19:00:04Araqsee you later guys, I'm watching a movie
19:00:12filwitk
19:00:14filwitbye
19:03:03filwitsent you the source, dom96
19:03:44dom96thanks
19:10:00gourfilwit: do you use some CSS framework for web design?
19:11:09filwitgour: no, handwritten
19:11:24filwitor are you asking about my naming ?
19:11:35gourno, just if you use some framework
19:13:05filwitoh, nope
19:13:24filwiti thought you might be asking cause some of the styles are "inlined" while others aren't
19:13:38filwit(and they're tabbed)
19:14:16filwitwhich i think makes finding the correct HTML-CSS much easier (and also corresponds to the Comments)
19:18:14*Anaphaxeton joined #nimrod
19:34:19gourfilwit: i suggest that you direct your perfectionism towards web-design and embrace nimrod as it is helping it to become better ;)
19:38:48filwitgour: i will definitely help with web-design and advertising when i can ;)
20:17:10*FreeArtMan quit (Read error: Operation timed out)
20:34:08gouri'll probably use generics & templates, but not so sure about macros and wonder whether you consider it's safe to start real-world project with the current version of nimrod or something significant may change before 1.0?
20:34:45dom96filwit: So how about that Aporia icon? ;)
20:35:55gour...iow, is nimrod production-ready?
20:49:38Araqgour: generics&templates work fine, there are a couple of bugs left, but I'd use it in production
20:51:36filwitdom96: we can get to that later :)
20:51:53filwitdom96: but for now, i need to start finishing stuff on other projects
20:52:05filwithow about next weekend we design the Aporia logo?
20:52:19dom96filwit: Sure. No worries, no need to hurry :)
20:52:42filwitMaybe Aporia can get it's own page on Nimrod-code.com
20:53:00filwitand we can put up some better screenshots and stuff, or something like that
20:53:24filwitalso, I have an idea for a good Aporia logo
20:53:27Araqfilwit: of course; I heard the nimrod guy and the aporia guy are good friends ...
20:53:34dom96yeah, that might be a good idea.
20:53:37dom96^^ haha
20:54:56dom96filwit: what's your idea?
20:55:19filwita rainbow butterfly
20:55:27filwitwith makeup on
20:55:44filwitbright red lipstick
20:55:48Araqfilwit: btw allowing 'var a.b = 0' in the grammar so that macros can process it can easily supported
20:55:50dom96lol?
20:55:57filwitand a quote bubble that says "it puts the lotion on it's skin"
20:56:10dom96Aporia is not homosexual :P
20:56:39filwit:P
20:56:41Araqfilwit had too much of this: http://perl6.org/
20:56:55filwitAraq: hmmm... one sec
20:57:05filwitLOL
20:57:08filwitexactly
20:57:11filwitthe perfect logo
20:57:25gourAraq: good to know...then we can better proceed sooner than later :-)
20:58:05filwitAraq: did you mean that you where adding in "var a.b = 0" syntax? or are you saying it's possible to adjust the compiler to handle it?
20:58:57Araqfilwit: the later
20:59:21Araqit's very simple to support it in macros
20:59:37filwitis 'var' a macro?
20:59:43Araqno
20:59:52Araqbut it's embedded in a macro then
21:00:29filwitso how would macro's handle it? what gets called when you define "var a.b" ?
21:00:46*dom96 hopes programmer's won't think aporia is a perl6 IDE
21:00:54Araqmymacro: var a.b = 0
21:01:05Araqcurrently this doesn't even parse
21:01:13filwiti see
21:01:13Araqso you can't process it in 'mymacro'
21:01:46filwitso you want me to prefix every var definition like that?
21:02:35Araqactually I'm just sayin' I'm willing to improve things to support your favourite notations
21:03:32filwitokay, I appriciate your willingness to work with me (I always have), but before you go off and start hacking away on that feature, let me figure some stuff out
21:04:00Araqoh don't worry, my todo list contains a couple of more important items :P
21:04:11filwitokay :)
21:04:49filwiti would love to work with your guys on a language (I mean actually work on the compiler and stuff with you), I've learned a lot about this and think I could contribute a lot....
21:04:52filwitthat said...
21:05:36filwitidk if it's really going to work. we disagree on some fundamental issues, and I place a lot of importance and readability, simplicity, and consistency
21:06:34filwitso I will look into Nimrod
21:07:27filwitmaybe I can create a Gist of Ideas I would like to have (with reasoned arguments behind them), and you can respond to that on your own time and let me know if a) they're possible in Nimrod, and b) you agree with them
21:09:03Araqsounds like a good plan, but we already know about (b) ;-)
21:09:43Araqone question is if you can live with a language that allows (a) but doesn't enforce it
21:10:13filwitmaybe, but we might agree on more points than we know, and a more forum-type discussion might help clear the air
21:10:29filwit^ that was in context of (b)
21:12:20gourdom96: considering there are no ncurses bindings and i'd like to be able to test custom-written libs, do you find appropriate to just use gtk for simple console app for testing purposes?
21:13:31filwitAraq: you mentioned writing my own parser for Nimrod. The problem there is that then I'm working with Nimrod's standard lib, which I want to change in some ways
21:14:13filwitAraq: and I'm not talking about abbreviations (though i would like to change that too), I'm talking about Object structure.
21:14:30filwitAraq: which means, I would basically be re-writing the standard-lib
21:14:42dom96gour: Well it really depends what kind of console app it is. I would probably create a binding for ncurses (for educational purposes ;))
21:14:49filwitAraq: at which point, i ask, "why not just make my own language?"
21:15:33gourfilwit: to save time and avoid NIH syndrome :-)
21:15:51filwitAraq: like I said, I would love to work with you folks. I hope you know I consider you one of the best developers I've ever met, you obviously know your code, and it works well for you.
21:15:55gourdom96: ok, i'll think about it
21:16:22filwitAraq: that's why I'm saying I need to look into some things.
21:17:12Araqfilwit: you could create your own parser & stdlib and would still save ~7 years of development work
21:18:22filwitAraq: a lot of that might be made up by LLVM and the fact that my language doesn't use a "GC"
21:18:25gourdom96: the final app will be full-fledged GUI, this one would be just to have some framework for testing custom libs which we need to write...besides writing those, i've to learn gtk to be able to do gui part
21:18:37filwitAraq: but i hear what you're saying
21:19:00AraqLLVM is overrated :P
21:19:31filwitit's not bad (granted i've only used it experimentally)
21:20:16dom96gour: Why do you need a GUI or CLI for testing your custom libs?
21:20:25filwitalso, it would only be one backend, wrapped in a modular Builder API that could support other backends (GCC, C-gen, etc)
21:21:07AraqI've heard things like these before ... :P
21:21:57gourdom96: it's not GUI or CLI...the end app is going to be GUI, but i consider that maybe having simple console app to test could be quickly put together before venturing into GUI interface
21:22:18filwitgour: use Glade and the GTKBuilder
21:22:42filwitgour: it is easy. all you do is set up the GUI with Glade, when connect signals functions
21:22:53gourdom96: maybe i should just write simple CLI app to test libs first and then design GUI
21:22:59filwitgour: look up Vala tutorials, then translate them to Nimrod
21:23:08gourfilwit: thanks. will do
21:24:09dom96gour: Another thing you could do is create a web interface, that may be easiest and also quite a nice feature in the future.
21:24:46gourdom96: i was thinking about it, but i'm afraid that html5 is not sufficient for such kind of app
21:24:52filwitdom96: but then he has to work with Javascript.... which is a sin
21:24:58gour:-)
21:25:17gouryeah, i'm not very fond of JS
21:25:18dom96Use the nimrod js backend :P
21:25:37filwitNimrod has a JS backend?
21:25:38gouri just wondered why such things exist
21:25:44filwitdid not know about that
21:25:47dom96filwit: yep
21:25:56goursomeone is going to write web apps in nimrod?
21:26:15filwitgour: it's possible apparently
21:26:33gouror mobile OS-es are tempting :-)
21:27:08Araqwe have examples for mobile OSes in the distribution
21:27:50*gour owns droid phone...will take a look
21:28:58filwitAraq: one other reason I'm playing around with my own language, is because I really want to see how well my var/ref/ptr memory model works out in practice.
21:30:16filwitAraq: I think it adds a lot of clarity to what is going on with the variables, and helps coders understand variables intended purposes
21:31:33filwitAraq: it also avoids a managed heap, so pointer access is more direct, which should be more effecient (on top of it not needing to scan for cycles... or scan in general)
21:31:57filwitAraq: obviously, I can't really try that out in Nimrod... well, I sorta coult
21:31:59filwitcould*
21:32:13filwitactually....
21:32:29filwitnow that i think about it.. Nimrod would be the best language to try it out in
21:32:36filwitcause I could define my own operators...
21:32:41filwithmm....
21:32:49filwitmaybe I will play around with that concept
21:33:50*gour --> sleep or some reading
21:33:54gour'night folks
21:34:01*gour quit (Quit: WeeChat 0.4.0)
21:34:01filwitbye
21:38:31Araqfilwit: "pointer access is more direct"? you don't need any indirection even in copying GCs...
21:38:45Araq*any additional
21:40:07filwitmaybe your GC is different than Ds. In D (I believe, though trying to get the reference of something), reference types are Type** not Type* like you would use in C/C++
21:40:22Araqnah
21:40:27filwitbecause a ref is just a ref to a pointer on the GC heap
21:40:38Araqthat's wrong
21:40:47Araqboth for Nimrod and D
21:41:11filwithmm... could you explain?
21:41:55filwitI've tried to get the values of things in D before, and had to go through and extra level of indirection compared to using a "int*" explicitly
21:42:21Araq'ref T' is translated into 'T*' in Nimrod
21:42:35Araqso is 'ptr T'
21:42:36filwitis the GC compacting?
21:42:39Araqno
21:42:53filwiti see
21:42:59Araqbut as I said, you don't need that in a compacting GC either
21:43:20Araqyou can patch every location that contains the old pointer value instead
21:43:25filwithow? if the memory moves and you have a reference to something... doesn't it get lost?
21:43:38Araqthe GC patches your pointers
21:43:43filwitahh.. you use shadow ref stacks?
21:44:05filwiti read your GC docs
21:44:07Araqwell my GC doesn't compact so it doesn't need to patch anything
21:44:11filwityou use Ref Counting?
21:44:20Araqkind of, yeah
21:44:54Araqit's based on RC, but much more complex
21:45:05filwitso basically, the GC is a managed heap (of values) and a manged heap of shadow-refs ?
21:45:19Araqthere are no shadow-refs
21:45:27filwitmaybe i'm using the wrong term
21:45:38filwiti mean "reverse references"
21:46:00filwitaka, you maintain a pointer to each reference that the code creates
21:46:01filwit?
21:46:20filwitand then you scan through those pointers?
21:46:25Araqthere is no need for "reverse references"
21:46:44filwitah, no i see
21:47:22filwityou add a little padding in the managed heap, then use negative offsets
21:47:27filwitlike your docs say
21:47:36Araqyes
21:47:43filwitto get the RC/Typeinfo data for each reference
21:47:52Araqyep
21:48:00filwitthat makes sense
21:48:55filwitis there a reason you don't compact (eg, is it not needed now?)?
21:49:09filwitor have you just not added it?
21:49:38Araqthe current memory manager has some fragmentation problems apparently
21:49:50Araqbut I don't believe in compacting
21:50:29filwitwhy? if it's thread-local and incremental, it shouldn't cost to much..
21:50:35filwitplus, you could always disable it
21:51:05filwitnot accusing you of anything, just wondering why you don't like it
21:54:08Araqwell it would require precise stack marking for a start which we don't have yet
21:54:41Araqand it looks like quite some work to implement the pointer patching :P
21:55:43Araqplus most copying collectors traverse the graphs breadth first
21:55:58Araqwhich is not the natural traversal ordering
21:56:33Araqwhich means your "wonderfully efficient" compacted heap is compacted in the wrong order
21:56:52filwiti see, that makes sense
21:57:13filwitbut also seems like another reason I like my method of memory management
21:57:27filwit(not that mine gets compacted)
21:58:07Araqa copying GC for the C backend looks like it's as much work as azul's "pauseless GC" algorithm
21:58:58filwiti'm unfamiliar with azuls algorithm. is it comparable to my idea?
21:59:30Araqlol, no, not at all
22:00:00filwitokay. you know. what you just told me about the negative-offset thing totally fixes my problem i was having
22:00:09Araqnobody except you bothers with shadow reverse references :P
22:00:19filwiti don't need that anymore
22:00:21filwit:)
22:00:31filwitwell.. sorry scratch that
22:00:42filwiti do need that on Dynamic arrays
22:00:50filwitbut it's easy and fast
22:01:32Araqdo you know how many dynamic arrays the compiler creates when bootstrapping?
22:02:09filwitit doesn't seem that bad, i would pool the reference in a heap, and each array only maintains a slice reference
22:02:54Araq1 million, at least
22:03:42filwitand since i know that the refs will correctly remove themselves from the DynamicArrays when they're re-referenced, then I know that the managed shadow-heap only needs to be as big as the number of references the code creates
22:04:05filwitawesome.
22:04:12filwitthanks for your insights man
22:04:33filwityou totally fixed the problem i was having earlier about function parameter specialization
22:04:52filwiti thought i was going to have to do a lot of magic, but it looks like i wont need to
22:05:23filwitand each reference only needs 1 bit padding! (maybe 1 byte for cache optimization)
22:06:08Araqcould be fun to see how your design in practice
22:06:21AraqI don't think it'll work :P
22:06:35filwitdont rain on my parade!
22:06:39filwiti'm excited about this actually
22:06:50filwitit will work, i've thought about it alot
22:07:00filwitand you just fixed the only problem i was having
22:07:13Araqnice to hear
22:08:07filwitdude.. maybe I'll try this out in Nimrod (using macros and custom operators) then i'll show you :)
22:08:19Araqhave you also thought what it will do to the expressiveness?
22:08:41filwityes, it will make things consistent and more understandable
22:08:51filwitit's one of the things i like best about it
22:08:55filwit:P
22:09:13filwitplus, you always have 'ptr' which is unmanaged
22:10:24filwitthe reason I like it, is because then there's no confusion about what the code does... '=' is always a copy op (even for refs), '=>' is always a reference op
22:12:15filwitwhen you read someone's code, you know exactly what it's doing, and honestly the concept of "restricted refs" is actually good for keeping noobs from doing stupid things.. pus gives you opportunity for early compiler errors.
22:12:48filwitref r => null
22:12:56filwitr = 1 # compiler error
22:13:13filwit(in some cases)
22:14:44filwitoh, ps. Something i forgot to say about the whole "Console.write" vs "echo" thing.. is that I agree you should be able to just do: "write(...)"
22:14:58filwityou just need to put "using Console" at the top of the code
22:15:03filwitI also don't like imports
22:15:34filwiti think you should just pass the files into the compiler (or define file packages to pass in), and then just use Types
22:15:50filwitso if you define: type Foo in one file
22:16:11filwitthen any other file could use "Foo" without needing to "import foo.nim" type of thing
22:16:32filwit(or course you'd need a "prefer System.Foo" type semantic for large projects)
22:16:46filwitbut anyways... just wanted to add that.
22:17:38Araqok
22:36:45Araq"Note that we are not giving parameter names for most of the above operations. Parameter names are generally optional on the specification, and if the type names of the inputs are unique, the type names may be used to refer to the corresponding input, both at the call site and within the body of the operation."
22:36:54Araqsounds like a good idea ...
22:37:08*Araq is reading about ParaSail
22:38:27filwityeah, ParaSail looks interesting
22:38:54*filwit doesn't like it's syntax though
22:39:36filwiti also like how you can't pass to "out" vars into two separate parameters
22:43:39Araqthe pointer-free style of programming won't work though IMO
22:44:33filwitidk enough about large-scale concurrent code models to comment on that really
22:45:05filwiti would feel really restricted without pointers
22:45:38filwitbut maybe they cause a lot of problems with tons of threads...
22:47:26filwityou know Araq.. i have an idea on how we can combined forces
22:47:54filwitNimrod is so expressive, it's almost like you can write your own syntax inside it
22:48:07filwitbut it still puts just enough restrictions, that you can't really
22:48:51filwiti wounder if there's a way to make some sort of "custom keyword", "realiasing", and "restrictions" system into the core of Nimrod
22:49:21filwittherefor, "Nimrod" could be the fully expressive language that you like, but then I could basically use it to make a restricted sub-language
22:49:56filwiti'm just thinking about how to do that exactly, and I think there might be some merit to it
22:50:57Araqthe design idea is that you can't mess with the syntax too much; parsing is always possible without context
22:51:19Araqif you need something else, use string literals and compile time processing of them
22:51:58Araqyou can easily parse snippets in the string literal as Nimrod code via the macros API
22:52:43Araqit's unlikely to be ideal for your use case, but it's a good starting point
22:53:08filwitis '.' a macro/proc in Nimrod?
22:53:33filwit`.` **
22:55:27Araqnot yet ;-)
22:55:35Araqit's planned though
22:56:35filwitat that point, i could probably roll my own standard lib (which would just realiase Nimrods one) and design things to be "pure OOP"
22:57:09filwiti would just need to make a nimrod wrapper program which compiled with different default imports
22:59:56Araqthere is only 'system.nim' that's a default import
23:00:11Araqthere are no other default imports anyway
23:00:26filwityes but I would also need my own import path
23:00:32filwitto my standard lib
23:01:16filwitmy language would just be an "extension" or "repackaging" of Nimrod
23:01:34filwit(and we shall see who's get more popular!)
23:01:38filwit(jk)
23:01:50Araqjust edit the config file to change the import paths
23:01:57Araqor overwrite them per project
23:02:03Araqor per directory
23:12:43filwitanyways, Araq, I'm heading out
23:13:46filwitgood talking to you, even though I'm sure I annoy the crap outta you
23:13:54filwitlater!
23:13:59Araqyou don't
23:14:03Araqgood night
23:14:09*filwit quit (Quit: Leaving)
23:45:04*q66 quit (Remote host closed the connection)
23:46:00*fowl joined #nimrod
23:58:51*Anaphaxeton quit (Remote host closed the connection)