00:04:18 | * | onionhammer1 joined #nim |
00:06:21 | * | onionhammer quit (Ping timeout: 264 seconds) |
00:14:06 | * | zarthur joined #nim |
00:15:59 | zarthur | @mratsim loopfusion looks sassy :-) Thanks! |
00:16:52 | * | arthurz quit (Ping timeout: 240 seconds) |
00:21:23 | * | MJCaley joined #nim |
00:25:46 | FromGitter | <mratsim> :) |
00:31:46 | * | yuicatpq joined #nim |
00:31:49 | * | yuicatpq quit (Client Quit) |
01:03:11 | * | leorize joined #nim |
01:15:15 | * | arecaceae quit (Remote host closed the connection) |
01:15:39 | * | arecaceae joined #nim |
01:20:33 | * | noonien quit (Quit: Connection closed for inactivity) |
01:54:01 | * | rauss joined #nim |
02:15:58 | * | rockcavera joined #nim |
02:26:57 | * | dddddd quit (Read error: Connection reset by peer) |
02:51:29 | * | MJCaley quit (Quit: MJCaley) |
02:53:09 | * | S1tiSchu joined #nim |
02:56:33 | * | SitiSchu quit (Ping timeout: 240 seconds) |
03:13:01 | * | SenasOzys_ joined #nim |
03:13:05 | * | SenasOzys quit (Read error: Connection reset by peer) |
03:42:24 | * | zarthur quit (Quit: Leaving) |
03:52:49 | * | Snircle quit (Quit: Textual IRC Client: www.textualapp.com) |
04:14:41 | * | endragor joined #nim |
04:44:23 | * | leorize quit (Quit: WeeChat 2.0.1) |
04:51:50 | * | smt` joined #nim |
04:54:22 | * | smt_ joined #nim |
04:55:41 | * | smt quit (Ping timeout: 256 seconds) |
04:57:57 | * | smt` quit (Ping timeout: 256 seconds) |
05:00:35 | * | smt` joined #nim |
05:04:33 | * | smt_ quit (Ping timeout: 264 seconds) |
05:06:21 | * | smt_ joined #nim |
05:09:51 | * | smt` quit (Ping timeout: 256 seconds) |
05:16:23 | * | SenasOzys_ quit (Remote host closed the connection) |
05:23:01 | * | smt` joined #nim |
05:26:17 | * | smt_ quit (Ping timeout: 256 seconds) |
05:28:44 | * | endragor quit (Remote host closed the connection) |
05:28:56 | * | endragor joined #nim |
05:47:29 | * | nsf joined #nim |
06:04:37 | * | r3d9u11 joined #nim |
06:15:29 | * | sklv1lq joined #nim |
06:17:31 | * | sklv1lq quit (Remote host closed the connection) |
06:20:28 | * | def- quit (Quit: -) |
06:23:14 | * | def- joined #nim |
06:38:48 | * | r3d9u11 quit (Remote host closed the connection) |
06:53:48 | * | rockcavera is now known as Guest62729 |
06:53:48 | * | tiorock joined #nim |
06:53:48 | * | Guest62729 quit (Killed (livingstone.freenode.net (Nickname regained by services))) |
06:53:48 | * | tiorock is now known as rockcavera |
07:01:01 | * | smt_ joined #nim |
07:01:26 | * | smt_ quit (Max SendQ exceeded) |
07:01:55 | * | smt_ joined #nim |
07:05:09 | * | smt` quit (Ping timeout: 264 seconds) |
07:06:25 | * | smt` joined #nim |
07:09:59 | * | smt_ quit (Ping timeout: 256 seconds) |
07:15:48 | * | BitPuffin joined #nim |
07:22:44 | * | yglukhov joined #nim |
07:33:03 | * | smt_ joined #nim |
07:37:05 | * | smt` quit (Ping timeout: 248 seconds) |
07:41:23 | * | jaco60 joined #nim |
07:42:00 | * | rokups joined #nim |
07:43:13 | * | Arrrr joined #nim |
07:51:59 | * | smt` joined #nim |
07:56:41 | * | smt_ quit (Ping timeout: 276 seconds) |
07:57:30 | * | Vladar joined #nim |
08:01:35 | * | smt_ joined #nim |
08:05:21 | * | smt` quit (Ping timeout: 248 seconds) |
08:07:39 | * | smt` joined #nim |
08:09:34 | FromGitter | <alehander42> it looks great @mratsim |
08:10:00 | * | leorize joined #nim |
08:11:46 | * | smt_ quit (Ping timeout: 264 seconds) |
08:32:15 | FromGitter | <alehander42> can anybody take a look at https://github.com/alehander42/area42/blob/master/parser.nim and say if the dsl looks too magical/too confusing |
08:32:50 | FromGitter | <alehander42> @PMunch did you use special operators for `*`, `+` etc in your parser libs, or you had more obvious operation names defined |
08:36:36 | * | biatagar quit (Client Quit) |
08:41:17 | FromGitter | <survivorm> @alehander42 <- doesn't look intuitive |
08:41:27 | * | floppydh_ joined #nim |
08:41:41 | FromGitter | <survivorm> Also, no terminals in the example, only regexp |
08:42:25 | FromGitter | <survivorm> Why do you need left_paren and right_paren as builtins? They are just ordinal terminals AFAIK |
08:43:13 | FromGitter | <survivorm> Ah, my bad |
08:43:24 | FromGitter | <survivorm> You do have terminals in the example |
08:43:42 | FromGitter | <survivorm> but what's the meaning of :? |
08:44:25 | FromGitter | <survivorm> parsing rules vs grammar rules? |
08:45:45 | FromGitter | <survivorm> Also, why reinvent the wheel? I think PEG DSL is pretty simple as it is |
08:46:25 | FromGitter | <survivorm> And not magical :) |
08:53:28 | * | sendell joined #nim |
08:54:20 | Araq | alehander42: IMHO grammar"""custom syntax here""" is the way to go for a parser generator |
08:54:52 | FromGitter | <mratsim> btw Araq, was something sstarted on `for expression`? |
08:55:11 | Araq | otherwise it always gets messy; see 'scanp' the better 'scanf' nobody can document |
08:56:14 | Araq | mratsim: I had the syntax working in a branch but the sem'check and how to design it is rather hard |
08:57:56 | FromGitter | <alehander42> @survivorm thanks, great points |
08:58:39 | FromGitter | <alehander42> I use left_paren etc as constants, as I just don't find constants generally as more robust (I can type the cyrillic ( for example and I wouldnt see it), maybe they're too verbose for a grammar |
08:58:46 | FromGitter | <alehander42> I just find* |
08:59:39 | FromGitter | <alehander42> so, the meaning of : is that `field:<rule>` assigns the subnode of rule to field in the resulting node |
09:00:18 | FromGitter | <alehander42> e.g. |
09:00:55 | FromGitter | <alehander42> in `typeDefinition => leftParen "type" ws types:join(typ, ws) rightParen` you'll get in the resulting tree a variant object of kind `Node.TypeDefinition' with field `types` which is itself a seq of nodes |
09:02:11 | FromGitter | <alehander42> that way you can specify how exactly you want the resulting tree for a rule to look which was always hard for me with other parsers (I had to manually write another converter pass) |
09:05:15 | * | smt_ joined #nim |
09:06:00 | FromGitter | <alehander42> I can see the thing with scanp , but I think my dsl looks a lot as a normal grammar definition, with only prefix `*` `+` instead of postfix and the field `:` `<-` builders |
09:07:01 | * | dddddd joined #nim |
09:08:21 | FromGitter | <alehander42> so basically the only thing I would change in a custom syntax would be to put `*` `+` as postfix |
09:09:06 | Araq | how do you get concatenation? that's the crucial syntactic element |
09:09:09 | * | smt joined #nim |
09:09:21 | * | smt` quit (Ping timeout: 264 seconds) |
09:09:24 | Araq | a b # a followed by b |
09:09:36 | Araq | a b | c d # what is the precedence? |
09:09:51 | Araq | a b |
09:10:06 | Araq | | c d # different precedence with a newline? |
09:10:37 | Araq | postfix + and * are not important IMO. |
09:12:44 | * | smt_ quit (Ping timeout: 276 seconds) |
09:15:59 | * | PMunch joined #nim |
09:17:09 | FromGitter | <alehander42> I can completely side step the issue by requiring inline `or` to be always in `()`: 90% of the time you'd want to label it to include it in the result, so you'd need it anyway (`field:(A | B)`) or to just put it in another rule, and in the edge cases, you can still `(nl|indent)` |
09:18:06 | FromGitter | <survivorm> @alehander42 good point on precedence |
09:18:23 | FromGitter | <survivorm> but the issue with <- stands |
09:18:37 | FromGitter | <survivorm> is it eq to `/` in PEG? |
09:19:16 | FromGitter | <alehander42> no, `<-` is like my `:` but it's equivalent to `field.add(<node>)` in a loop |
09:19:28 | FromGitter | <survivorm> hm |
09:19:32 | FromGitter | <alehander42> I can just use `:` again, I thought it might be more clear with `<-` |
09:19:38 | FromGitter | <alehander42> example: |
09:19:40 | FromGitter | <survivorm> not good |
09:20:13 | FromGitter | <alehander42> `*(types <- Type ' ' args <- Arg)` |
09:20:20 | FromGitter | <survivorm> i'd better go as field:[(grammar rule)*] |
09:20:31 | FromGitter | <alehander42> yes, exactly, that was my first plan |
09:20:43 | FromGitter | <alehander42> but you can have more than one node sequences for one `*` |
09:21:08 | FromGitter | <alehander42> in this case I want to collect both types and args in two different sequences |
09:21:13 | FromGitter | <survivorm> Didn't understood your point |
09:21:31 | FromGitter | <survivorm> make an example, please |
09:21:33 | FromGitter | <alehander42> how would I express with your syntax |
09:21:35 | FromGitter | <alehander42> `*(types <- Type ':' args <- Arg)` |
09:22:49 | FromGitter | <survivorm> `smt:[types: Type ':' args: Arg]`? |
09:23:07 | FromGitter | <survivorm> cause you still need a root id for it |
09:23:23 | FromGitter | <survivorm> like rule.smt[0].types |
09:23:42 | FromGitter | <survivorm> Or i didn't understood the example |
09:24:06 | FromGitter | <alehander42> not always, If I need a root id, I'd move it to a new rule, but in this case I'd want to directly fill the main node fields |
09:24:21 | FromGitter | <alehander42> so I get `rule.types[0]` and `rule.args[0]` |
09:24:41 | FromGitter | <survivorm> it's either `rule.types[array], rule.args[array]` |
09:25:12 | FromGitter | <survivorm> Ah, i see |
09:25:20 | FromGitter | <alehander42> still I agree I can use `types: Type` etc as in your example |
09:25:56 | FromGitter | <alehander42> I just thought it might be more obvious with `<-` that one is adding each singular Type to a group of types and not *assigning* it |
09:26:06 | FromGitter | <alehander42> but it's not so obvious hahaha |
09:26:26 | FromGitter | <survivorm> but still. it would be better as `*(types:[Type] ':' args: [Arg])` i think |
09:27:01 | FromGitter | <survivorm> like default the array with [], and then go on |
09:27:57 | FromGitter | <survivorm> from there you may go into {} structures too |
09:28:07 | FromGitter | <survivorm> then time comes :) |
09:28:17 | FromGitter | <alehander42> actually I think `*([types]: Type ':' [args]: ..)` |
09:28:46 | FromGitter | <alehander42> might be better, as otherwise `[]` will look like it's a grammar rule, and it's a constsruction rule |
09:30:25 | FromGitter | <survivorm> Good point |
09:31:35 | FromGitter | <survivorm> But you may think of nested hash-structures, if you'll need any. And nested arrays too |
09:31:53 | FromGitter | <survivorm> but still, [] are more convenient |
09:32:31 | FromGitter | <survivorm> or else, is shoud look like types.append: Type |
09:32:58 | * | xkapastel quit (Quit: Connection closed for inactivity) |
09:33:04 | FromGitter | <survivorm> which may actually look even better |
09:36:26 | * | SenasOzys joined #nim |
09:39:34 | FromGitter | <mratsim> @Araq, is there a way to get if a symbol is `var` / mutable. ⏎ ⏎ ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=5aaf85567685a046389cc5da] |
09:42:51 | * | smt` joined #nim |
09:43:14 | * | huonw_ quit (K-Lined) |
09:44:05 | * | huonw joined #nim |
09:46:23 | * | smt quit (Ping timeout: 256 seconds) |
09:46:43 | * | Trustable joined #nim |
09:48:10 | FromGitter | <alehander42> @Araq @survivorm maybe a custom syntax is cleaner indeed, still I might do a first version with a macro |
09:48:29 | * | leorize quit (Remote host closed the connection) |
09:50:52 | PMunch | mratsim, I tried with a "when compiles(a=<something>)" but that always fails. Appears a isn't visible within the compiles check.. |
09:52:08 | FromGitter | <mratsim> I guess we need a new magic then |
10:08:29 | dom96 | alehander42: what macro are you working on? |
10:10:07 | FromGitter | <mratsim> @PMunch, vote for me: https://github.com/nim-lang/Nim/issues/7366 :P |
10:10:25 | FromGitter | <mratsim> I think he is trying to translate Russian to Nim |
10:21:23 | FromGitter | <alehander42> @dom96 a parsing/ast construction macro, but I'll probably turn it into a custom format after whole |
10:23:39 | FromGitter | <alehander42> @mratsim well I certainly wouldn't translate French to Nim, I am saving that for my middle age crisis :D |
10:24:40 | FromGitter | <alehander42> midlife ? I accidentally sent myself to the holy roman empire I think |
10:27:56 | FromGitter | <survivorm> I doubt. :) I think that's medieval, or, maybe, i'm wrong |
10:29:44 | FromGitter | <alehander42> but seriously, french seems so hard. ⏎ yeah, I still confuse middle age with midlife, because in bulgarian midlife is literally middle age and middle ages is "middle centuries" :D |
10:30:22 | PMunch | Well you would say a middle aged man |
10:30:35 | PMunch | So it kinda makes sense in English as well |
10:31:51 | PMunch | And French isn't that bad once you know it |
10:32:05 | PMunch | But it is a lot different from English and other germanic languages |
10:34:13 | FromGitter | <alehander42> I guess so, but it just seems harder to get into (and full of so many weird rules, e.g. the numbers, the pronuncuation) |
10:34:38 | FromGitter | <alehander42> do you know French? |
10:35:18 | FromGitter | <alehander42> e.g. Italian basics seem way more obvious to me |
10:37:54 | PMunch | Yeah, I spent a year in Belgium. Plus I have some family in France so I actually get to use it from time to time |
10:38:47 | PMunch | The numbers are a bit strange yeah. But they kinda fixed that in Belgium with some new words instead of the whole "4 times 20 plus 10" thing |
10:39:25 | PMunch | The pronounciation as also super strange until you start to understand it. Can't really describe it but it makes sense once you know it |
10:39:30 | PMunch | More or less at least :P |
10:43:05 | PMunch | But yeah, I've heard that Italian is supposed to be easier to learn |
10:45:36 | FromGitter | <alehander42> :D I guess pronunciation is not more complicated than English, but I am just more used to it |
10:46:18 | FromGitter | <alehander42> interesting, glad that they're evolving the language in Belgium |
10:50:22 | PMunch | France is actually one of the few countries that has a prescriptive language counsel and not a descriptive one. Meaning that instead of seeing how the language is used and formalizing rules based on that, they set the formal rules and people are intended to follow them. |
10:50:45 | PMunch | So I don't think they will be switching to the new words for the numbers any time soon :P |
10:53:54 | FromGitter | <alehander42> oh no, design by commitee |
10:53:55 | FromGitter | <alehander42> :D |
10:54:17 | * | smt joined #nim |
10:56:22 | FromGitter | <alehander42> that seems not optimal, I've always loved how natural languages constantly change bit by bit, and even updating the official "rules" & vocabulary often |
10:56:30 | FromGitter | <alehander42> even defended updating* |
10:57:37 | * | smt` quit (Ping timeout: 248 seconds) |
11:02:01 | PMunch | I'm a bit of a mix tbh |
11:02:53 | * | dddddd quit (Ping timeout: 256 seconds) |
11:03:29 | * | dddddd joined #nim |
11:05:45 | * | Snircle joined #nim |
11:29:04 | zahary_ | guys, can I have some upvotes on this old question here: |
11:29:04 | zahary_ | https://stackoverflow.com/questions/116654/non-c-languages-for-generative-programming/31678589#31678589 |
11:29:04 | zahary_ | Nim deserves to be on the top :) |
11:30:51 | * | smt quit (Ping timeout: 252 seconds) |
11:37:35 | PMunch | zahary_, the metaprogramming in Nim really is one of the best |
11:37:46 | PMunch | A least for a procedural language |
12:03:05 | * | leorize joined #nim |
12:16:37 | * | craigger quit (Quit: bye) |
12:18:33 | * | athenot joined #nim |
12:19:08 | * | craigger joined #nim |
12:32:30 | * | allan0 left #nim ("WeeChat 2.1") |
12:34:52 | FromGitter | <dandevelo> I am looking at the htmlgen sourcecode ( https://github.com/nim-lang/Nim/blob/master/lib/pure/htmlgen.nim#L98 ) and I am not sure I understand what e refers to. On one hand, e is used for the varagrs parameters and on the other hand the first line specifies: let e = callsite() How does that work? |
12:41:47 | Araq | it doesn't. the 'let e' shadows the varargs parameter |
12:41:49 | * | vlad1777d quit (Ping timeout: 260 seconds) |
12:42:46 | Araq | this is just a hacky way of doing things. originally htmlgen used .immediate macros everywhere and 'callsite' is a workaround |
12:44:14 | PMunch | So the varargs passed in is just ignored? |
12:45:14 | Araq | yup |
12:48:00 | FromGitter | <mratsim> @PMunch @alehander42 the 4x20 word for 80 was due to merchants, like we have dozens in English. The Swiss also have their own word (different from the Belgians …) |
12:48:59 | PMunch | Aah, that makes sense |
12:49:00 | FromGitter | <dandevelo> @Araq It is interesting to me how the code actually works. I mean if I import htmlgen and do: echo h1(a(href="http://nim-lang.org", nim)) then it will output the proper thing |
12:51:22 | PMunch | Well Belgians use quatre-vingt for 80, but they have septante and ninante for 70 and 90 instead of soixante-dix and quatre-vingt-dix |
12:51:39 | PMunch | They had a huitante as well, but no-one really uses that any more |
12:51:50 | PMunch | What do the Swiss use? |
12:52:20 | PMunch | dandevelo, Araq, yeah how on earth does that work? |
12:52:21 | FromGitter | <mratsim> They use “octante” ;) |
12:53:26 | PMunch | Huh, that also makes sense I guess |
12:53:36 | PMunch | But do they still use septante and ninante? |
12:55:56 | Araq | let e = callsite() # hack because the indexing starts from 1 and we were lazy in porting this code |
12:56:25 | Araq | without it, the indexing would start from 0. that's all there is to it, maybe check callsite's documentation |
12:59:01 | PMunch | Oh right, callsite gives the AST. I've only used it with lineInfo to get the position of a call :P |
13:11:54 | * | Arrrr quit (Read error: Connection reset by peer) |
13:22:51 | federico3 | https://luxeengine.com/ interesting? |
13:23:57 | * | SenasOzys quit (Ping timeout: 265 seconds) |
13:25:03 | PMunch | Never heard of it before but looks interesting |
13:31:28 | * | SenasOzys joined #nim |
13:34:23 | FromGitter | <survivorm> For now it looks like great words, but what's under the hood? |
13:35:11 | Yardanico | c++ |
13:35:15 | FromGitter | <survivorm> Even the screenshots on the main page are obsure |
13:35:22 | Yardanico | and some unknown Wren language |
13:35:30 | FromGitter | <survivorm> Yeah |
13:36:13 | FromGitter | <survivorm> https://notes.underscorediscovery.com/game-engines-using-all-the-languages/ |
13:36:32 | FromGitter | <survivorm> Oh. My. Eyes. |
13:36:41 | FromGitter | <survivorm> The link style is awful |
13:36:53 | Yardanico | well it's more for #nim-offtopic :P |
13:37:05 | FromGitter | <alehander42> ah I hoped callsite can somehow show the ast around actual callsite , not only the invocation :D |
13:37:07 | Yardanico | but yeah, it would be cool to see someone make nim bindings to this engine :P |
13:37:26 | FromGitter | <alehander42> but that wouldn't make sense anyway, there are many callsites |
13:40:44 | FromGitter | <survivorm> @Yardanico Let's see the engine itself in beta. At least. That may well be a dead child project. Let's wait and see if it's worth a candles. |
13:40:59 | Yardanico | yeah, I'll sub to mail news |
13:41:36 | Yardanico | they have alpha src - https://github.com/underscorediscovery/luxe |
13:41:39 | FromGitter | <survivorm> We may hope you'll play with it then it gets a beta release? |
13:42:01 | FromGitter | <survivorm> May be it would be a killer-engine :) |
13:42:29 | Yardanico | Not really, I'm not into game development :) |
13:44:01 | FromGitter | <survivorm> 4 years and still in alpha... not very promising |
13:44:19 | FromGitter | <survivorm> and only one active contributor |
13:44:43 | Yardanico | well, you know, not all projects have a lot of main contributors :D |
13:45:04 | * | DarkArctic_ joined #nim |
13:45:35 | FromGitter | <survivorm> That's true |
13:45:53 | FromGitter | <survivorm> But i'm more about 4 years to alpha |
13:46:11 | FromGitter | <survivorm> It may not mean anything, but still |
13:46:21 | FromGitter | <survivorm> It's a little concerning |
13:47:14 | dom96 | You could say something similar about Nim... :) |
13:47:17 | * | fvs joined #nim |
13:47:31 | Yardanico | yeah, 1.0 could be released years ago |
13:47:34 | * | DarkArctic quit (Read error: Connection reset by peer) |
13:47:59 | * | DarkArctic__ joined #nim |
13:48:03 | Yardanico | but I mean it's good that it wasn't released in 2015 |
13:49:20 | FromGitter | <survivorm> You know, Nim situation is pre-prod for years, in my opinion |
13:50:01 | FromGitter | <survivorm> It's more about the perfection which Araq is trying to acheive |
13:50:42 | FromGitter | <survivorm> But i've got your point. Alpha may be even production ready |
13:50:56 | Yardanico | yeah, we can have 18.0 instead of 0.18.0 :D |
13:51:08 | FromGitter | <survivorm> It's more about self-esteem |
13:51:15 | Yardanico | A lot of projects use semver now, for example browsers |
13:51:28 | federico3 | it's like TeX version number converging to π |
13:51:45 | * | DarkArctic_ quit (Ping timeout: 256 seconds) |
13:51:50 | FromGitter | <survivorm> Personally, i preferred FF than it was 3.5 |
13:52:07 | FromGitter | <survivorm> and not 60.x |
13:52:15 | fvs | how does nim know where lib files are? Is this hard coded in compiler: ../lib |
13:52:33 | Yardanico | fvs, you mean .dll or .so or .dylib? |
13:53:05 | fvs | no, all the *.nim in /lib |
13:53:30 | Araq | fvs: it's --lib and --path in your config |
13:54:11 | dom96 | https://github.com/nim-lang/Nim/blob/devel/compiler/options.nim#L236 |
13:54:29 | dom96 | That's the code that finds the stdlib |
13:54:38 | * | leorize quit (Quit: WeeChat 2.0.1) |
13:55:22 | Yardanico | yeah, if you want you can write your own stdlib for niw :D |
13:55:28 | fvs | ahh, good t know - thanks |
13:55:36 | Yardanico | *nim |
13:56:55 | FromGitter | <ChristianWitts> That’s a really old alpha of Luxe, written in Haxe. The new version coming out soon is in C++, with Wren as the scripting language (basically Lua) although I would have been tempted to use terra-lang instead of Wren if it were my project |
13:58:32 | Yardanico | according to main contributor we will be able to easily add new languages |
14:00:01 | Araq | terra-lang, is that usable? :-) |
14:00:24 | Araq | has a most interesting design but it felt like "hmm I doubt this works out" :) |
14:02:20 | fvs | found an issue when compiling terminal.nim for android i.e. reference ctermid not found - this was for android 4.4, not sure if this is still an issue for 8.0. Howto issue pull request: when defined(android4)? |
14:03:19 | Araq | fork Nim, push to your fork, use the github UI to create a PR from your fork |
14:06:15 | * | qleda joined #nim |
14:08:57 | Yardanico | fvs, did you compile it to plain android? |
14:09:03 | Yardanico | I mean without terminal environments like termux? |
14:12:30 | * | SenasOzys quit (Remote host closed the connection) |
14:14:13 | * | SenasOzys joined #nim |
14:14:56 | * | smt joined #nim |
14:15:50 | * | ycavirp521 joined #nim |
14:16:29 | * | ycavirp521 quit (Client Quit) |
14:17:05 | fvs | Yardanico: nim c --cpu:arm -os:android |
14:17:12 | Yardanico | fvs, ah, like this |
14:24:09 | * | endragor quit (Remote host closed the connection) |
15:01:07 | * | DarkArctic__ is now known as DarkArctic |
15:04:08 | * | jddgzry quit (Client Quit) |
15:04:35 | * | jxy quit (Quit: leaving) |
15:07:27 | * | jxy joined #nim |
15:13:57 | * | dddddd quit (Ping timeout: 240 seconds) |
15:14:46 | * | dddddd joined #nim |
15:30:54 | * | hoijui joined #nim |
15:32:04 | * | athenot quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
15:38:24 | hoijui | i just read about nim, looks cool! :-) |
15:38:56 | hoijui | i installed nim, and tried to install aporia through nimble, but both stable and #head failed |
15:39:03 | hoijui | is that known? |
15:40:47 | PMunch | I think so. Aporia isn't being developed that actively any longer |
15:41:08 | PMunch | Most people seem to use VSCode, but you can use pretty much anything |
15:41:14 | PMunch | I for one use Vim :) |
15:41:39 | FromGitter | <alehander42> yeah, I use sublime and it also works fine for Nim |
15:43:13 | hoijui | ook :-) |
15:43:43 | hoijui | would be good to ... somehow reflect that online |
15:44:01 | PMunch | That Aporia doesn't build, or that you can use pretty much any editor |
15:44:02 | hoijui | as of now, newbs lik me will probably mostly end up with aporia |
15:44:24 | hoijui | i mean.. it shoudl not like.. be on top of the list |
15:44:32 | hoijui | of Nim IDEs |
15:44:41 | PMunch | dom96 ^ |
15:44:42 | hoijui | i think i saw it in two places |
15:45:14 | dom96 | where is it on the top of the list? |
15:47:24 | hoijui | .. am searching.. cant find that tab anymore... |
15:50:31 | * | nsf quit (Quit: WeeChat 2.0.1) |
16:04:36 | * | rbrt joined #nim |
16:25:00 | * | miran joined #nim |
16:26:56 | * | rbrt quit (Quit: Oíche mhaith) |
16:33:15 | * | qleda quit (Ping timeout: 256 seconds) |
16:34:17 | FromGitter | <alehander42> argh I had a frustrating bug with |
16:34:27 | FromGitter | <alehander42> `proc (.. view=proc(value: T): VNode .. )` |
16:34:32 | FromGitter | <alehander42> instead of `view: proc(..)` |
16:35:01 | FromGitter | <alehander42> it would be great to somehow have a better error msg for that (as it doesn't make sense to have arg=proc type anyway) |
16:35:27 | FromGitter | <alehander42> now one just gets type mismatch which looks impossible if you don't see `=` |
16:36:17 | FromGitter | <alehander42> where should I look for that? I might do a PR |
16:37:18 | * | athenot joined #nim |
16:40:36 | FromGitter | <narimiran> @mratsim are you here maybe? |
16:44:27 | dom96 | alehander42: use --verbosity:3 to get a stack trace in the compiler |
16:44:35 | dom96 | it will show you where the current error message is generated |
16:44:38 | Araq | oh thanks for reminding me |
16:44:40 | dom96 | and should allow you to improve it |
16:45:24 | FromGitter | <alehander42> @dom96 good idea, thanks |
16:46:02 | FromGitter | <alehander42> @Araq btw have you used generic VNode creating procs with karax until now? I always get expected nnkIdent error |
16:49:20 | FromGitter | <alehander42> it seems if I add nnkSym and nnkOpenSymChoice in getName , it can compile |
16:49:35 | FromGitter | <alehander42> does this have any cons? |
16:53:15 | Araq | alehander42: I doubt that's a complete solution but it doesn't have any cons |
16:59:53 | FromGitter | <alehander42> ok |
17:00:16 | * | nsf joined #nim |
17:07:02 | * | yaiyan quit (Quit: ZNC - 1.6.0 - http://znc.in) |
17:09:34 | * | xkapastel joined #nim |
17:10:57 | * | smt quit (Ping timeout: 248 seconds) |
17:11:49 | * | PMunch quit (Quit: Leaving) |
17:14:12 | * | yglukhov quit (Remote host closed the connection) |
17:14:45 | * | yglukhov joined #nim |
17:20:33 | * | floppydh_ quit (Ping timeout: 248 seconds) |
17:30:17 | * | NightMonkey879 joined #nim |
17:33:20 | * | NightMonkey879 quit (Remote host closed the connection) |
17:44:53 | * | sendell quit (Remote host closed the connection) |
17:54:59 | * | smt joined #nim |
17:56:41 | * | noonien joined #nim |
17:57:53 | * | SenasOzys quit (Ping timeout: 240 seconds) |
18:10:03 | * | yglukhov quit (Remote host closed the connection) |
18:10:09 | * | dddddd quit (Ping timeout: 256 seconds) |
18:10:15 | * | yglukhov joined #nim |
18:10:48 | * | dddddd joined #nim |
18:13:23 | * | SenasOzys joined #nim |
18:20:32 | * | fvs left #nim ("ERC (IRC client for Emacs 25.3.1)") |
18:26:06 | * | natrys joined #nim |
18:34:00 | Araq | aporia.nim(1186, 37) Error: illegal capture 'currentPage' because 'toggleSingle' has the calling convention: <cdecl> |
18:35:42 | Araq | the compiler is correct, Aporia's code was wrong |
18:42:52 | Araq | dom96, alehander42: 'koch temp' produces a stack trace without the annoying verbosity level |
18:51:47 | * | SenasOzys quit (Remote host closed the connection) |
18:54:43 | * | SenasOzys joined #nim |
19:01:30 | * | rbrt joined #nim |
19:11:41 | * | athenot quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
19:14:11 | dom96 | Araq: hah, you improved the error message just for Aporia? :) |
19:14:39 | Araq | told you I would do it. |
19:15:03 | Araq | error messages and removing crashes are the plan for v1 |
19:15:49 | Araq | also other people complained about this error message before |
19:15:53 | dom96 | so can I make toggleSingle a {.closure.}? |
19:15:59 | * | rbrt quit (Quit: Oíche mhaith) |
19:16:04 | dom96 | or are closures not allowed inside cdecl functions? |
19:16:07 | Araq | didn't try it but yeah, that should work |
19:16:19 | dom96 | why did it work before then? |
19:16:21 | Araq | or maybe remove the .push cdecl and add it where required |
19:16:39 | Araq | before the compiler silently changed the calling convention from cdecl to closure |
19:17:12 | Araq | which would be ok for Aporia but resulted in bugs for others |
19:18:24 | dom96 | i see |
19:24:40 | * | miran quit (Quit: Konversation terminated!) |
19:29:24 | * | DarkArctic_ joined #nim |
19:33:22 | * | DarkArctic quit (Ping timeout: 264 seconds) |
19:34:52 | * | sysrqb523 joined #nim |
19:36:53 | * | sysrqb523 quit (Remote host closed the connection) |
20:02:08 | * | athenot joined #nim |
20:04:54 | * | rbrt joined #nim |
20:05:18 | * | DarkArctic_ is now known as DarkArctic |
20:17:44 | * | PMunch joined #nim |
20:27:24 | shashlick | so the nims documentation says only four modules are available - strutils, ospaths, math and distros |
20:27:55 | shashlick | are there a test cases for that? |
20:27:57 | shashlick | also, seems like portions of some other modules also work |
20:28:20 | * | mrwonko joined #nim |
20:28:39 | Araq | shashlick, travis.yml has a nimscript test iirc |
20:28:58 | Araq | of course many other things also work if they don't use the FFI |
20:29:06 | mrwonko | Hi, what's the proper way to share source snippets here? |
20:29:47 | shashlick | https://play.nim-lang.org/ gists work well |
20:30:40 | mrwonko | okay, nevermind, while trying to figure out a minimal example I realized where I went wrong |
20:30:51 | shashlick | araq: I presume the same restrictions apply to macros also? |
20:31:08 | Araq | yup |
20:32:01 | shashlick | is there anything to do to enable more modules to work besides ffi enablement? |
20:33:22 | mrwonko | I had a set of a pure enum and accidentally did {SetType.EnumValue}, and the first error I saw was "type mismatch: got <set[range 0..65535(int)]> but expected 'Flags = set[Flag]'", which confused me. But then there were 4 other errors I did not initially see that explained the actual issue. |
20:33:38 | PMunch | mrwonko, pretty much any paste site is good. But as shashlick said play.nim-lang.org is probably the best one for Nim specific stuff |
20:34:00 | mrwonko | I was not aware of play.nim-lang.org, so that's good to know for future issues |
20:34:29 | FromGitter | <zetashift> play should be featured on the main landing site imho |
20:35:20 | PMunch | Agreed |
20:36:11 | PMunch | Maybe a "Try online" button next to the code snippet with a hard coded link to that snippet |
20:36:42 | PMunch | We really should get around to making something like this as well: https://tour.golang.org/welcome/1 |
20:36:48 | mrwonko | for the record, what I tried was https://play.nim-lang.org/?gist=e609c6c728d4cbf8751f0cf618d4df0e and the errors I got in Visual Studio Code were less helpful than the one on the website. |
20:37:11 | shashlick | looks like nimscript supports a bunch of modules but the docs page is only showing 4 |
20:38:15 | shashlick | per the test script: algorithm base64 colors hashes lists math options ospaths parseutils deques sequtils strutils subexes tables unicode uri macros |
20:38:45 | shashlick | of course, it's just importing those modules to see if it works, no actual usage test cases |
20:39:05 | dom96 | mrwonko: Flags(1) should work too. 'cast' is unsafe (you can cast anything to anything, even if it definitely incorrect) |
20:39:59 | dom96 | (Just a side note) |
20:40:11 | mrwonko | dom96: interesting. In the original context, my input is a byte array, and without the cast I get "type mismatch: got <byte> but expected 'Flags = set[Flag]'" |
20:43:14 | * | tefter quit (Remote host closed the connection) |
20:44:07 | mrwonko | I only just started learning Nim last week, there are a lot of things I already like about it. Some of the error messages aren't quite as clear as I'd hope, but nothing critical so far. Want me to share some my thoughts so far? |
20:44:33 | dom96 | Always :) |
20:44:40 | * | yglukhov quit (Remote host closed the connection) |
20:46:25 | mrwonko | I have a background primarily in C++, although never professionally. For my job I write Go and I have experience with Python and a little Pascal, too, plus some Lua and assorted other bits and bobs. I feel like Nim caters a lot to the C++ audience, which I like. |
20:46:54 | mrwonko | It means the language is a pretty complex beast, but I enjoy mastering complex languages, and a lot of knowledge transfers. |
20:47:22 | FromGitter | <AjBreidenbach> I feel like nim is a pretty good mix of pascal, python, and c++ |
20:47:58 | shashlick | araq: is it worth expanding the list of working modules mentioned in nimscript? |
20:48:03 | mrwonko | Agreed, AjBreidenbach, and I'll get to finally write some macros. I never got around to learning a Lisp. |
20:50:13 | mrwonko | I've been wondering about parameter passing, particularly whether it's pass by copy or (immutable) reference. Since changing parameters is disallowed, I assume the compiler may choose to do the latter, but it wasn't quite clear, so my inner control freak is a little worried about performance. |
20:51:56 | mrwonko | I tried to find out how to read environment variables, and the os module states "This module contains basic operating system facilities like retrieving environment variables", but then the actual proc definition was hidden inside ospaths, which took me a while to figure out. I did not realize imports were transitive. |
20:54:48 | mrwonko | I'm implementing a network protocol, so I need to handle byte orders. However the endians module is practically entirely undocumented. I opted to just do manual bitshifting, which is probably easier to read anyway, but wasn't clear on operator precedence between shl and or. I used parens to be safe, which again is probably a good idea regardless. |
20:55:31 | dom96 | modules can export other modules |
20:55:40 | dom96 | and yeah, it catches me out still as well |
20:55:43 | dom96 | it's a recent change |
20:56:00 | dom96 | The doc gen needs to be fixed for this I think |
20:56:09 | dom96 | and include links to procs/types that are re-exported |
20:57:39 | mrwonko | One thing the endians package shares with asyncnet is pointer arguments. I think I can just pass anything there using the `addr` operator, but that feels somewhat unsafe to me. In particular I'm reading into a byte array from a socket with recvInto. Not being able to sizeof an array type is a little weird, though I understand the general restrictions regarding compile-time sizeof on types. |
20:58:27 | mrwonko | I ended up using a constant for the size and defining the array type as type `RawFrameHeader = array[0..frameHeaderSize - 1, byte]`, where I tried using the `0..<frameHeaderSize` syntax to no avail. |
20:59:10 | dom96 | Anything that uses 'ptr', 'pointer', 'addr', 'cast' is unsafe |
20:59:36 | dom96 | In fact, I've been meaning to deprecate that asyncnet function and replace it with a safer alternative |
20:59:48 | FromGitter | <zetashift> @PMunch, me too! I think this needs to come from us, not sure how to go at it, embed the playground then check if it compiles and asserts correctly? |
21:00:10 | mrwonko | I don't like exceptions for error handling, although the effects system seems to go a long way towards making them type safe, and wrote an Either type instead. Oh, yeah, I have some background in Haskell, too. Mostly from University. I was a little disappointed how rarely the generic types could be inferred… |
21:00:11 | PMunch | zetashift, the playground has a simple HTTP interface |
21:00:22 | PMunch | So it's basically just a matter of writing the text |
21:00:59 | PMunch | https://github.com/zacharycarter/nim-playground/blob/master/src/nim_playground.nim#L114 |
21:01:18 | dom96 | zetashift: PMunch: first point of call will be to simply try copying the Golang tour website, wouldn't be surprised if it's open source ;) |
21:02:08 | FromGitter | <zetashift> We could divide it in a "Basics" section, "Advanced" section and probably how Nim deals with concurrency just like in the book |
21:02:14 | dom96 | Hrm, just got an idea. How about we make the documentation generator separate safe and unsafe procedures? |
21:02:21 | mrwonko | The documentation made it sound like converting an integer to an enum type fails if the value is out of range, but did not specify what exception it would raise (through experimentation I determined it to be a RangeError) or whether it will also be detected in release builds. |
21:02:30 | dom96 | So any procedure taking a 'pointer' isn't mixed in with the safe procedures? |
21:03:18 | mrwonko | I really like how the standard library is separated into pure and unpure modules. I want to be able to statically compile my code and put it into a scratch docker image, so I appreciate being able to do that easily (and having an official(?) docker image to cross-compile in) |
21:03:59 | mrwonko | I get compile warnings about a loadLibrary somewhere in system that I can't seem to easily get rid of, but I figure as long as I don't call the corresponding function I'm clear. |
21:04:35 | mrwonko | Oh, and I was a little disappointed that the compiler can't generate an == function for case types. |
21:05:31 | PMunch | dom96, safe and unsafe? |
21:05:45 | PMunch | Oh right, I guess that makes sense |
21:05:50 | dom96 | https://github.com/nim-lang/Nim/issues/7372 |
21:06:03 | * | DarkArctic_ joined #nim |
21:06:21 | PMunch | mrwonko, what do you mean? |
21:06:44 | mrwonko | PMunch: regarding == functions? |
21:07:07 | PMunch | Yeah |
21:08:11 | mrwonko | my test asserts would not work without this explicit comparison: https://play.nim-lang.org/?gist=d273c0b39e63318db6c95dd52d4462e5 |
21:09:17 | mrwonko | hmm thinking about it I should probably not mark that as noSideEffect, because I'm calling == on the generic types, artificially restricting them |
21:09:27 | * | DarkArctic quit (Ping timeout: 240 seconds) |
21:10:03 | mrwonko | I think noSideEffect automatically propagates anyway, and the explicit annotation is merely a way of making sure? |
21:10:05 | * | athenot_ joined #nim |
21:10:56 | * | athenot quit (Ping timeout: 255 seconds) |
21:11:35 | PMunch | Ah right |
21:11:38 | PMunch | I see what you mean |
21:17:50 | FromGitter | <HonzsSedlomn> Hello. Is there any to how can I reproduce it in Nim? ⏎ ` ⏎ void Matrix::allocSpace() ⏎ { ⏎ ... [https://gitter.im/nim-lang/Nim?at=5ab028fe35dd17022e7a30d4] |
21:18:09 | FromGitter | <HonzsSedlomn> *any way |
21:19:45 | FromGitter | <HonzsSedlomn> Oh.. I.. eh.. I forgot that there is a "var" option.. :D |
21:19:53 | FromGitter | <HonzsSedlomn> Damn python habits |
21:20:07 | FromGitter | <HonzsSedlomn> and c++ |
21:21:16 | FromGitter | <HonzsSedlomn> Am I right that I can work with variables which are not signed with "*" in one file? |
21:22:36 | * | rokups quit (Quit: Connection closed for inactivity) |
21:22:56 | mrwonko | I'll continue to play around with Nim, maybe try out the javascript backend. It's very cool that you have that! I've been looking for a language that I can compile to a static, efficient binary in the backend and share code with the frontend (without getting 5MB JS and being a pain to compile (looking at you, GHCJS)) that is fun to work with. Maybe I've found it. :-) |
21:23:02 | * | BitPuffin quit (Remote host closed the connection) |
21:23:45 | mrwonko | After that, if I still like it, I might try contributing to the compiler, maybe try adding the missing generic type inference I criticized earlier ;) |
21:23:46 | dom96 | In case you need a good example of this: https://github.com/dom96/snake :) |
21:23:52 | Araq | hi, mrwonko, welcome |
21:24:13 | Araq | what error message is confusing? I happen to work on them |
21:25:30 | shashlick | dom96: what's the nimble package structure for a binary with multiple nim source files? my nim CLI editor isn't installing |
21:25:31 | shashlick | https://github.com/genotrance/snip |
21:26:02 | dom96 | what error are you getting? |
21:26:06 | shashlick | it builds fine but Error: unhandled exception: Is a directory [OSError] |
21:26:33 | dom96 | That's because it's trying to create a 'snip' binary in 'src' |
21:26:44 | shashlick | i suspect on linux, it tries making a binary snip in the src directory whcih already has a snip folder |
21:26:51 | dom96 | just specify `binDir = "bin"` in your .nimble file |
21:27:12 | * | hoijui quit (Ping timeout: 240 seconds) |
21:28:05 | shashlick | but docs say default binDir = root, where nimble file is |
21:28:55 | shashlick | anyway, even after setting it, it isn't working - same error |
21:28:59 | mrwonko | Araq: The error I initially mentioned is apparently only in the VSCode integration, the actual compiler is more helpful. Here are the errors VSCode gave me: https://gist.github.com/mrwonko/f99e6ba0356decd0e29a05696f56783f I don't remember the other errors I encountered last week, sadly. |
21:30:39 | PMunch | Is there a way to pass an argument to a macro as a pragma, ref: https://nim-lang.org/docs/manual.html#macros-macros-as-pragmas |
21:30:49 | dom96 | shashlick: that will only solve it if you run `nimble build` |
21:31:02 | PMunch | I would want to do something like "proc p() {.m: something.}" |
21:31:17 | * | mrwonko quit (Quit: mrwonko) |
21:31:22 | dom96 | shashlick: IMO this is Nim compiler issue, report it |
21:31:32 | shashlick | so what do I need to do to enable install |
21:31:43 | dom96 | installation should work |
21:33:33 | shashlick | weird, i renamed src/snip to src/snippkg and even then I get the same error |
21:33:44 | FromGitter | <mrwonko> Anyway, thanks for the help and listening to my thoughts, I think I'll pop in here more often. See you later. :) |
21:33:45 | shashlick | how do I get verbose output during nimble instal |
21:33:59 | dom96 | --verbose or --debug |
21:34:05 | * | Trustable quit (Remote host closed the connection) |
21:35:02 | * | nsf quit (Quit: WeeChat 2.0.1) |
21:38:27 | shashlick | here's the actual error |
21:38:28 | shashlick | Copying file /snip/bin/snip to ~/.nimble/pkgs/snip-0.1.0/snip |
21:38:29 | shashlick | Error: unhandled exception: Is a directory [OSError] |
21:38:57 | shashlick | for some reason, it has copied the stuff inside src/snip to the pkgs dir and then finally trying to copy the bin file |
21:39:41 | dom96 | I guess it still creates the directory even if there is nothing to copy in there |
21:39:45 | dom96 | that's a bug :( |
21:40:04 | dom96 | You should be able to work around by writing skipDir = @["snip"] though |
21:42:57 | shashlick | worked! well, I had skipExt = @["nim"] but I had some other files in the src as well which were getting copied in |
21:43:33 | shashlick | by default, nimble should not copy anything in src if bin = "" |
21:43:46 | dom96 | agreed |
21:43:56 | dom96 | It's a breaking change, but I will make it |
21:46:12 | PMunch | Thoughts? https://github.com/nim-lang/Nim/issues/7369#issuecomment-374390030 |
21:46:18 | shashlick | cool |
21:48:13 | FromGitter | <mratsim> @miran, I’m back |
21:48:49 | FromGitter | <mratsim> @mrwonko Welcome to Nim, sizeof of compile time object/arrays is pending a PR. |
21:49:41 | FromGitter | <mratsim> Primitive types are passed by copy (int, etc) array and struct are passed by copy if they contain less than 3 primitives type and by immutable reference otherwise |
21:52:54 | FromGitter | <mratsim> Endianesss is definitely undocumented, there are some trick to deal with it: use when inside the type to change the order of things at compile-time, example: https://github.com/status-im/mpint/blob/8b8f2a55c41b900c2ebec08bb9019d4fb221f11a/src/uint_type.nim#L12-L15 |
21:53:30 | FromGitter | <mratsim> Endian independant preocessing: https://github.com/status-im/nim-eth-keys/blob/74bdca4f1c5b8476be0f279aa7a3c66f22f7e47a/src/private/lowlevel_types.nim |
21:53:51 | Araq | oh look, Nim is getting borrow checking https://github.com/nim-lang/Nim/issues/7373 |
21:56:43 | dom96 | Why do we need new language feature to fix this issue? :( |
21:56:55 | Araq | we don't |
21:57:08 | Araq | maybe I phrased it poorly |
21:57:27 | Araq | there is no new syntax, the compiler simply gets more restrictive |
21:57:43 | Araq | but the stdlib is not affected |
21:58:25 | FromGitter | <mratsim> issue 124, wow |
21:58:30 | dom96 | Yes, it's a little confusing to see new syntax being proposed so early in that issue message |
21:58:46 | dom96 | I'd suggest separating it into clear headings |
21:58:52 | FromGitter | <mratsim> `var T scope container`. Talk about scary |
21:59:10 | dom96 | even the title is scary, `lent T`? |
21:59:34 | * | Vladar quit (Quit: Leaving) |
21:59:55 | FromGitter | <mratsim> he talks about it in the wiki |
22:00:03 | FromGitter | <mratsim> it’s inverse-borrowing |
22:00:22 | Araq | er |
22:00:32 | Araq | how do I make a heading in a github issue? |
22:00:34 | FromGitter | <mratsim> lend -> lent |
22:00:38 | FromGitter | <mratsim> ## |
22:00:42 | dom96 | Araq: it supports markdown |
22:00:43 | FromGitter | <mratsim> \# |
22:02:40 | PMunch | Another weird feature request from my wishlist. If a proc has a var parameter (maybe only the first) and no return type add an implicit return on that parameter with discardable |
22:03:02 | PMunch | Would make it possible to chain all such procedures |
22:03:16 | Araq | to chain, use a macro |
22:03:50 | Araq | unless you are talking about some other RFC that turns 'result: var T' void procs into expression procs |
22:03:58 | PMunch | But then you'd have to write a macro.. |
22:04:07 | Araq | ohh poor boy :P |
22:04:31 | PMunch | Haha, I said it was a bit of a weird one |
22:04:39 | Araq | one macro vs messing up every single proc in order to support "chaining" |
22:05:09 | Araq | which is something I never need to do for some reason |
22:05:18 | PMunch | "proc(x: var something)" should turn into "proc(x: var something): var something" and return x |
22:05:30 | Araq | that's crazy talk |
22:05:40 | PMunch | Not really messing them up if the result is discardable |
22:05:58 | FromGitter | <cavariux> PMunch, so you would save not typing the return type haha? |
22:05:58 | Araq | discardable results don't work well with type inference to begin with |
22:06:03 | PMunch | And I guess chaining is something I've grown to use quite a bit from my functional use |
22:06:04 | Araq | they are not to be embraced |
22:06:13 | FromGitter | <mratsim> `iterator mzip(container1: var C1, container2: var C2): (var C1, var C2) =` |
22:06:16 | FromGitter | <mratsim> :P |
22:06:40 | PMunch | cavariux, well it's easy enough to do in your own code. I was more talking about other code that doesn't do it |
22:06:43 | FromGitter | <mratsim> messed up the signatur |
22:07:26 | * | tefter joined #nim |
22:07:44 | Araq | bah |
22:07:47 | FromGitter | <cavariux> Oh well, PMunch I think |
22:07:49 | Araq | a good one. |
22:08:03 | Araq | iterators support tuples with 'var T' in it |
22:08:18 | Araq | but it's still derived from the first parameter. well |
22:08:22 | FromGitter | <cavariux> Araq I whinkt that PMunch refers that you can't chain functions even if they return the arguments example |
22:08:40 | Araq | we could derive it from the first 'var' parameter instead |
22:08:56 | Araq | but proc foo(x: ref T): var X seems quite plausible |
22:09:02 | FromGitter | <mratsim> One macro to rule them all and in the darkness bind them |
22:09:08 | PMunch | cavariux, oh no. You can if it was defined to return the argument. But most of these procs aren't defined that way |
22:09:08 | FromGitter | <cavariux> oh, you can you just have to discard |
22:10:42 | FromGitter | <cavariux> then I don't understand what you are tying to achive .-. |
22:11:04 | Araq | PMunch smoked too much C++ |
22:11:12 | FromGitter | <cavariux> Araq, is there any knon bug with the mingw compiler with IOError? |
22:11:14 | * | rockcavera quit (Remote host closed the connection) |
22:11:33 | Araq | VSCode's integrated terminal produces IOErrors |
22:11:53 | FromGitter | <cavariux> Ohhh, thank goodness I thought I was going crazy haha |
22:11:57 | Araq | maybe they will fix it at one day. |
22:12:22 | PMunch | Haha Araq, I don't even particularly like C++. I think I got it from functional languages where everything returns something and you don't really have variables. |
22:12:38 | PMunch | Oh well, I'm off to bed |
22:12:40 | * | PMunch quit (Quit: leaving) |
22:12:43 | FromGitter | <mratsim> Speaking about C++, am I the only one annoyed but C++ reraising Nim exception? https://github.com/nim-lang/Nim/issues/6512 |
22:13:01 | Araq | returning what you already "know" is not very FP like IMO. |
22:13:58 | Araq | mratsim: I fixed that for v0.18. |
22:14:07 | Araq | not sure why it's still a problem |
22:14:19 | FromGitter | <mratsim> ah, will test, it’s still open though |
22:15:06 | FromGitter | <cavariux> Araq, since 0.18 when I try to parse an array to string using $ if I don't manually define the number of the array I get that the function is ambiguos because it can use the system array to string :/ |
22:15:38 | FromGitter | <mratsim> “You shall not parse" |
22:15:54 | Araq | mratsim: works for me |
22:16:01 | FromGitter | <mratsim> works for me too |
22:16:14 | FromGitter | <mratsim> I think you messed up the commit description that’s why it’s open |
22:16:48 | Araq | cavariux: I am not following you |
22:17:06 | Araq | is your $ so much better than the builtin one? |
22:17:24 | FromGitter | <mratsim> I have found a datarace in Github |
22:17:27 | Araq | mratsim: iterator mzip(container1: var C1, container2: var C2): (var C1, var C2) # so what do you propose? |
22:17:30 | FromGitter | <mratsim> (https://files.gitter.im/nim-lang/Nim/jdiq/2018-03-19_23-17-12.png) |
22:18:16 | Araq | first var T derives from the first parameter, second from the second? |
22:18:40 | Araq | and what's wrong with |
22:18:57 | Araq | proc getX(c: var Container): var X from c ? |
22:18:59 | FromGitter | <cavariux> Well, it just gives it style hahaha, I'm making some vectors for a project but when I do ```proc `$`(v: Vec): string``` Vec[R, T] of type array[R: static int, T] |
22:19:09 | FromGitter | <cavariux> It gives me ambiguos call with the system built in array to string |
22:19:10 | FromGitter | <mratsim> @Araq I don’t know about the constraints to be honest, what if you want to implement a “flip” |
22:19:28 | FromGitter | <mratsim> `from` is definitely better than scope |
22:19:30 | FromGitter | <cavariux> I have to manually put ```proc `$`*T (vec: Vec[1, T] | Vec[2, T] | Vec[3, T] | Vec[4, T]): string =``` |
22:19:31 | FromGitter | <cavariux> so it works |
22:20:04 | FromGitter | <mratsim> @cavariux, make your Vec a distinct type or wrap it in an object |
22:20:07 | Araq | cavariux: sounds acceptable to me |
22:20:49 | FromGitter | <mratsim> actually we probably should put that in a tutorial somewhere (hint to the hash RFC) ;) |
22:22:10 | FromGitter | <cavariux> mratsim I have some wrappers Vec1, Vec2, Vec3, Vec4, and they all have their int32, uint32 and float32 variations |
22:24:49 | FromGitter | <mratsim> Like in nim-glm? Why can’t you use generics? |
22:25:23 | FromGitter | <cavariux> oh, because I'm using it to interact with opengl so I have to use c types |
22:25:53 | FromGitter | <cavariux> but I found the solution I just had to add [R, T] instead of only [T] |
22:28:50 | * | natrys quit (Quit: natrys) |
22:36:01 | * | vlad1777d joined #nim |
22:37:46 | Araq | mratsim: so what do you propose? |
22:38:25 | Araq | IMO 'var T from parameter' is quite nice for this niche case |
22:38:42 | FromGitter | <zacharycarter> hai gais |
22:39:14 | FromGitter | <zacharycarter> @cavariux - Nim glm can be tossed to opengl too fyi |
22:39:49 | FromGitter | <cavariux> @zacharycarter but I want to build my own T_T |
22:40:01 | FromGitter | <cavariux> well I already did, just addig more procedures |
22:40:12 | FromGitter | <zacharycarter> cool :) |
22:40:21 | FromGitter | <cavariux> yey @zacharycarter aproves hahaha |
22:41:11 | FromGitter | <zacharycarter> haha - hey I'm small fries in this community - I have like zero language contributions |
22:41:30 | FromGitter | <zacharycarter> I hope to fix that eventually but for now I mostly focus on building things with Nim rather than helping out with it |
22:41:57 | FromGitter | <zacharycarter> and nothing I've built so far has been that great - but hopefully I will also remedy that eventually :D |
22:42:15 | FromGitter | <AjBreidenbach> I think building stuff indirectly helps |
22:42:39 | FromGitter | <zacharycarter> I'm starting to get serious about working on this AWS SDK - I think in order for Nim to be viable in the enterprise, it's going to need a cloud provider SDK |
22:42:42 | FromGitter | <cavariux> dude, Frag and Zengine are awesome, it was one of the things that finally made me decide to switch my hobbie proejcts to Nim |
22:42:49 | FromGitter | <zacharycarter> thank you :D |
22:43:23 | * | arecaceae quit (Remote host closed the connection) |
22:43:27 | FromGitter | <zacharycarter> I think as a community - we need to try to focus our efforts on attracting enterprise users |
22:43:46 | * | arecaceae joined #nim |
22:43:51 | FromGitter | <zacharycarter> that's the key, IMO, to Nim's popularity taking off |
22:44:10 | FromGitter | <cavariux> I agree, I think we need the Rails in Ruby of Nim |
22:45:02 | FromGitter | <cavariux> (Not literally Ruby on Rails) I mean we need a library or something that calls enterprise attention |
22:45:17 | FromGitter | <zacharycarter> well... while I think Nim webdev still has a ways to go especially in terms of DB support and jester improvements, I think that side of things is much better off than being a viable alternative to Goang, Python or NodeJS if you're going to the cloud |
22:46:17 | FromGitter | <zacharycarter> for instance - right now, it's not really possible to write code targeting any AWS / GCP / Azure services w/ Nim |
22:46:38 | FromGitter | <zacharycarter> if any businesses are going to consider using Nim - that needs to change |
22:46:47 | FromGitter | <cavariux> Really? Couldn't you make http calls to their apis? |
22:47:05 | FromGitter | <zacharycarter> why would you want to do that when you could write against a SDK in another language? |
22:47:16 | FromGitter | <cavariux> Good point |
22:47:33 | FromGitter | <zacharycarter> right now I'm writing everything in Go at work and I don't like Go |
22:47:46 | FromGitter | <zacharycarter> I like Python better, but I also don't want to maintain Python |
22:48:04 | FromGitter | <zacharycarter> especially not with co-workers |
22:48:08 | FromGitter | <cavariux> Rust is the only big competitor I see for Nim |
22:48:29 | FromGitter | <cavariux> In terms of how good they are, the others are more enterprise needed than anything else |
22:48:46 | FromGitter | <zacharycarter> I think Nim can destroy Rust in adoption - if the ecosystem was there |
22:49:03 | FromGitter | <zacharycarter> Nim has soooooo much less friction than Rust |
22:49:16 | FromGitter | <zacharycarter> lots of people are already familiar with Python |
22:49:35 | FromGitter | <zacharycarter> you just teach them Nim is a better / sane Python |
22:49:48 | FromGitter | <zacharycarter> the problem is - right now - Nim can't do much because its ecosystem is limited |
22:50:14 | FromGitter | <cavariux> What do you mean with that? That Nim needs more libraries and sdks? |
22:50:38 | FromGitter | <zacharycarter> so as a community, if we want Nim to succeed - we need to start writing libraries that will attract people to Nim rather than hobbyist stuff - like I've been doing |
22:51:05 | FromGitter | <zacharycarter> Nim needs libraries and sdks that will be useful to a corporation that wants to write enterprise software |
22:51:40 | FromGitter | <cavariux> That's true, I still have friends that prefer other languages because they already have the lib they need |
22:52:01 | FromGitter | <zacharycarter> well like I said earlier - Nim's not even a realistic option if you want to write code targeting any cloud service |
22:52:06 | FromGitter | <zacharycarter> and that's what enterprises are doing these days |
22:52:44 | FromGitter | <zacharycarter> I just recently was one of two developers launching a new pilot product at carfax - all of our infrastructure for the pilot was self-hosted |
22:53:07 | FromGitter | <cavariux> I'm not really familiar with cloud services, if not I would love to help |
22:53:17 | FromGitter | <zacharycarter> for the national launch, we'll be entirely on cloud-hosted infrastructure running a kubernetes cluster |
22:53:21 | FromGitter | <cavariux> But I'm trying to add useful bindings and rewrite some in pure nim |
22:53:32 | FromGitter | <zacharycarter> my choices are - Golang, Python, NodeJS, Java |
22:53:48 | FromGitter | <zacharycarter> Rust too I suppose |
22:54:08 | FromGitter | <zacharycarter> and C++ |
22:54:22 | FromGitter | <cavariux> Hmm, tbh I don't know why people keep usin Java other than Android Development |
22:54:31 | FromGitter | <zacharycarter> and even then - Kotlin exists |
22:54:49 | FromGitter | <zacharycarter> most of the enterprise uses Java tbh |
22:55:09 | FromGitter | <zacharycarter> I can't stand the language - but it was taught in college for a long time so |
22:55:10 | FromGitter | <cavariux> But, I think mostly because they are legacy systems built on top of Java |
22:55:28 | FromGitter | <zacharycarter> even new software is written in Java - most of Netflix's shit is written in Java |
22:55:35 | FromGitter | <zacharycarter> and a lot of people hail them as the pinnacle of engineering |
22:56:00 | * | FromGitter * zacharycarter shrugs |
22:56:22 | FromGitter | <cavariux> hahaha, but that was I think before they went to the micro service idea, that they started building everything with node, and now with golang |
22:56:28 | FromGitter | <zacharycarter> nah |
22:56:32 | FromGitter | <zacharycarter> they still build a lot of stuff in Java |
22:57:15 | FromGitter | <zacharycarter> spinnaker, whatever their container orchestration lib is, etc... |
22:57:30 | FromGitter | <cavariux> I really want Nim to become popular |
22:57:32 | FromGitter | <zacharycarter> just check out - https://github.com/netflix |
22:57:51 | FromGitter | <zacharycarter> well - start writing enterprise-related libraries then :D that's what I'm going to start focusing on I think |
22:58:12 | * | gangstacat quit (Ping timeout: 246 seconds) |
22:58:18 | FromGitter | <zacharycarter> I'll still be writing frag v2 but I think I need to start pitching in by writing code I don't enjoy writing, but that needs to be written :) |
22:58:43 | FromGitter | <cavariux> okay, I will try to write as much as I can in pure nim and if not do bindings for useful stuff |
22:58:54 | FromGitter | <cavariux> will go eat something |
22:59:03 | FromGitter | <cavariux> see you later @zacharycarter |
22:59:20 | FromGitter | <zacharycarter> enjoy the food @cavariux ! will talk soon! |
22:59:59 | * | rockcavera joined #nim |
23:01:14 | FromGitter | <zacharycarter> @Varriount around by any chance? |
23:01:30 | * | jaco60 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
23:01:53 | FromGitter | <Varriount> Yep |
23:02:15 | FromGitter | <zacharycarter> ooooo yeah! hey buddy! I hope you're doing well, been a while :) |
23:04:15 | FromGitter | <Varriount> I'm well, just been busy with work + school. |
23:04:55 | FromGitter | <zacharycarter> I really want to get some traction on this AWS SDK, and I know you're super busy. Is there any possible hand off from what you've already done, or do you think I should just start fresh? I don't know how far you got with generating boto3 stuff, but if you already have something to start from - I'm game for picking up where you left off (or trying to anyway). |
23:05:08 | FromGitter | <zacharycarter> and I hope work + school are both going well :) |
23:05:57 | FromGitter | <Varriount> I have some code, although I don't know if it still works. |
23:06:16 | FromGitter | <Varriount> If you want to start, I'd work from this plan: |
23:06:39 | FromGitter | <Varriount> First develop code that can make the basic POST and GET requests to the API |
23:07:00 | FromGitter | <Varriount> Next develop code that can decode the various response formats (JSON and XML) |
23:07:39 | FromGitter | <Varriount> Then develop code to take in the JSON schema defining the AWS APIs, and generate the appropriate wrapper functions. |
23:07:54 | Araq | varriount: I'm interested in this code too |
23:08:29 | Araq | zacharycarter: I'm working on cloud APIs fwiw but I'm not sure how much of it will end up as open source |
23:08:42 | FromGitter | <zacharycarter> can you just get me hired? :P |
23:08:55 | Araq | it's a very mixed thing, developing a wrapper can take hours or weeks |
23:09:12 | FromGitter | <zacharycarter> yeah |
23:09:12 | Araq | based on the encrypted authentification stuff |
23:09:12 | FromGitter | <zacharycarter> right |
23:09:13 | Araq | over HTTP(S) |
23:09:41 | * | NimBot joined #nim |
23:09:49 | FromGitter | <Varriount> https://gist.github.com/Varriount/5f99f862393a186665cd454ae6137ff4 |
23:09:57 | FromGitter | <Varriount> https://gist.github.com/Varriount/9e84c48baa4fd5ea22558031bfab3554 |
23:10:40 | Araq | gold :-) |
23:10:40 | FromGitter | <Varriount> Those two URLs make up most of what I have written/seen that can interface with AWS. |
23:11:24 | FromGitter | <zacharycarter> that's awesome thank you :D |
23:11:53 | Araq | can we get the "billing" API for GCE too? :-) |
23:12:11 | FromGitter | <Varriount> Haven't worked with GCE, sorry. |
23:12:14 | FromGitter | <zacharycarter> GCE is so nice |
23:12:21 | FromGitter | <zacharycarter> ughhhh I wish I had GCE |
23:12:33 | FromGitter | <Varriount> Azure is nice too, from an automation perspective. |
23:12:36 | FromGitter | <zacharycarter> yeah |
23:12:41 | FromGitter | <zacharycarter> AWS is the pits |
23:12:53 | FromGitter | <Varriount> Azure's resource manager templates blow Cloudformation out of the water in many ways. |
23:13:09 | FromGitter | <zacharycarter> this is why kube is the best |
23:13:13 | FromGitter | <Varriount> Kube? |
23:13:21 | FromGitter | <zacharycarter> kubernetes |
23:13:26 | FromGitter | <zacharycarter> k8 |
23:14:06 | FromGitter | <zacharycarter> you just go to whatever cloud provider offers the best tool for the job |
23:14:50 | FromGitter | <zacharycarter> there are alternatives to kubernetes too but I don't know of any that are better yet |
23:15:03 | dom96 | sooo why not just get a Digital Ocean VPS and run your binary there? :) |
23:15:47 | FromGitter | <zacharycarter> because we're talking about enterprise grade infrastructure here :P |
23:16:10 | FromGitter | <zacharycarter> and clustered computing |
23:16:39 | FromGitter | <zacharycarter> I mean I think digital ocean supports kubernetes - but I wouldn't want to manage my own compute cluster if I was trying to run enterprise grade software |
23:16:56 | FromGitter | <zacharycarter> I want something doing it for me |
23:17:25 | FromGitter | <zacharycarter> kubernetes kind of lets you orchestrate all that via config, and then just drop it off on whatever cloud provider you want |
23:18:34 | dom96 | well, without knowing the requirements I can't really imagine why this complexity would be necessary |
23:18:55 | FromGitter | <mratsim> @Araq the from is much better yes, I have nothing better to propose |
23:19:52 | FromGitter | <mratsim> by the way in macros what’s the difference between result.add foo[0], result.add copyNimNode(foo[0]) and result.add copyNimTree(foo[0])? |
23:20:12 | FromGitter | <zacharycarter> dom96: we need to provide a public facing API that can run queries against an elasticsearch instance which is periodically re-indexed with data about car dealerships |
23:20:39 | FromGitter | <Araq> @mratsim usually it doesn't matter |
23:20:43 | FromGitter | <zacharycarter> so we need our infrastructure to be redundant, we need an elasticsearch cluster, we need mongo / dynamo db & streaming support |
23:21:13 | FromGitter | <zacharycarter> some type of queuing mechanism for the job that populates dynamodb /mongo and then another process to handle the stream and indexing of elasticsearch |
23:21:43 | FromGitter | <zacharycarter> and we need job scheduling capabiltieis |
23:21:55 | dom96 | I see |
23:21:59 | FromGitter | <zacharycarter> yeah - we could do that with cron jobs probably and single node stuff |
23:21:59 | FromGitter | <Araq> @zacharycarter check your private messages |
23:22:15 | FromGitter | <zacharycarter> but it won't serve an enterprise-grade API |
23:22:51 | FromGitter | <Varriount> @zacharycarter What do you use for configuration management (Salt, Puppet, Ansible, etc)? |
23:23:03 | dom96 | What are the requirements for an "enterprise-grade" api? |
23:23:25 | * | noonien quit (Quit: Connection closed for inactivity) |
23:23:46 | dom96 | is it just the ability to scale? |
23:24:08 | FromGitter | <zacharycarter> also fault-tolerance |
23:24:20 | FromGitter | <zacharycarter> which I guess is inferred with ability to scale |
23:24:53 | FromGitter | <Araq> Die Cloud klaut. ;-) |
23:25:08 | FromGitter | <zacharycarter> security comes into play too, availability of on-premise infrastructure, etc... |
23:25:43 | FromGitter | <zacharycarter> there's a ton of shit I'm not trained / qualified to offer an opinion on that I have to try to figure out as well |
23:25:55 | FromGitter | <zacharycarter> putting software in the cloud, and having it work with existing infrastructure is non-trivial |
23:26:14 | FromGitter | <zacharycarter> @Varriount - we've been using Chef internally, everything seems to be moving to Hashicorp |
23:26:40 | FromGitter | <zacharycarter> we're trying to just make decisions inside our own team in terms of what tooling / technology we use - I don't think we've really settled on what we're going to use yet |
23:26:49 | FromGitter | <zacharycarter> I pray it's not Terraform |
23:26:55 | FromGitter | <Varriount> So Consul? |
23:27:26 | FromGitter | <zacharycarter> I haven't heard Consul brought up much yet - I know we use it - but I've never encountered it |
23:27:31 | FromGitter | <zacharycarter> I just know Vault, Terraform |
23:27:36 | FromGitter | <zacharycarter> Packer |
23:28:02 | dom96 | lol, sounds like every company is rolling their own by the amount of different names I am seeing here |
23:28:08 | FromGitter | <zacharycarter> this is all our devops team though - like we're supposed to be moving to a more team oriented culture where teams are empowered to do their own devops |
23:28:27 | FromGitter | <zacharycarter> well dom96: these are all technologies built to deal with the effing mess that is cloud computing |
23:28:35 | FromGitter | <zacharycarter> you basically pick your poison and suffer through it |
23:28:43 | FromGitter | <zacharycarter> the most sane option I've seen for all of this is Kubernetes |
23:29:05 | FromGitter | <Araq> we picked Digital Ocean VPS + Sqlite + Nim ;-) |
23:29:07 | FromGitter | <zacharycarter> and then you work with whatever crap your cloud provider of choice offers |
23:29:09 | FromGitter | <Varriount> @zacharycarter Do you deal with the government at all? |
23:29:14 | FromGitter | <zacharycarter> negative |
23:29:29 | FromGitter | <Varriount> I do. It's interesting. |
23:29:37 | FromGitter | <zacharycarter> @Araq - yeah but you're not Carfax either :/ |
23:29:45 | FromGitter | <zacharycarter> in the sense that you're a lot smaller |
23:29:50 | FromGitter | <zacharycarter> and can do things like that |
23:29:54 | * | FromGitter * Varriount is going to use Carfax to find his next car |
23:30:04 | FromGitter | <zacharycarter> :D |
23:30:10 | FromGitter | <zacharycarter> please everyone do if you're in the US |
23:30:26 | federico3 | dom96: yes, it's a mess |
23:30:48 | FromGitter | <zacharycarter> @Varriount I don't think I could get a job with the govt |
23:31:03 | FromGitter | <Varriount> Well, contracting. |
23:31:11 | FromGitter | <zacharycarter> too much 🚰 minus the water |
23:31:22 | FromGitter | <zacharycarter> and the able |
23:31:48 | FromGitter | <zacharycarter> (hover over the icon and hopefully it will make sense :P) |
23:32:06 | FromGitter | <Varriount> But you get the thrill of working with technology that's 10+ years old. :D |
23:32:10 | FromGitter | <Araq> @zacharycarter *shrug*, "small but working and we are in control and know how to grow it" is preferrable to me over "omg, we are the next Google, everything MUST SCALE" |
23:32:13 | FromGitter | <zacharycarter> yeah!!!!! |
23:32:28 | FromGitter | <zacharycarter> @Araq - yeah :/ I don't get to make any of these decisions though |
23:32:46 | FromGitter | <zacharycarter> new people that have been there less time than me do :) |
23:33:38 | dom96 | I am by no means experienced with this stuff, but I can't help but have a feeling that most users of these technologies really don't need them. |
23:33:48 | FromGitter | <zacharycarter> @Varriount - yeah!!!!! I just recently polished off the last of the ColdFusion code I'll have to write ever! hopefully... |
23:34:03 | FromGitter | <zacharycarter> they do dom96 |
23:34:13 | federico3 | dom96: spot on |
23:34:45 | FromGitter | <zacharycarter> they remove devops from the picture |
23:35:09 | FromGitter | <zacharycarter> if you're at a business, and you're running a mysql server / cluster - someone has to maintain that shit and upgrade it etc |
23:35:18 | FromGitter | <zacharycarter> the cloud provider takes care of all of that for you |
23:35:51 | FromGitter | <zacharycarter> so business invest in cloud, because it reduces infrastructure costs to very little |
23:36:09 | FromGitter | <zacharycarter> they don't realize the human / developer cost in terms of coming to terms with the ecosystem / being able to develop in it |
23:36:28 | FromGitter | <zacharycarter> but don't think for a second that AWS / GCE / Azure, etc... aren't being used in massive capacity - they are |
23:36:44 | FromGitter | <zacharycarter> and the fact that Golang is supporting these, and Rust is gaining support, means Nim needs to as well |
23:37:00 | FromGitter | <zacharycarter> otherwise - Nim is going to turn into Haskell, and probably not even turn out as well |
23:37:08 | dom96 | Sure, I don't doubt that there are users out there that do need it |
23:37:34 | dom96 | But I have a hunch that a lot of people are following the hype of "Google is using this so I should too!" |
23:37:58 | FromGitter | <zacharycarter> I mean sure - but at the end of the day - there are business that run 100% on cloud infrastructure |
23:38:10 | FromGitter | <zacharycarter> and it's trending in that direction, not decreasing |
23:38:32 | dom96 | And yeah, I really want to see support for AWS, GCE, Heroku, and whatever else for Nim |
23:38:44 | dom96 | I'm surprised it's so difficult to get this support |
23:38:58 | FromGitter | <zacharycarter> well - I think we really need to stabilize an effort around this |
23:39:16 | FromGitter | <zacharycarter> for instance |
23:39:27 | FromGitter | <zacharycarter> https://github.com/rusoto/rusoto |
23:39:28 | dom96 | sure, a good way might be to create a dedicated github org for it |
23:39:44 | FromGitter | <zacharycarter> yeah - that is a really good idea |
23:40:07 | dom96 | I'm happy to tweet out a call for help :) |
23:40:20 | dom96 | A good first step is a nice readme and some small skeleton project |
23:41:05 | dom96 | Holy crap, that's a lot of services https://www.rusoto.org/supported-aws-services.html |
23:41:50 | FromGitter | <zacharycarter> mmhmm |
23:41:56 | federico3 | dom96: most of the required glue is pretty small |
23:41:56 | dom96 | Also, we should start using GitBook a lot more for projects |
23:41:59 | FromGitter | <AjBreidenbach> if you want nim on heroku, you can make an npm module from it |
23:41:59 | FromGitter | <zacharycarter> but we can use macros / codegen for most of it |
23:41:59 | dom96 | It's really nice |
23:42:32 | dom96 | Which services do you guys think are most important? |
23:43:10 | federico3 | shouldn't people list and vote this stuff on https://github.com/nim-lang/needed-libraries/issues ? |
23:43:12 | FromGitter | <zacharycarter> s3, dyanmodb, alot of the IAM stuff (and whatever the auth services are referred to as) |
23:43:29 | FromGitter | <Varriount> @dom96 The key to supporting all those services is to have a codegen that takes in the API schema AWS publishes. |
23:43:37 | FromGitter | <zacharycarter> ^ |
23:43:54 | FromGitter | <zacharycarter> federico3: that list is flawed IMO |
23:44:05 | FromGitter | <zacharycarter> at least from the perspective of - what does Nim need to make it popular |
23:44:20 | FromGitter | <zacharycarter> it's fine in terms of - what do individual users want to see Nim have at its disposal |
23:44:42 | FromGitter | <Araq> it's not flawed. there is more to computing than "we need to run in the cloud" |
23:45:03 | dom96 | feel free to introduce labels to mark priority (which can imply what Nim needs to make it popular) |
23:45:31 | dom96 | Araq: lies, for all you know we are all living in the Cloud ;) |
23:45:44 | federico3 | zacharycarter: then we can create items for that, describe why they are important and vote them |
23:46:31 | FromGitter | <Araq> today it's the cloud. yesterday it was the REPL and more scientific libraries. |
23:46:52 | FromGitter | <Araq> tomorrow it will be a library for currencies |
23:46:53 | federico3 | the hype of the moment *yawn* |
23:47:02 | FromGitter | <zacharycarter> @Araq of course there is more than that - there's scientific computing, gamedev, etc... but I think the enterprise adopting Nim as a programming language, isn't something that's going to happen without a concentrated process |
23:47:29 | FromGitter | <zacharycarter> yes all of these needs are transient - but the fact is, corporations have needs and trend towards patterns |
23:47:34 | FromGitter | <Araq> then it will be libraries for virtual reality... oh wait, is that over already? |
23:47:50 | FromGitter | <zacharycarter> if you don't support these patterns - you'll miss the enterprise |
23:48:13 | FromGitter | <Araq> for your specific definition of "the enterprise" |
23:48:14 | dom96 | Araq: Time to stop. The cloud might not be the most important thing but it is up there. |
23:48:16 | federico3 | Araq: self driving cars of course |
23:48:40 | FromGitter | <Araq> I don't even disagree. but it surely gets tiresome. |
23:48:48 | dom96 | It's as if you're trying to discourage zacharycarter from working on this great package |
23:48:58 | FromGitter | <Araq> is IoT still a thing? we need to make Nim a top scorer for IoT devices |
23:49:23 | FromGitter | <Araq> it's not my intention to stop anybody from writing Nim libraries |
23:50:13 | dom96 | Good, so listen to my advice. |
23:50:54 | FromGitter | <Araq> what advice? I should shut up already, got it. |
23:51:07 | FromGitter | <Araq> ;-) |
23:52:53 | FromGitter | <zacharycarter> Araq - the issue here is (at least from my perspective) - you're focusing on Nim from your own viewpoint and what you think is or might be important to the language vs what I perceive to be. I'm offering you the viewpoint of someone who works for a fairly large company in the US that writes what is considered "enterprise" software, and at the moment can't leverage Nim for that use case. |
23:53:13 | FromGitter | <Araq> again, I'm working on the cloud APIs myself |
23:54:27 | dom96 | Araq: why aren't you on IRC? |
23:54:34 | FromGitter | <zacharycarter> okay - so then we can agree that they are at the moment, very relevant APIs and that Nim would benefit from allowing users to leverage Nim in that capacity |
23:54:41 | FromGitter | <Araq> of course |
23:55:25 | FromGitter | <Araq> but Nim already offers native+JS codegen, for example and I consider SPAs very relevant too |
23:55:41 | FromGitter | <zacharycarter> so that's the only real point i was trying to make - I think the community should pursue this goal if we can, if our end-goal is to evangelize / popularize Nim |
23:56:20 | FromGitter | <zacharycarter> yeah - but I can't sell my boss on Nim on that |
23:56:47 | FromGitter | <zacharycarter> now if I can write code for AWS or GCE or whatever with Nim |
23:57:07 | * | leorize joined #nim |
23:57:07 | FromGitter | <zacharycarter> or deploy the Nim code I write to those platforms and leverage services on those platforms |
23:57:10 | FromGitter | <zacharycarter> that's another story |
23:57:28 | dom96 | yep |
23:57:41 | FromGitter | <zacharycarter> I can't just be like - hey I can replace TypeScript with Nim |
23:57:42 | dom96 | There is a lot of people who would love to use Nim on AWS/GCE |
23:57:45 | federico3 | zacharycarter: if there's interest in a client lib for $service people (perhaps including you) will write it. Or are you saying that supporting $service should be part of the "core" language? |
23:57:45 | FromGitter | <zacharycarter> and gain any traction |
23:58:04 | FromGitter | <zacharycarter> federico3: the former |
23:58:48 | FromGitter | <zacharycarter> if I can say - hey, we can write our JS w/ Nim, we can write our AWS deployed services w/ Nim, etc... |
23:58:51 | FromGitter | <zacharycarter> then Nim can be sold to my boss |
23:59:54 | FromGitter | <zacharycarter> and then you have potentially another 100+ Nim programmers at your door |