00:11:07 | * | Matthias247 quit (Read error: Connection reset by peer) |
00:12:16 | * | nicktick joined #nim |
00:18:26 | onionhammer | Araq ive never heard of firebase |
00:18:30 | * | jaco60 quit (Ping timeout: 260 seconds) |
00:18:55 | onionhammer | why? |
00:20:14 | Araq | cause I wonder how to understand JavaScript crap that ultimately seems to build upon websockets |
00:20:20 | onionhammer | it looks like some sort of db as a service thing |
00:20:51 | Araq | there is no other way to get a PUSH protocol in the browser, right? |
00:20:52 | onionhammer | websockets arent too complicated.. simple message oriented protocol on top of TCP |
00:21:02 | onionhammer | there are a couple protocols |
00:21:07 | onionhammer | web RTC is another one |
00:21:17 | onionhammer | or long polling |
00:21:34 | onionhammer | where u basically just keep a GET alive until new data is available on the server |
00:21:45 | Araq | I think by now the new cool JS frameworks don't use long polling anymore |
00:21:54 | Araq | could be wrong of course. |
00:22:07 | strcmp1 | http://socket.io/ |
00:22:19 | strcmp1 | sometimes they do |
00:22:21 | onionhammer | a lot of them fall back for older browsers |
00:22:24 | strcmp1 | they will use whats available |
00:22:30 | strcmp1 | socket.io is an example of that |
00:22:39 | Araq | anyway I like to reverse engineer the protocol, kind of |
00:23:06 | Araq | and I like to avoid reading too much JS code |
00:23:11 | Araq | what are my options? |
00:23:13 | onionhammer | if you can avoid it :) |
00:23:15 | strcmp1 | yeah i prefer to use an abstraction that works flawlessly in most/all browsers |
00:23:27 | onionhammer | i just write typescript nowadays :) |
00:23:40 | onionhammer | makes javascript not so unbearable |
00:23:49 | onionhammer | whats wrong with websockets? |
00:23:49 | strcmp1 | js is just fine imo |
00:23:51 | * | gokr quit (Quit: Leaving.) |
00:24:26 | onionhammer | if ur a masochist i guess |
00:24:33 | strcmp1 | i see nothing wrong it |
00:24:38 | strcmp1 | i quite enjoy writing it |
00:24:39 | Araq | socket.io looks interesting indeed |
00:25:07 | onionhammer | i use signalR mainly, since it's .NETty on the server side |
00:26:45 | Araq | Learn how to create a whiteboard that users can draw on simultaneously. |
00:26:53 | Araq | Coming soon! Check out the chat application guide in the meantime. |
00:26:55 | Araq | LOL. |
00:27:46 | strcmp1 | oh also if you want to push events |
00:27:50 | strcmp1 | check out sse |
00:27:53 | strcmp1 | server side events |
00:28:07 | strcmp1 | sry |
00:28:10 | strcmp1 | server sent events |
00:29:47 | strcmp1 | you will run into browser compatibility issues im sure but if you dont care it seems less complicated to lean |
00:29:49 | strcmp1 | learn |
00:31:37 | Araq | well I guess I will do it differently altogether |
00:31:56 | Araq | and just make my server echo the concrete requests and learn the protocol this way |
00:32:11 | Araq | hopefully it will work out. |
00:32:53 | strcmp1 | ohh sorry i missed the start of that, you are learning how web sockets works |
00:33:25 | strcmp1 | i think it is relatively straight forward |
00:33:26 | Araq | not really, I want to know the low level aspects of it so my server can pretend it's a firebase server |
00:33:37 | strcmp1 | i see |
00:33:54 | strcmp1 | i think it uses an old http header to request an upgrade, and then it acts as a regular socket |
00:34:01 | strcmp1 | but i dont know, i never looked into it deeply |
00:35:55 | strcmp1 | by old i just mean i dont think it was ever considered useful until someone dreamt up websockets |
00:40:49 | onionhammer | araq the websocket server i wrote in nim is a straight port of a C websocket server iirc |
00:40:55 | onionhammer | it was pretty easy to follow |
00:41:02 | onionhammer | idk anything about firebase though :) |
00:44:52 | strcmp1 | seems ok http://enterprisewebbook.com/ch8_websockets.html#HANDSHAKE |
00:44:55 | strcmp1 | for docs |
00:45:02 | strcmp1 | and there is more to it than i said |
00:58:52 | Araq | onionhammer: I will definitely build upon your work :-) |
00:59:24 | krux02 | how do I create an empty sequence of some type on the right hand side of an assignment? |
01:04:28 | Araq | var s: seq[string] = @[] |
01:06:33 | krux02 | Araq, I mean the type needs to be on the right sido of the "=" and on the left it should work with type inference |
01:07:08 | Araq | newSeq[string]() |
01:07:17 | krux02 | in scala it would be: var list = Seq[String]() |
01:07:48 | Araq | var list = newSeq[string]() |
01:14:38 | krux02 | thanks very much |
01:17:30 | krux02 | from a quote within a macro, the quoting of a let expression gives me a weired ast: let foo: (system.[]|system.[]|system.[]|system.[]|system.[]|macros.[]|...)(seq, FooType) = (system.@|system.@|...) [] |
01:18:02 | krux02 | let test = quote do: let foo: seq[FooType] = @[] |
01:18:13 | krux02 | that was the invocation |
01:18:48 | krux02 | first of all, the system.[] do there, and why is it so different? |
01:20:39 | * | zepolen joined #nim |
01:23:34 | * | zepolen_ quit (Ping timeout: 256 seconds) |
01:28:53 | Araq | watch my talks :P |
01:29:28 | Araq | btw I don't use macros.quote |
01:29:44 | Araq | you should use a template and getAst |
01:30:02 | Araq | and .dirty on the template if you don't want these symbol sets |
01:30:57 | Araq | or does macros.quote now support .dirty? |
01:37:58 | krux02 | I don't know if it supports .dirty I haven't heared of it |
01:38:10 | krux02 | where can I get the talks? |
01:38:23 | krux02 | I only know the oscon talk |
01:42:22 | * | nim joined #nim |
01:42:46 | Araq | hi nim, what a good nick |
01:43:38 | * | nicktick1 joined #nim |
01:43:47 | strcmp1 | i prefer nimrod |
01:43:52 | strcmp1 | can you change it pls |
01:46:37 | * | Demon_Fox joined #nim |
01:46:47 | * | nicktick quit (Ping timeout: 255 seconds) |
01:49:20 | * | zepolen quit (Read error: Connection reset by peer) |
01:49:52 | * | zepolen joined #nim |
02:02:18 | * | nim quit (Ping timeout: 252 seconds) |
02:05:17 | * | brson quit (Quit: leaving) |
02:11:30 | krux02 | Araq: I am really interesed in those talks, but I can't find any |
02:12:08 | Araq | krux02: I will dig them out tomorrow, need to sleep now, good night |
02:12:24 | krux02 | good point I should also go to bed |
02:51:07 | * | jakesyl joined #nim |
03:02:16 | * | vendethiel joined #nim |
03:17:44 | * | BitPuffin|osx quit (Remote host closed the connection) |
03:18:35 | * | phira left #nim ("aarrgh") |
03:20:34 | * | darkf joined #nim |
03:25:00 | * | vendethiel quit (Ping timeout: 272 seconds) |
05:30:06 | * | cyraxjoe quit (Ping timeout: 240 seconds) |
05:32:57 | * | cyraxjoe joined #nim |
06:05:55 | * | n1ftyn8_ quit (Ping timeout: 240 seconds) |
06:11:16 | * | n1ftyn8_ joined #nim |
06:44:15 | * | zepolen quit (Read error: Connection reset by peer) |
06:46:52 | * | zepolen joined #nim |
06:56:59 | * | gour joined #nim |
07:06:27 | * | kniteli quit (Ping timeout: 265 seconds) |
08:14:41 | strcmp1 | i slept at same time as you both and i am now awake, i hope you are also awake or its very lazy of u |
08:15:30 | * | jaco60 joined #nim |
08:21:30 | * | jaco60 quit (Ping timeout: 260 seconds) |
08:22:14 | * | krux02 quit (Quit: Page closed) |
08:37:26 | * | desophos quit (Read error: Connection reset by peer) |
08:50:53 | * | yglukhov joined #nim |
09:06:38 | * | allan0_ joined #nim |
09:07:50 | * | allan0 quit (Ping timeout: 272 seconds) |
09:10:00 | * | zepolen quit () |
09:18:48 | * | nicktick1 quit (Quit: Leaving.) |
09:27:57 | * | lokulin joined #nim |
10:00:56 | * | gokr joined #nim |
10:40:25 | * | exebook quit (Remote host closed the connection) |
10:43:21 | * | exebook joined #nim |
10:51:46 | * | ekarlso quit (Changing host) |
10:51:46 | * | ekarlso joined #nim |
11:08:56 | * | Trustable joined #nim |
11:14:23 | * | gokr quit (Read error: Connection reset by peer) |
11:14:32 | * | gokr joined #nim |
11:18:55 | Araq | yglukhov: people demand some youtube link to my talk at NimCon 2015 |
11:21:17 | strcmp1 | singular 'people' now cmon |
11:21:22 | strcmp1 | dont be ego trippin |
11:21:47 | yglukhov | https://www.youtube.com/watch?v=zb3Sqs7lNJo |
11:22:56 | * | darkf__ joined #nim |
11:23:29 | strcmp1 | i guess its too late now but itd be nice if video description described topic more |
11:24:16 | strcmp1 | 'outline' part |
11:26:20 | * | darkf quit (Ping timeout: 272 seconds) |
11:34:16 | * | yglukhov_ joined #nim |
11:34:42 | * | yglukhov quit (Ping timeout: 265 seconds) |
11:41:13 | * | tankfeeder joined #nim |
11:46:50 | * | darkf__ is now known as darkf |
11:52:20 | * | tankfeeder quit (Quit: Leaving) |
11:57:58 | * | Demon_Fox quit (Quit: Leaving) |
12:03:22 | * | BitPuffin joined #nim |
12:04:47 | dom96 | Also this one: https://www.youtube.com/watch?v=4rJEBs_Nnaw |
12:05:13 | dom96 | Annoying that it doesn't show up in youtube search results for "nim lang" or "nim programming language" |
12:15:46 | yglukhov_ | This is the first search result for me when i search for "nim language". but maybe that's because of my company account... |
12:28:17 | * | yglukhov_ quit (Remote host closed the connection) |
12:28:50 | * | yglukhov joined #nim |
12:30:04 | * | yglukhov_ joined #nim |
12:33:40 | * | yglukhov quit (Ping timeout: 272 seconds) |
12:34:29 | * | yglukhov_ quit (Ping timeout: 246 seconds) |
12:37:54 | * | BitPuffin quit (Ping timeout: 256 seconds) |
12:44:12 | Araq | strcmp1: I thought both strcmp1 and krux02 like to see the link here, making you 2 "people" |
12:44:53 | Araq | dom96: http://yehudakatz.com/2010/08/21/using-considered-harmful-or-whats-wrong-with/ maybe Nimble needs a ~> operator for version comparisons too? |
12:52:06 | * | BitPuffin joined #nim |
13:01:54 | * | yglukhov joined #nim |
13:02:57 | dom96 | Araq: Already on my todo ;) |
13:03:27 | dom96 | The syntax will likely be 'pkg 1.x' not 'pkg ~> 1.0' though |
13:04:23 | dom96 | but hrm, maybe I'll support ~> too |
13:07:03 | * | yglukhov quit (Remote host closed the connection) |
13:07:04 | dom96 | looks more powerful |
13:09:01 | strcmp1 | Araq: correct |
13:09:05 | * | BitPuffin quit (Remote host closed the connection) |
13:09:14 | strcmp1 | i wanted to see it |
13:11:50 | * | nicktick joined #nim |
13:22:01 | Araq | dom96: ok, but maybe we should keep >= and change its semantics to adhere to strict versioning and introduce >=! for the "really greater than" operator? |
13:22:24 | dom96 | Let's not confuse users. |
13:22:28 | Araq | people write >= because it's the most natural thing. |
13:22:50 | Araq | good defaults don't "confuse users" |
13:24:37 | * | jaco60 joined #nim |
13:24:44 | dom96 | Here is the relevant issue: https://github.com/nim-lang/nimble/issues/130 |
13:25:31 | dom96 | I'll think about doing that |
13:25:38 | dom96 | might want to write it as a comment there to remind me |
13:27:06 | dom96 | But no, I don't think I will like it. |
13:27:14 | dom96 | You're changing the meaning of >= to something completely different |
13:27:33 | dom96 | better to make the use of >= an error |
13:27:49 | dom96 | unless you specify some option in the nimble file |
13:28:23 | Araq | I replied. |
13:28:58 | Araq | ~> is ugly though, it should be >~ |
13:29:29 | Araq | but *shrug* it's from Ruby, so it's beautiful by definition. |
13:30:30 | dom96 | *shrug* |
13:30:39 | dom96 | The color of the bikeshed doesn't matter |
13:31:20 | Araq | hackage just uses Dependencies base (>=4.6 && <5), split (>0), wxdirect (>=0.90.1.1) |
13:31:30 | Araq | >= && < |
13:33:05 | dom96 | yeah. Nimble already supports that |
13:33:28 | dom96 | brb |
13:34:42 | Araq | we need to remove '>' though. "I tested it with X.X and it didn't work so it has to be greater than that" |
13:42:54 | strcmp1 | yea it use to be the "spermy operator" until ruby became more PC, and in any case it causes much confusion. |
13:43:02 | strcmp1 | for newbies. |
13:47:34 | Araq | lol wut? so what do they call it now? |
13:48:15 | Araq | "gender agnostic operator"? |
13:54:39 | strcmp1 | "appromixation operator" or sth |
14:02:14 | * | yglukhov joined #nim |
14:02:23 | * | yglukhov quit (Remote host closed the connection) |
14:04:04 | * | yglukhov joined #nim |
14:08:53 | * | yglukhov quit (Ping timeout: 265 seconds) |
14:19:11 | * | BitPuffin joined #nim |
14:21:03 | Trustable | Hi all. Does anyone know what causes an "Error: internal error: cgmeth.genConv" after update to Nim 0.12.0? |
14:26:49 | reactormonk | Trustable, code plz |
14:30:53 | * | yglukhov joined #nim |
14:32:53 | Trustable | reactormonk: I'm trying to isolate the code. With devel I get "Error: there is no subtype relation between x and y" |
14:34:55 | * | yglukhov quit (Ping timeout: 240 seconds) |
14:36:23 | Araq | Trustable: we changed how multi methods resolve |
14:37:09 | Trustable | Araq: ok, I try to understand that now, I have enough time :) |
15:09:53 | * | yglukhov joined #nim |
15:15:27 | dom96 | Araq: I don't understand your logic for removing `>` |
15:16:12 | Araq | dom96: foo > 1.0 is weird. |
15:16:27 | Araq | it always is something like foo >= 1.1 |
15:16:49 | Araq | since you cannot build and test against > 1.0, but only against a concrete version |
15:17:07 | Araq | which is why there is always an equality involved |
15:17:35 | Araq | foo >= 1.1 means "I built and tested with 1.1, later versions should work too" |
15:17:54 | dom96 | foo > 1.0 can mean the same thing, just written differently. |
15:17:58 | dom96 | I don't see how it harms anyone |
15:18:23 | Araq | but foo > 1.0 might also just be a typo. |
15:19:03 | Araq | and strictly speaking "foo > 1.0" means "I tested with 1.0 and it fails, but I assume later than 1.0 works" |
15:19:28 | Araq | which is not really good enough. |
15:21:35 | dom96 | Just don't use it if you don't like it. |
15:25:03 | * | nicktick quit (Read error: Connection reset by peer) |
15:40:04 | Araq | well sdl2 had this typo. |
15:40:12 | Araq | you cannot tell users to not make typos. |
15:40:19 | Araq | that makes no sense. :P |
15:58:20 | strcmp1 | cut off their hands |
16:33:01 | Araq | Trustable: if it's urgent, fix compiler/cgmeth.nim so that instead of a typo, it just returns the original node and create a PR |
16:33:09 | Araq | er |
16:33:17 | Araq | instead of an error, lol |
16:34:29 | Trustable | Araq: I first need to understand the reason behind this error message |
16:35:08 | Araq | there is some weird discrepancy between two different compiler passes |
16:35:26 | Araq | one says "ok, this overrides that method, that's fine" |
16:35:53 | Araq | the second pass says "wait a sec, there is no subtype relation, I cannot generate code for this" |
16:36:14 | Araq | apparently the second pass is wrong and should just shut up. |
16:36:34 | Araq | but it all needs to be rethought by me and written down in the manual |
16:36:59 | Araq | the root cause of the problem is that the manual is silent about how multi method overriding works in detail. |
17:04:23 | * | pregressive joined #nim |
17:05:45 | * | slaven joined #nim |
17:06:12 | * | pregress_ joined #nim |
17:06:17 | * | pregressive quit (Remote host closed the connection) |
17:06:22 | * | slaven left #nim (#nim) |
17:07:09 | Trustable | Araq, reactormonk: can you tell me, why those two examples do not compile? https://gist.github.com/trustable-code/6a42311513460f78b88a |
17:18:41 | def- | Trustable: try to add method test(obj: BaseClass, obj2: BaseClass) |
17:19:02 | def- | with {.base.} |
17:22:48 | Trustable | def-: wow, that really helps, but why? |
17:55:14 | * | yglukhov quit (Remote host closed the connection) |
18:07:02 | * | brson joined #nim |
18:23:42 | * | gour_ joined #nim |
18:26:14 | * | gour quit (Ping timeout: 246 seconds) |
18:41:27 | * | cyraxjoe_ joined #nim |
18:41:59 | * | cyraxjoe quit (Ping timeout: 255 seconds) |
18:47:26 | * | yglukhov joined #nim |
18:51:26 | * | yglukhov quit (Ping timeout: 240 seconds) |
18:52:22 | * | gour_ is now known as gour |
19:06:00 | * | boopisaway is now known as boop |
19:13:46 | * | gour left #nim ("WeeChat 1.3") |
19:57:34 | * | Jehan_ joined #nim |
20:06:11 | * | desophos joined #nim |
20:49:43 | * | darkf quit (Quit: Leaving) |
20:57:22 | Araq | Jehan_: speaking of which, when should method A override method B? |
20:57:39 | Jehan_ | Araq: Umm, context? |
20:58:39 | Araq | well you can have m1(a, b, c) m2(a', b, c') with a <: a' and c' <: c |
20:59:01 | Araq | and b of e.g. type int |
21:00:04 | Araq | m2 overrides m1 iff all parameters are subtypes (or identical) |
21:00:13 | Araq | right? |
21:00:47 | Jehan_ | I'm assuming m1 and m2 do not actually have different names? |
21:01:10 | Jehan_ | But are simply two derived versions of the same method? |
21:01:45 | Araq | yes, exactly |
21:02:21 | Jehan_ | If you question is what should happen if you have one method with type signature (S, T) and one with (T, S) where S <: T, then the answer is that the natural "more specific than" relation is only a partial order which you have to make a total order in some arbitrary way. |
21:02:38 | Jehan_ | But I don't think there's a single right approach for that. |
21:03:52 | Jehan_ | It's one of the reasons why I've ultimately come to prefer single dispatch over multiple dispatch for most application domains (that aren't computer algebra). |
21:07:10 | Araq | well the plan always was to mark ambiguities at compile-time |
21:07:51 | Araq | of course the runtime ambiguities are resolved from left-to-right |
21:08:05 | Araq | since the alternative would be too expensive |
21:09:24 | Araq | but one could argue that since we now have the .base annotation it's not necessary to be overly strict and allow (S, T) (T, S) |
21:09:25 | Jehan_ | That's fine. Honestly, people who actively use multiple dispatch need to be explicit about how they want these resolved. |
21:09:57 | Jehan_ | It is also possible to turn this situation into an error. |
21:10:37 | Araq | tried to search for some papers who give definite answers to these questions but couldn't come up with anything really |
21:10:37 | Jehan_ | So people are forced to disambiguate, i.e. specify the case for (S, S) explicitly. |
21:11:15 | Jehan_ | I think the problem is that this can blow up for certain use cases. |
21:12:13 | Jehan_ | In GAP we use order of installation (I think) and allow users to also manipulate a numerical precedence level. |
21:12:38 | Jehan_ | But that's for an interpreted language. |
21:34:32 | * | brson quit (Ping timeout: 272 seconds) |
21:41:39 | * | Jehan_ quit (Quit: Leaving) |
22:10:13 | * | pregress_ quit (Remote host closed the connection) |
22:40:21 | * | Demon_Fox joined #nim |
22:41:34 | * | exebook quit (Quit: Leaving) |
22:41:42 | * | exebook_ joined #nim |
22:46:33 | * | boop is now known as boopisaway |
22:47:46 | * | Matthias247 joined #nim |
23:12:31 | * | Demon_Fox quit (Quit: Leaving) |
23:15:14 | * | saml quit (Quit: Leaving) |
23:16:08 | * | Demon_Fox joined #nim |
23:25:36 | * | yglukhov joined #nim |
23:28:45 | * | yglukhov quit (Remote host closed the connection) |
23:35:48 | * | BitPuffin quit (Ping timeout: 256 seconds) |
23:55:19 | * | Matthias247 quit (Read error: Connection reset by peer) |