<<17-12-2012>>

00:25:52*apriori_ quit (Quit: Konversation terminated!)
05:05:46ZorAraq: ping
07:53:11*XAMPP quit (Ping timeout: 260 seconds)
08:02:58*XAMPP joined #nimrod
09:13:40*gour joined #nimrod
09:20:39gourmorning
09:23:09gouri was chatting with the guy working on modula-2 r10 spec/compiler yesterday and he mentioned that they replaced variant records in r10 with oberon-like extended types, so i wonder if this is same as nimrod's object types?
09:23:53gourin r10 it goes like: TYPE BaseType = RECORD a, b, c : INTEGER END; TYPE ExtendedType = RECORD ( BaseType ) d, e, f : INTEGER END;
09:28:28Araqgour: pretty much yes, it's called "inheritance"
09:29:05gouryou mean this example: TStudent = object of TPerson ?
09:29:13Araqyes
09:29:20gour:-)
09:29:28Araqand btw I know the Modula-2 guy ... ;-)
09:29:52gourheh, he is tirelessly working to revive modula-2, right?
09:30:13AraqZor: you keep pinging me when it's 5 o'clock in the night ...
09:30:24gourotoh, i wonder how have you manage to pack so many modern features in your language? i'm really impressed!!
09:31:32gourAraq: he made a good point that Ada is kind of C++ of Pascal, iow. Ada is too big...otoh, nimrod is modern language, compiler is available today, while R10 won't be ready (if) before mid 2013
09:31:58gourmoreover, size of modula-2 community does not seem to be much bigger than here :-)
09:32:05gour(at least, irc-wise) ;)
09:32:41gourmaybe Zor consider it's 5 o'clock in the morning :-D
09:32:57Araqthat's because modula-2 is dead :P
09:33:06*gour nods
09:33:40goursome people there told me about dylan/mercury...some does things in oberon(2)...
09:34:08gouri mentioned nimrod, although some believe that "there is no need for another imperative lang" :-)
09:35:01gouri went through the manual, but cannot say i grok generics/templates/macros, but there is plenty of things to do without them
09:35:37Araqthere is hardly ever a "need" for anything new, especially when it's about new programming languages
09:36:02Araqthere was no need for C++ either, C existed before
09:36:03gourright
09:36:22Araqthere is no need for Ocaml, ML existed before, etc.
09:39:27gourkoch is described as "Maintenance program for Nimrod", babel is, afaict, package manager, so what is build-system for nimrod projects?
09:39:59Araqthere is none, it's integrated into the compiler
09:43:46gourso, is it capable to e.g. build complete projects consisting of: included 3rd party C-lib, run c2nim on the header, build bindings, build custom libs written in nimrod, build gui application using those libs and build manual (html/pdf) from reST/Sphinx sources?
09:44:07Araqno :P
09:44:41Araqbut then what's the point? the 3rd party C-lib uses autoconf + make or scons or ...
09:44:44gourhuh...so what do you recommend for such use-case or you have something on your todo.txt?
09:45:10gourwell, in my case 3rd party lib just uses Makefile
09:45:49gourthe point is to have ability to completely build the project using one build tool
09:46:28Araqwell *I* would write a small program in Nimrod that executes what's necessary
09:47:07Araqand this script would be bound to the project
09:47:26Araq"one build tool to rule them all" -- I don't believe in that
09:47:30*gour quit (Disconnected by services)
09:47:33*gour_ joined #nimrod
09:48:04*gour_ is now known as gour
09:48:45*gour reads backlog
09:49:24gourwell, waf/scons/cmake...can do it, isn't it?
09:49:46Araqyes
09:50:09Araqso write some module so that scons/cmake support nimrod
09:50:25Araqbtw I used scons and will never touch it again
09:50:29gouryeah, nimrod support for one of those is required
09:50:44gourhe he
09:50:58gouri played a bit with waf as well
09:51:19Araqand the cmake guys can't even write a parser (wtf? whitespace before ';' )
09:51:26gourmaybe, tup would be more suitable for you...felix has its own fbuild, right?
09:51:47gourcmake 'lang' is beaut..err. horrible
09:52:58AraqI don't know 'tup' or 'waf'
09:53:02gouri understand, there are not so many bigger nimrod projects around requiring complete build tool, but we hope the time will arrive for it
09:53:16gourtup - http://gittup.org/tup/
09:53:46gourwaf is/was fork of scons trying to fix it when KDE was switching their build system and scons was too slow
09:53:59gournow, it's probably complete rewrite
09:54:20gourhttp://code.google.com/p/waf/
09:55:29Araqanything python-related is out of question :P
09:55:41gouri believe it would be quite easy to add nimrod support to waf, but have to investigate about tup...when considering ada, i thought GPS build system will be sufficient
09:55:51Araqso I guess, yeah, we need our own build tool :P
09:56:21gourwhy - "Nimrod combines Lisp's power with Python's readability and C's performance." :-)
09:56:49Araqoh it would of course use nimrod's syntax
09:57:07Araqin fact, it would likely be just a library for nimrod
09:57:13gouri also believe that something simpler/better than cmake/scons/waf is possible...will take closer look at tup, at least, as intermed. workaround
09:57:36Araqfowl created some DSL for building things
09:57:38gourhave you seen Bento? using declarative syntax similar to haskell's cabal?
09:58:05gourhttp://cournape.github.com/Bento/
09:59:33gourtup is mostly C
10:01:16Araqgour: http://forum.nimrod-code.org/t/67
10:04:06Araqthat's how it should be done for nimrod ;-)
10:04:30Araqhowever having a nimrod interpeter for that would be sweet
10:09:27*gour nods
12:41:33*apriori_ joined #nimrod
12:49:45apriori_btw., has there been any progress with proxies?
13:46:00Araqapriori_: well I played with a couple of ideas ...
13:49:20Araqmost promising seems to be to be able to overload the '.' "operator"
13:49:22*Trix[a]r_za is now known as Trixar_za
13:53:16apriori_yeah..
13:53:45apriori_question is.. would I be able to somehow get the string behind the '.' then..
13:54:01Araqof course ;-)
13:54:03apriori_if that'd be possible (or something similar), I could implement vector swizzeling easily
13:54:34AraqI'm aware :P
13:54:46apriori_btw.. if you happen to have a minute.. seems that I have found another bug with generic type aliases
13:54:52apriori_at least, it seems so.. I've no other idea
13:55:12apriori_https://gist.github.com/4318437
13:55:17Araqyeah I think there is 1 test left that doesn't work
13:56:07apriori_you won't find any real use of TMatrixArray and TVectorArray in there, besides the aliases.. but I'd prefer to be able to use them in converters etc.
13:56:24apriori_to save the constant typing of array[M, array[N, T].. which looks noisy :P
13:57:51Araqwell yeah, I don't mind it
13:57:57Araqso what's the problem?
13:58:13apriori_the error message is in the source comment
13:58:27apriori_when changing the StaticMatrix declaration to use any of the mentioned aliases, compilation will fail
13:59:06apriori_iterator `..`*[S, T](a: S, b: T): T {.inline.} =
13:59:07apriori_ ## An alias for `countup`.
13:59:09apriori_ var res: T = T(a
13:59:14apriori_the last line of the paste is system 1255
13:59:28apriori_hrm, it should have been:
13:59:31apriori_var res: T = T(a)
14:00:10ZorAraq: does nimrod have global constants (or just global variables with initializers for that matter)?
14:00:51apriori_Zor: http://nimrod-code.org/manual.html#global_782501908
14:02:13Zorso in the compiled C, where does the compiler put the actual initialization?
14:03:20Araqapriori_: yeah looks like a bug; my bet is the compiler is confused about range[0..1] vs 0..1 again?
14:03:39apriori_I have no idea
14:03:52AraqZor: the compiler emits 'init' functions that are inserted into 'main'
14:04:12Zorwhat do you do for shared libs?
14:05:41AraqZor: __attribute__((constructor))
14:06:12Zormakes sense, though do all the compilers you support have an equivalent of that?
14:06:26Araqon Linux, yes
14:06:39Araqon windows there are other means but I forgot :-)
14:07:18Zorwhat about os x?
14:07:43apriori_Araq: creating a bug report + gist link
14:08:36Araqapriori_: thanks
14:08:41AraqZor: http://stackoverflow.com/questions/9759880/automatically-executed-functions-when-loading-shared-libraries
14:08:50Araqworks on mac os X too afaik
14:09:30ZorI see
14:09:45Zordo you currently implement this stuff on windows or is that a todo thing?
14:09:56*gradha joined #nimrod
14:12:37AraqZor: DLLs have currently some issues with RTTI but apart from that it all works
14:12:49Araqon mac, windows, linux and bsd
14:13:18Araqwe can even emulate thread local storage for the dreaded macosx
14:13:31Araqbut I heard macosx finally supports thread local storage
14:13:35apriori_and freebsd :P
14:13:39apriori_If I'm not wrong
14:13:56Araqbsd implies freebsd ;-)
14:14:23apriori_I meant TLS
14:14:49apriori_but, yeah.. macosx is pretty much bsd'ish..
14:23:33gradhathe tup examples on their website are really wonderful, verbose and full of colors
14:24:17apriori_gradha: on whose website?
14:24:31gradhahttp://gittup.org/tup/ex_a_first_tupfile.html
14:24:52gradhathe nice thing is they work on an example and show colored diff-like output at each step
14:25:13gradhaso it's really easy to follow with the embedded code rather than whip out a terminal and start copying/pasting
14:27:22gourgradha: it seems also that adding Nimrod support to it is quite straightforward, unlike cmake/scons
14:30:27Araqgradha: you can do that with nimrod's documentation system
14:30:40Araqit only requires to know about undocumented features :P
14:31:09gradhaah, lovely undocumented features
14:31:28gradhaI could learn html too, I guess
14:32:02AraqI think you can do `text here`:mytag: and then you get in the HTML class="mytag" for the 'text here'
14:32:06Araqand then you can CSS it
14:33:17Araqoh and btw, documenting the documentation generator would be nice; please do it :-)
14:38:38apriori_Araq: and more bugs :P
14:38:53apriori_Araq: https://github.com/Araq/Nimrod/issues/285
14:38:54apriori_Araq: https://github.com/Araq/Nimrod/issues/286
14:39:34Araqapriori_: The code is working, if one replaces the call to isAnyFloat[T] with isAnyFloatT
14:39:45apriori_grr...
14:39:46Araqgithub ate your () ?
14:39:48apriori_damn markup
14:40:32apriori_grr.. no preview for edits :/
14:40:32Araqyou should really use a .compiletime proc instead of a template here ...
14:40:49*q66 joined #nimrod
14:40:49apriori_yeah, maybe.. but anyway the compiler shouldnt crash :P
14:41:04Araqof course
14:41:28apriori_but about the missing ().. should that be valid?
14:41:40Araqit shouldn't
14:41:58apriori_ok
14:42:01Araqyou can't invoke functions with 0 args without ()
14:42:18apriori_yeah, makes sense
14:46:48Araqgradha: you need to use your exported variables, then they should end up in the header file
14:47:06ZorAraq: yeah newer OS Xs have native TLS
14:47:18Zorclang supports __thread and everything there afaik
14:48:21Araqwe should change the default config then I guess
14:48:34gradhawill test that
14:48:51gradhanow I actually have a real case using it
14:49:56AraqI can fix it, but I'm too lazy to test it :P
14:50:10Araqor we live with the bug :P
14:50:19gradhahowever, I wanted to export globals to C, so they may not end up being used directly in nimrod
14:50:50Araqwhy would you ever want to do that?
14:51:06gradhaconvenience of having related stuff together
14:51:14gradhaI'm writing notification code from nimrod into C
14:51:21Araqfine, I'm fixing it then
14:52:39gradhait's not a priority, I'm using a workaround
14:53:09Araqtoo late :P
14:56:14gradhathis is definitely wrong, after cleaning the trashcan the filesystem reports 2GB less of free space
14:56:25gradhalooks like time for another reboot to keep sane
14:57:46apriori_Araq: ah well, another minor issue: https://github.com/Araq/Nimrod/issues/283
14:58:06Araqapriori_: I saw it, yeah
14:58:22Araqthe parser has some issues :P
14:58:27apriori_yeah
14:58:38Araqdue to its "evolution"
14:58:48apriori_hehe
14:59:05apriori_a few changes here and there.. its easy to overlook something
15:00:39Araqa parser generator would be sweet but there are none that support indentation based parsing :P
15:01:39Araqand it's still clean enough to pass as a spec *cough*
15:03:06Araqgradha: what do you have in mind with #265 ?
15:03:18Araq[10 NSMutableArray ...] wtf??
15:03:44gradhaI realized later the example is wrong
15:04:05gradhaah, no that part, that's what the current pragma generates
15:05:43gradhain objc you tend to have the alloc+init chaining, but there are also convenience class methods which return autoreleased objects
15:06:04gradhafor example, there's + (NSMutableArray*)arrayWithCapacity:(int)amount;
15:06:25gradhanot sure if that's the real prototype, but should be similar
15:06:50Araqhe he, nobody can remember objc's clusterfuck of a syntax
15:07:00gradhathe current objc pragma presumes the first parameter is the self object, which fails in these class methods
15:07:45apriori_I know why I never ever touched Obj-C .. after only taking a look at its wikipedia page
15:07:54apriori_stringByAppendString.. wtf? :P
15:08:12gradhasince I learned of emit and played with some macros you can close the issue, I'll come back and fix it myself if I need to
15:08:28gradhaor ask later for help if I'm unable to
15:08:55gradhaAt the moment I have a helper file with:
15:08:56gradhaproc newNSMutableArray*(capacity: int): NSMutableArray {.
15:08:57gradha NoStackFrame, inline.} =
15:08:58gradha ## Returns a new mutable array with the specified capacity.
15:08:59gradha {.emit: """return [NSMutableArray arrayWithCapacity:`capacity`];""".}
15:09:40gradhaso it works, and that's enough for me at the moment, close the issue if it's distracting
15:11:15gradhaBTW, I can confirm you that declaring an exported global in nimrod and using it in nimrod generates its extern
15:12:27gradhaso https://github.com/Araq/Nimrod/issues/277 would only be an issue for nimrod code exporting globals to be used from C
15:13:33gradhaapriori_: the naming rules of objc were written by a schizofrenic who contradicts itself
15:13:47apriori_gradha: hehe
15:13:48gradhalike "please write code to 80 columns", then "please name methods with at least 80 characters or more"
15:14:48gradhaand their indentation is really fucked up, with xcode borking it every time I try to use it, mixing spaces/tabs and who knows what else
15:15:05apriori_then it'
15:15:10gradhanot even their starting templates have clean "only spaces" or "only tabs"
15:15:13apriori_then it'll look like the code of my professor :P
15:16:13gradhaI've just learned to silently walk away from anybody claiming their naming conventions are good
15:19:07Araqgradha: I fixed #277 anyway
15:19:22gradhacool, I was just going to ask for a related feature
15:19:27Araqand now I'm looking for the struct body bug
15:19:40Araqbut can't find the bug number :P
15:20:03Araqthese bugs really need to be grouped by frontend/backend at least
15:20:06gradhahttps://github.com/Araq/Nimrod/issues/238 ?
15:20:18Araqyep that's it
15:29:18gradhaI'm wondering if you can transform nimrod literals directly to objc literals, say I have code like "var a = objcLiteral("test")" which turns into "NSString *a = @"test";"
15:30:12gradhaI have new objcLiteral implemented as a proc emitting a call to a new NSString
15:30:29AraqI don't think you can do that
15:32:17Araqoh wait, maybe you can :P
15:33:27Araqtemplate objcLiteral(x: cstring): expr = {.emit: "@`x`".} # try this
15:33:37Araqbut .emit can't be an expression I think
15:34:22gradhain the case of globals it doesn't think it would work either, it seems the global is declared and initialized somwhere in nimrod's main
15:34:39gradhas/think/look
15:36:12Araq#define OBJC_LIT(x) @x
15:36:48Araqproc objcLiteral(s: cstring): NSString {.importc: "OBJC_LIT".}
15:37:18Araqbut I dunno if objective C's preprocessor allows that
15:42:59gradhaif it's for the c preprocessor I'll find out
15:48:14apriori_meh :/
15:48:16apriori_Error: ambiguous call; both vector.inverse(matrix: TMatrix3x3[T]): TMatrix3x3[T] and vector.inverse(matrix: TMatrix2x2[T]): TMatrix2x2[T] match for: (TMatrix2x2[float]
15:48:39apriori_seems like an OR error
15:50:43gradhaAraq: ok, the OBJC_LIT trick works if you define it as OBJC_LIT(X) (@"" #X)
15:51:01gradhathat performs a concatenation of the parameter as a literal to the empty literal, so it works out
15:53:30Araqgradha: cool :-)
15:53:43gradhathat's for the objc version, however, nimrod generates the following line in the final objc code
15:53:44gradhaN_NIMCALL(NSString*, OBJC_LIT)(NCSTRING s);
15:53:49gradhawhich doesn't make much sense
15:54:13gradhaI guess it's doing an internal prototype definition of the proc declared in another module
15:54:32Araqadd 'nodecl' to the 'importc'
15:54:51Araq(thought it was obvious :P )
15:55:43gradhaok, works now, but I have to {.emit.} the #define everywhere I'm going to use it, right?
15:58:13gradhaI would need something like the contrary of nodecl to have the #define appear in all the generated code by nimrod which tried to call the objcLiteral proc
15:59:03Araqgradha: patch nimbase.h instead
16:00:43Araqand instead of 'objcLiteral' you can use proc `@` ... :DD
16:01:01gradhayeah, I was going to do that after it was obvious what I meant
16:01:06Araq var x = @"objc string literal" # should work then
16:01:13gradhajust like the sql from db_sqlite
16:06:06Araqapriori_: the compiler really dislikes your 'array' solution as it's a structural type
16:06:13Araqand you want a nominal type
16:06:24AraqI really think the wrapper object is a good idea
16:12:33dom96hello
16:13:47gradhastill alive?
16:13:55Araqhi dom96
16:14:07dom96gradha: barely.
16:14:45*dom96 wonders if he should try to finish his game for the LD Jam
16:22:26apriori_Araq: the test case also fails if you replace the array by a simple int
16:22:38apriori_Araq: so I think its really about the partial specialisation
16:23:10Araqsure, just sayin'
16:23:30Araqwe have no partial specialisation in overloading resolution :P
16:23:40apriori_too bad :P
16:24:45Araqit's suprising how far you get without it though :P
17:03:59apriori_yeah, well.. I for sure gonna need it for all the generic matrix algos :/
17:05:56Araqwell you need to decide whether you want to stress test the compiler or implement a useful library :P
17:06:17Araqand whether it's about 4x4 matrixes or about big matrixes
17:06:28Araqgeneric code doesn't cut it
17:06:35apriori_usefullness is decided by api design, which is decided by working advanced features :P
17:06:58apriori_you for sure dont wanna specialise the code for every size and value type combo
17:07:24Araqthat's true
17:07:38Araqbut Gaussian elimination requires efficient row swapping for instance
17:07:40apriori_anyway.. gotta go now.. need to go to a super market
17:07:55apriori_bbl
17:07:59Araqbye
17:08:01*apriori_ quit (Quit: Konversation terminated!)
17:47:14gourwhat is the status of 'func may become a keyword and syntactic sugar for a proc with no side effects' ?
17:53:11Araqpretty much a dead idea
17:53:39gourhuh...why
17:53:50Araq'noSideEffect' is not that restrictive and we have a more elaborate effect system now
17:53:51gouryou don't like nosideeffects?
17:54:14gourso, it's possible to achieve the same thing in another way?
17:54:44Araqyes, that already exists: proc p() {.noSideEffect.}
17:56:16Araqand the list of effects can now be more fine-grained
18:04:24*gradha quit (Ping timeout: 256 seconds)
18:26:22gourgreat
19:18:37reactormonkAraq, maybe move the code to math.nim?
19:18:39*gradha joined #nimrod
19:18:44gradhaAraq: moved to elif for https://github.com/Araq/Nimrod/pull/276
19:19:39Araqreactormonk: that doesn't work either
19:19:48reactormonkAraq, fine
19:20:30Araqgradha: shouldn't it be: (libc.so.6|libiconv.so|libiconv.dylib) for mac os x?
19:20:36*FreeArtMan joined #nimrod
19:20:58AraqI think it's often the lib*.so on mac
19:21:11gradhareally? I have no idea
19:21:49Araqwell I thought so because it's bsd based
19:22:10gradhadoesn't hurt to put all of them
19:22:12Araqbut stack overflow says it's libiconv.2.dylib
19:22:44gradhaI have /usr/lib/libiconv.2.4.0.dylib
19:22:50gradhathen /usr/lib/libiconv.2.dylib
19:22:55gradhaand the generic /usr/lib/libiconv.dylib
19:23:03Araqalright
19:23:23gradhawhat does libiconv.dylib do on linux?
19:23:36Araqit will simply fail to load that
19:23:54Araqbut slightly increase the code size ;-)
19:24:08gradhaterrible
19:24:28Araqindeed
19:24:39gradhawell, on ppc macosx you might need other names for libiconv, but first you need to find ppc macosx nimrod users
19:25:25Araqin retrospect ... using dlsym as the primary import mechanism was not the best idea :P
19:25:43dom96there used to be one person that used a ppc mac IIRC
19:25:52Araqexcept for all the other solutions :P
19:26:15gradhamy mother has a ppc, I could try nimrod on it these xmas
19:26:31Araqppc macs are dead anyway
19:26:39Araqbetter spend the resources on something else
19:26:50gradhaeating!
19:27:09AraqDOS support!
19:27:20dom96RISC OS support!
19:31:07gradhaso what is keeping us away from DOS support? Any open github issues?
19:31:34Araqnobody has DOS lying around
19:31:52Araqplus we have some filenames longer than 8 chars now
19:33:15dom96I for one think this is a serious issue that must be addressed as soon as possible.
19:34:17Araqchecking if my haiku port works looks like more fun ;-)
19:34:34dom96indeed
19:34:41Araqbut my haiku vm can't access my harddisc nor the internet
19:35:17gradhais that a limitation of haiku or the vm?
19:37:11Araqthe vm I think
19:38:21AraqI'm quite sure the haiku guys do know about the internet
19:42:33dom96Are you using Virtual Box?
19:42:50Araqyes
19:43:03dom96Might need to enable internet in your VMs properties
19:44:22Araqbut I have
19:46:15dom96Dunno then
19:46:45*FreeArtMan quit (Ping timeout: 265 seconds)
19:48:48Araqbtw gradha
19:49:06gradhayep
19:49:14Araq#278 was not what I had in mind :P
19:49:40AraqI thought about adding a flag to 'load' that determines if missing keys should be an error
19:51:02gradhadifferent people want different things all the time
19:52:20gradhawith that flag you would be aiming for something more serious like google protocol buffers and similar systems, right?
19:52:40Araqlol
19:52:57Araqthat would be a different module ...
19:53:19gradhayeah, I mean, saying "this has to match all fields" and rigid stuff like that
19:53:26gradhadoesn't xml solve that? the rigidness...
19:53:43Araqcan't think of anything that xml "solved" :P
19:54:34Araq"The essence of XML is this: the problem it solves is not hard, and it does not solve the problem well."
19:54:58gradhaI thought it was more like "XML is like violence, when it doesn't solve the issue, add more"
19:56:23gradhaanyway, what you suggest is nice, but I would still separate serialization from validation
19:56:36gradhaeven if the json loads, it doesn't mean its values are right/trustworthy
19:57:53Araqbut for forwards/backwards compatibility we need: ignoreMissingKey and ignoreAdditionalKey
19:58:21Araqand marshal.nim should support that, it's pretty easy to do
19:58:39*FreeArtMan joined #nimrod
19:58:49Araqonce you got the object out of marshal.nim you can still validate your invariants
19:58:57Araqthat's not part of marshal.nim
20:06:10*Trixar_za is now known as Trix[a]r_za
20:08:44*Vladar joined #nimrod
20:45:54*FreeArtMan quit (Read error: Operation timed out)
21:02:21*gour quit (Quit: WeeChat 0.3.8)
21:26:15*Vladar quit (Quit: Leaving)
22:37:36gradhaahaha, friendly reminder
22:37:50Araqwhat?
22:38:07dom96haha
22:38:16gradhajust got the email from github about linguist
22:38:23dom96Araq: What I just posted on the linguist issue :P
22:38:25Araqah yeah
22:38:45dom96Next it will be "Moderately hostile reminder"
22:38:46AraqI don't check my email that often anymore now that I get so many bug reports :P
22:41:26gradhaI filter all github mails to an IMAP folder so it doesn't get annoying with mailbox clutter
22:41:57Araqthat would require to use a proper email client ;-)
22:43:11gradhait's done at the server, so even the crappy mac email client works fine
22:43:37gradhain fact, I have to explicitly click on the imap folder for the email client to show the count properly...
22:44:51gradhapff, so many years and we still have not proper email, no wonder people flock to social networks
22:45:43Araqyeah they use social networks because they were dissatisfied with their email clients ... XD
22:46:21Araqand I thought it's because most people are stupid :P
22:47:01Araqthough pretty much by definition they're in fact mediocre ...
22:47:01gradhathe amount of people I know who use facebook instead of email is rather large, and sad
22:49:03gradhaok, there you have it http://dl.dropbox.com/u/145894/t/nimtodo.mp4, https://github.com/Araq/Nimrod/pull/288
22:49:04dom96well to be fair, it's more natural. i.e. you type in a name, you get the picture of your friend immediately allowing you to confirm visually that you are talking to the right person.
22:49:16dom96Instead of having to remember silly email addresses :P
22:49:41gradhaoh yeah, changing email address is like a nightmare for some people
22:50:25dom96gradha: omg, that is awesome.
22:51:01gradhathanks, even though it looks crap
22:51:22dom96what!? It looks amazing.
22:51:36Araqmy browser doesn't like mp4 :P
22:51:45gradhawell, the UI is just the basic "here's what you get for nothing" look
22:51:46dom96Araq: Download it and watch it in vlc or w/e
22:52:04gradhaAraq: oh man, and here we were talking about people using facebook to email
22:52:42gradhawhat is really nice is that I didn't have to do a single change to the backend
22:52:57gradhawhich of course shows off as a brain damaged logic state global variable, but eh, it works
22:53:23AraqI don't mind global variables
22:53:31Araqthey are often the lesser evil
22:53:31dom96how do you store the data on the iPhone?
22:53:39dom96are you still able to use sqlite?
22:53:43gradhathe backend uses sqlite, so that
22:53:48gradhaandroid should too
22:54:02gradhaon android you have fancier sqlite-like database for sharing between apps
22:54:07gradhaand on ios you have coredata for icloud sync
22:54:17gradhabut both require non-sqlite interfaces
22:54:28gradhaso it's not easy to do anything portable
22:55:26gradhain theory you could write a full featured storage layer for both if you restrict yourself to an orm interface
22:56:22gradhayuck, those checkboxes are so annoying, I've used unicode chars and they look different on each damn iOS version
22:56:29Araqgradha: do we really need all these .png in repository of the nimrod *compiler* ?
22:56:29gradhashould have used a png
22:57:07gradhaI don't mind storing this in a separate github project if you prefer, I can understand examples could grow unbounded then
22:57:19Araqindeed
22:57:46Araqthe example is good enough as it is, just add a link to the up to date fancy feature rich example
22:58:02gradhaok, I'll close the pull request with a link to the project when I do
22:58:09Araqexcellent
22:58:23Araqand register the example on babel please
22:58:34dom96hrm, looks like it still uses a lot of Obj C code still though, I guess Nimrod can't replace everything?
22:58:35gradhagood idea
22:58:58gradhawell, you *could* try to write everything in nimrod, but it's not my style
22:59:09dom96i see
22:59:15gradhawhen I implement the android version I want to go full java/xml
22:59:18gradhafor maximum PAIN
22:59:30gradhaotherwise, where's the fun?
22:59:52gradhabut yes, a nice abstraction could be provided to write full nimrod apps, at least on android
23:00:16gradhaIIRC it's from android 2.2 where you can build full c++ apps without java
23:01:24gradhathe NDK provides some hooks into the typical life cycle and you can implement those, previous to that you are forced to write a java app which calls C++ through JNI
23:02:00gradhaI guess nobody uses android 1.5 any more, so the full NDK would be fine
23:02:37fowli wrote an alternate syntax for c++
23:03:27fowlhttps://github.com/fowlmouth/cpptranny
23:03:55gradhaexcellent name
23:04:58fowllol
23:05:18Araqfowl: cool stuff ;-)
23:05:21gradhawait, doesn't their proposal make C++ not C++?
23:07:11gradhanice quotes "Most significantly we have rejected the "failed experiment" of the C declaration notation, in favour of a more Pascal-like approach."
23:07:40fowlgradha: its still c++, just readable c++
23:08:27gradhawon't compiler people drag their feet to support it?
23:09:00gradhaI still remember so many projects restricting themselves to a c++ subset due to compiler support it was not funny
23:09:08dom96gradha: You might have to hold off with adding this to babel, as currently only libraries are supported, and as far as I can see this is technically an app :P
23:09:23gradhadom96: sure
23:09:50fowlgradha: cpptranny outputs c++, no compiler needs to be changed
23:12:48gradhaI wonder if undestanding specs template instantiation error messages from the compiler is going to be funnier than just with plain c++
23:13:15Araqfowl: argh, why did you write it in ruby? :-(
23:16:54*gradha quit (Quit: gradha)
23:17:15fowlAraq: because i failed at writing a nice parsing dsl
23:17:23fowlim going to take another stab at it though
23:19:08Araqyes please
23:19:25Araqit would be a killer application of nimrod's macros
23:21:36*XAMPP quit (Ping timeout: 272 seconds)
23:23:13fowli dunno if id use macros for it
23:23:26fowli think closures would be better
23:24:05Araq*shrug* macros would be faster ;-)
23:24:25Araqgrammar:
23:24:42Araq rule "x <- a | b": ...
23:26:16fowlyou saw my first attempt right?
23:26:53Araqnope
23:28:39fowlhttps://gist.github.com/3851985
23:29:32Araqwell? what's wrong with it?
23:29:52dom96oh dear, the pygments lexer chokes on that
23:30:31Araqyeah that too
23:31:10*dom96 makes a pygmentslexerbugs folder
23:31:10fowlAraq: the design is flawed
23:31:28Araqwhy?
23:32:38fowlpparserexpr and prule should be merged
23:33:14Araqmaybe
23:33:34Araqthe bigger issue is that you use a simple loop that tries all possibilities ;-)
23:34:05fowlyea im not proud of that either >_>
23:34:06Araqyou should implement some parser generator algorithm like LL(1)
23:34:19fowlnooo do not want something that generates code
23:38:27Araqmacros generate code ... :P
23:38:56Araqbut yeah just build on Nimrod's PEGs instead
23:39:17Araqwhich really don't support parsers for now
23:39:59Araqas you can only validate data with them, not build parse trees