| 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) |