00:07:12 | * | nairobi quit (Remote host closed the connection) |
00:13:03 | * | MyMind quit (Ping timeout: 264 seconds) |
00:16:50 | * | endragor joined #nim |
00:18:54 | * | yglukhov joined #nim |
00:21:33 | * | endragor quit (Ping timeout: 276 seconds) |
00:23:03 | * | yglukhov quit (Ping timeout: 240 seconds) |
00:34:16 | * | MyMind joined #nim |
00:39:55 | * | cnu- quit (Ping timeout: 258 seconds) |
00:50:03 | * | ftsf joined #nim |
00:51:32 | * | cnu- joined #nim |
00:54:10 | * | jbomo joined #nim |
00:56:29 | * | libman quit (Remote host closed the connection) |
00:56:35 | * | jbomo left #nim (#nim) |
01:04:16 | * | MyMind quit (Read error: Connection reset by peer) |
01:05:24 | * | MyMind joined #nim |
01:09:44 | * | GangstaCat quit (Quit: Leaving) |
01:15:48 | * | PMunch quit (Quit: leaving) |
01:15:55 | * | fastrom quit (Quit: Leaving.) |
01:20:27 | * | kulelu88 quit (Quit: Leaving) |
01:39:40 | * | chemist69 quit (Disconnected by services) |
01:39:40 | * | chemist69_ joined #nim |
02:10:59 | * | girvo joined #nim |
02:11:30 | girvo | Hey all |
02:12:32 | ftsf | o/ girvo |
02:12:36 | * | desophos quit (Read error: Connection reset by peer) |
02:13:01 | girvo | Q: If I had an AF_UNIX socket that is speaking HTTP, whats the best way of parsing those messages? httpclient is slightly too high-level it seems, but it doesn't export its internal methods for parsing HTTP messages D: |
02:14:05 | ftsf | girvo, modify httpclient to export them? =) |
02:14:29 | girvo | ftsf: That's my escape-hatch if I can't find a better way haha |
02:14:50 | girvo | There's various C libs I've come across: https://github.com/h2o/picohttpparser |
02:14:54 | girvo | et al. |
02:15:05 | ftsf | i'd go with modifying a pure nim one over using a C lib |
02:15:16 | girvo | ftsf: I agree entirely |
02:15:43 | ftsf | perhaps they should be exported anyway |
02:15:47 | girvo | Especially because it seems most of the C libs seem to require some serious hand-holding |
02:15:51 | girvo | to not leak, etc. |
02:16:17 | girvo | Maybe, there's one parse method that takes a Socket as its first param, which looks promising |
02:16:32 | girvo | But I'm worried that the methods are too internal-ish to expose |
02:16:40 | ftsf | yeah, parseRequest seems like it could be exposed |
02:16:46 | ftsf | err parseResponse |
02:16:51 | girvo | Also, how spec-compliant is our parseResponse? |
02:16:55 | girvo | Yeah that's the one ftsf ! |
02:17:08 | ftsf | no idea =) so many specs! |
02:17:39 | ftsf | need some test cases I guess |
02:19:05 | girvo | I might have a look at it, maybe it's worth me adding some tests along with exposing it :) |
02:19:31 | girvo | A lot of the HTTP message parser libs I've come across regardless of language don't seem to be spec compliant, because the spec is so hairy lol |
02:20:57 | * | yglukhov joined #nim |
02:21:19 | * | space-wizard quit (Quit: My Mac has gone to sleep. ZZZzzz…) |
02:23:45 | * | kingofoz quit (Ping timeout: 276 seconds) |
02:24:17 | * | kingofoz joined #nim |
02:25:24 | * | yglukhov quit (Ping timeout: 260 seconds) |
02:26:29 | ftsf | more tests is never bad |
02:26:58 | * | brechtm joined #nim |
02:32:12 | * | brechtm quit (Ping timeout: 276 seconds) |
02:37:26 | * | space-wizard joined #nim |
02:38:01 | * | space-wizard quit (Max SendQ exceeded) |
02:39:02 | * | space-wizard joined #nim |
02:46:30 | * | girvo quit (Ping timeout: 276 seconds) |
03:07:19 | * | space-wizard quit (Quit: My Mac has gone to sleep. ZZZzzz…) |
03:20:45 | * | cheatfate_ quit (Read error: Connection reset by peer) |
03:20:50 | * | cheatfate__ joined #nim |
03:23:08 | * | yglukhov joined #nim |
03:23:33 | * | space-wizard joined #nim |
03:24:08 | * | space-wizard quit (Max SendQ exceeded) |
03:24:47 | * | space-wizard joined #nim |
03:28:06 | * | yglukhov quit (Ping timeout: 276 seconds) |
03:28:36 | * | desophos joined #nim |
03:37:13 | * | cheatfate__ quit (Read error: Connection reset by peer) |
03:37:19 | * | cheatfate_ joined #nim |
03:38:29 | * | cheatfate_ quit (Read error: Connection reset by peer) |
03:39:11 | * | cheatfate_ joined #nim |
03:40:31 | * | cheatfate_ quit (Read error: Connection reset by peer) |
03:40:50 | * | cheatfate_ joined #nim |
03:41:26 | * | vegansk quit (Remote host closed the connection) |
03:53:07 | * | girvo joined #nim |
04:00:33 | * | girvo quit (Ping timeout: 240 seconds) |
04:00:58 | * | M-max quit (Remote host closed the connection) |
04:00:58 | * | Flox42 quit (Remote host closed the connection) |
04:00:58 | * | M-Quora quit (Remote host closed the connection) |
04:01:03 | * | brson quit (Quit: leaving) |
04:03:29 | * | girvo joined #nim |
04:03:39 | * | endragor joined #nim |
04:05:27 | * | Flox42 joined #nim |
04:08:24 | * | ludocode quit (Ping timeout: 276 seconds) |
04:19:37 | * | endragor quit (Remote host closed the connection) |
04:20:06 | * | girvo quit (Ping timeout: 276 seconds) |
04:22:02 | * | ludocode joined #nim |
04:29:29 | * | endragor joined #nim |
04:33:16 | * | girvo joined #nim |
04:38:18 | * | girvo quit (Ping timeout: 276 seconds) |
04:51:48 | * | girvo joined #nim |
04:52:01 | * | M-max joined #nim |
04:52:10 | * | M-Quora joined #nim |
04:56:08 | * | girvo quit (Ping timeout: 244 seconds) |
04:59:34 | * | castlelore joined #nim |
05:01:53 | * | girvo joined #nim |
05:07:59 | * | irrequietus joined #nim |
05:13:27 | * | gokr joined #nim |
05:18:29 | * | castlelore quit (Read error: Connection reset by peer) |
05:24:50 | * | yglukhov joined #nim |
05:29:51 | * | yglukhov quit (Ping timeout: 264 seconds) |
05:34:54 | * | xet7_ quit (Ping timeout: 244 seconds) |
05:58:36 | * | endragor quit (Remote host closed the connection) |
06:08:37 | * | fastrom joined #nim |
06:14:26 | ftsf | https://raw.githubusercontent.com/nim-lang/Nim/ada7282896999f5b78cc3929dcd174989ad3508f/web/assets/news/images/survey/reliability.png this chart is hilarious <3 |
06:19:16 | * | endragor joined #nim |
06:26:29 | * | brechtm joined #nim |
06:28:09 | * | endragor quit (Remote host closed the connection) |
06:29:52 | ftsf | should I be using {.noSideEffect.} does not using it make code generation worse? |
06:30:27 | ftsf | or more just a safety thing? |
06:32:18 | * | nairobi joined #nim |
06:32:53 | * | chemist69_ is now known as chemist69 |
06:33:48 | * | irrequietus quit (Ping timeout: 244 seconds) |
06:37:42 | * | yglukhov joined #nim |
06:39:15 | * | brechtm quit (Remote host closed the connection) |
06:40:09 | * | endragor joined #nim |
06:40:55 | * | chemist69 quit (Quit: WeeChat 1.5) |
06:44:41 | * | Arrrr joined #nim |
06:48:05 | * | chemist69 joined #nim |
06:54:42 | * | filcuc joined #nim |
06:56:30 | * | space-wizard quit (Quit: My Mac has gone to sleep. ZZZzzz…) |
07:11:48 | * | girvo quit (Ping timeout: 250 seconds) |
07:13:45 | * | girvo joined #nim |
07:18:14 | * | girvo quit (Ping timeout: 244 seconds) |
07:21:51 | * | hendi__ joined #nim |
07:25:05 | * | fastrom quit (Quit: Leaving.) |
07:25:26 | * | fastrom joined #nim |
07:26:17 | * | brechtm joined #nim |
07:28:19 | * | Trustable joined #nim |
07:30:04 | * | fastrom quit (Ping timeout: 258 seconds) |
07:31:19 | * | fastrom joined #nim |
07:36:09 | * | Arrrr quit (Ping timeout: 244 seconds) |
07:43:07 | * | nairobi quit (Remote host closed the connection) |
07:48:21 | * | Matthias247 joined #nim |
07:48:38 | * | nairobi joined #nim |
07:53:08 | * | nairobi quit (Ping timeout: 265 seconds) |
07:53:41 | * | GustavoLapasta joined #nim |
07:53:44 | * | nairobi joined #nim |
08:01:06 | * | fredrik92 joined #nim |
08:01:43 | * | bjz joined #nim |
08:02:51 | * | brechtm quit (Remote host closed the connection) |
08:12:40 | * | PMunch joined #nim |
08:14:39 | * | girvo joined #nim |
08:18:58 | * | girvo quit (Ping timeout: 250 seconds) |
08:19:01 | * | brechtm joined #nim |
08:25:14 | * | nairobi quit (Remote host closed the connection) |
08:28:29 | * | nairobi joined #nim |
08:30:39 | * | Arrrr joined #nim |
08:30:39 | * | Arrrr quit (Changing host) |
08:30:39 | * | Arrrr joined #nim |
08:52:03 | * | rbergmair joined #nim |
08:56:44 | * | nicanaca0 quit (Quit: Leaving) |
08:56:50 | gokr | For all wondering what the heck I have done with Spry etc, here is a small movie: http://krampe.se/spry-ide.mp4 |
08:58:23 | gokr | Obviously the interesting part is the liveness of it all, again, something Smalltalk has had since 1980. For a Smalltalker the interesting part is that its native UI, not something the current popular Smalltalk environments do much of. |
08:59:41 | * | GustavoLapasta quit (Quit: Leaving) |
08:59:51 | * | nairobi quit (Ping timeout: 264 seconds) |
09:00:00 | * | GustavoLapasta joined #nim |
09:02:39 | gokr | dom96: If you have a minute, I am curious if you can build it on your box. |
09:04:05 | gokr | dom96: Basically just clone github.com/gokr/spry - go into "src" and run "./makeideosx.sh". And then try to run "./ideosx". |
09:04:22 | gokr | If anyone else could try it, that would be... helpful. |
09:11:38 | * | nairobi_ joined #nim |
09:13:25 | * | fastrom quit (Quit: Leaving.) |
09:15:30 | * | girvo joined #nim |
09:20:10 | * | girvo quit (Ping timeout: 244 seconds) |
09:27:52 | * | okami quit (Ping timeout: 250 seconds) |
09:32:28 | * | bjz_ joined #nim |
09:33:04 | * | bjz quit (Ping timeout: 250 seconds) |
09:35:49 | * | nairobi_ quit (Read error: Connection reset by peer) |
09:40:41 | * | okami joined #nim |
09:44:02 | def- | What's the return type of a macro supposed to be now that stmt is deprecated? |
09:46:20 | flyx | def-: typed |
09:46:42 | def- | well, that needs to be changed all over Nim code and documentation |
09:47:02 | def- | also, how can I do this without the deprecated immediate? https://github.com/def-/nim-unsorted/blob/master/extendlang.nim#L7 |
09:51:01 | Araq | def-: typed or untyped actually doesn't make a difference for return types |
09:51:12 | Araq | likely you mean 'void' though |
09:52:18 | Araq | instead of .immediate, use 'untyped' for all parameters. that has the same effect. |
09:53:24 | Araq | ftsf: code generation is not affected and modulo loopholes in the stdlib, .noSideEffect is inferred for you anyway |
09:54:02 | def- | Araq: sure it makes a difference. if I want to use a template as an expr, I need to make the return type untyped |
09:54:56 | * | nairobi joined #nim |
09:59:04 | Araq | oh yeah, that's a leftover aka bug |
10:00:03 | def- | and what I did in extendlang.nim with immediate seems impossible without |
10:00:18 | * | nairobi quit (Remote host closed the connection) |
10:02:34 | Araq | how so? types were never considered for .immediate to begin with so things like template foo(x: int) {.immediate.} never were valid |
10:03:01 | def- | it just fails to compile with: extendlang.nim(35, 3) Error: undeclared identifier: 'then' |
10:03:08 | Arrrr | placebo pragma |
10:09:07 | ftsf | Araq, thanks |
10:09:25 | * | ftsf quit (Quit: :q!) |
10:11:45 | Sentreen | About the httpclient thing, wouldn't splitting the library be preferable over expoising internal procs? i.e. you create a low level module with the appropriate parsing procs, and you make httpclient use that module |
10:15:30 | def- | unnamed tuples are no longer automatically converted to named ones when assigned? |
10:15:54 | euantor | Sentreen: my thoughts exactly |
10:15:59 | def- | This stopped compiling: https://github.com/def-/nim-unsorted/blob/master/rpntoinfix.nim#L5 |
10:16:04 | euantor | Create a module such as "httpcore" or "http_parser" |
10:16:24 | * | girvo joined #nim |
10:16:49 | euantor | That nly does HTTP parsing |
10:17:00 | * | xet7 joined #nim |
10:17:22 | euantor | There was a site/blog post about it, that I was trying to find. i think it was "networkless protocols" or something. Mostly based around Python, but still relevant |
10:21:30 | * | girvo quit (Ping timeout: 276 seconds) |
10:22:30 | def- | Araq: my bad, if2 works with untyped params |
10:37:33 | * | desophos quit (Read error: Connection reset by peer) |
10:49:22 | * | nairobi joined #nim |
10:50:13 | * | yglukhov_ joined #nim |
10:50:24 | * | yglukhov quit (Read error: Connection reset by peer) |
10:52:30 | * | arnetheduck joined #nim |
10:52:30 | Araq | def-: yeah that's another thing. named vs unnamed tuples are really hard to support with this strange subtype relation between them |
10:53:02 | Araq | so the compiler is getting more strict about them. in the longer run I would like to have "tuple unpacking" for objects and deprecated named tuples |
10:53:28 | Araq | or maybe we can come up with a better solution? |
10:53:54 | * | nairobi quit (Ping timeout: 265 seconds) |
10:53:59 | def- | how do you imagine tuple unpacking? |
10:56:02 | * | Demon_Fox quit (Quit: Leaving) |
10:57:10 | Araq | let (a, b) = Obj(...) and the field order in the Obj is used |
10:57:29 | def- | ah, that. |
10:57:33 | def- | Yes, that's great |
10:57:56 | Arrrr | inc approval |
11:01:46 | * | Demon_Fox joined #nim |
11:02:53 | * | Demon_Fox quit (Remote host closed the connection) |
11:03:46 | Arrrr | would you support '_' too? That would allow to make more complex comparisons, like 'Obj(a:5, _) == myObj' |
11:10:33 | * | brechtm_ joined #nim |
11:13:19 | * | brechtm quit (Ping timeout: 260 seconds) |
11:14:40 | Araq | that's pattern matching. has nothing to do with tuple unpacking |
11:14:54 | Araq | and is supported by a nimble macro package |
11:15:08 | Araq | and I don't see a need to touch it for v1 |
11:16:13 | * | couven92 joined #nim |
11:17:14 | * | girvo joined #nim |
11:19:40 | * | fredrik92 quit (Ping timeout: 250 seconds) |
11:20:51 | * | couven92 is now known as fredrik92 |
11:21:50 | * | girvo quit (Ping timeout: 250 seconds) |
11:26:11 | Sentreen | Are unnamed tuples present in 14.2? Or are they only available on devel so far? |
11:31:30 | * | nairobi joined #nim |
11:31:36 | * | GangstaCat joined #nim |
11:37:27 | Arrrr | I think they are from 13 |
11:39:08 | Sentreen | IS it possible that they are undocumented? My google-fu is failing me |
11:40:31 | Arrrr | Are you talking about being able to write `let a = (1, true, "abc")` ? |
11:40:46 | * | brechtm_ quit (Remote host closed the connection) |
11:41:36 | Sentreen | yes |
11:42:05 | * | brechtm joined #nim |
11:42:18 | Arrrr | http://nim-lang.org/docs/manual.html#types-tuples-and-object-types |
11:43:06 | Sentreen | I can't believe I missed that |
11:43:08 | Sentreen | thanks |
11:44:21 | Arrrr | Also: http://nim-lang.org/docs/manual.html#statements-and-expressions-tuple-unpacking |
11:50:25 | * | nsf quit (Quit: WeeChat 1.5) |
11:57:13 | * | nairobi quit (Ping timeout: 252 seconds) |
12:01:14 | * | nairobi joined #nim |
12:14:42 | * | brain5ide joined #nim |
12:14:52 | * | brain5ide left #nim ("Leaving") |
12:17:38 | * | nairobi quit (Read error: Connection timed out) |
12:17:52 | * | girvo joined #nim |
12:18:44 | * | nairobi joined #nim |
12:19:17 | * | Arrrr quit (Quit: WeeChat 1.5) |
12:22:44 | * | girvo quit (Ping timeout: 260 seconds) |
12:47:07 | chemist69 | and: http://nim-lang.org/docs/tut1.html#advanced-types-tuples |
12:50:40 | flyx | why is the suite name never displayed by unittest? |
12:51:10 | flyx | there seems to be no point of having a suite name if it does not find its way into the output |
12:51:31 | flyx | I would expect something like [Suite] *suite name* \n [OK] *test name \n ... |
13:14:16 | Araq | fwiw I don't see the point in the suite name no matter if displayed or not |
13:17:54 | * | girvo joined #nim |
13:20:55 | flyx | well I mainly use it to structure my tests, but there is no structure in the output if it is not displayed |
13:22:12 | * | girvo quit (Ping timeout: 240 seconds) |
13:22:16 | Araq | do you have that many tests? :P |
13:24:45 | euantor | Tests for every proc, usually |
13:25:30 | flyx | for example, this is NimYAML test output: https://gist.github.com/flyx/5a7575f1a4a7da8e2915efec96142735 |
13:25:47 | flyx | as you see, I prepended the suite name to every test to see where it belongs to |
13:26:16 | flyx | (this does not even include the test output from the external YAML test suite) |
13:30:01 | Araq | could have fixed unittest.nim instead ;-) |
13:30:19 | flyx | well I can still do that |
13:52:08 | Sentreen | Is there some way to convert a seq to an array? |
13:53:20 | * | endragor quit (Remote host closed the connection) |
13:54:23 | flyx | Sentreen: you usually do not want to do that because a seq's size is dynamic while an array's size is static |
13:54:49 | * | ftsf joined #nim |
13:54:55 | flyx | Sentreen: but nothing hinders you from iterating over the seq and setting items of the array if you need it |
13:55:15 | Sentreen | right, I should mention I'm trying to do this at compile time. I have a const that is created by a list comprehension |
13:58:49 | flyx | Sentreen: well, this works: https://gist.github.com/flyx/9323fe962ebe45b45526135a1a4f1a95 |
13:59:35 | flyx | it is not very pretty because it does not take the const value as input (because you would get a NimNode(nnkIdent) from it instead of the actual value) |
14:01:25 | Sentreen | That still looks far better than the workaround I was looking at |
14:01:27 | Sentreen | thanks :) |
14:03:18 | * | irrequietus joined #nim |
14:06:20 | * | GustavoLapasta quit (Read error: Connection reset by peer) |
14:09:28 | * | nairobi quit (Remote host closed the connection) |
14:16:59 | * | girvo joined #nim |
14:19:57 | * | pregressive joined #nim |
14:21:44 | * | girvo quit (Ping timeout: 265 seconds) |
14:21:48 | gokr | dom96: Ok, can you (or anyone on OSX) try again with http://krampe.se/ideosx ? |
14:22:01 | gokr | I think I solved it :) |
14:26:34 | Araq | gokr: works for me |
14:29:13 | gokr | cool |
14:31:27 | gokr | The fun part is that its live - so you can add buttons to it etc :) |
14:32:30 | gokr | Evidently OSX wasn't happy with ... the composition of buttons in boxes in window. Had to throw in a Group in there somewhere - then it worked. Otherwise OSX tried to create a million pixel wide window - and then it barfed out. |
14:32:50 | gokr | Oddly it did work on my oldish OSX though. |
14:33:05 | gokr | Araq: Thanks for testing |
14:33:17 | gokr | (damn nice little library this libui) |
14:34:25 | Araq | yup. it made me stop on wxWidgets for the time being. |
14:37:16 | * | arnetheduck quit (Ping timeout: 252 seconds) |
14:37:27 | gokr | As I mentioned to dom96 though - it's still a bit weak on popup menus and also - there is no code editor component. |
14:38:12 | * | nairobi joined #nim |
14:40:37 | emery | how does one override the c++ compiler from the command line? |
14:40:59 | * | nairobi quit (Remote host closed the connection) |
14:41:29 | def- | emery: maybe it was --gcc.cpp.exe:myg++ --gcc.cpp.linkerexe:myg++ |
14:41:44 | emery | that sounds right |
14:42:12 | Araq | still haven't decided whether I will port nimedit to it though. that would give it a code editor component |
15:02:38 | * | couven92 joined #nim |
15:05:32 | * | fredrik92 quit (Ping timeout: 240 seconds) |
15:07:59 | * | nairobi joined #nim |
15:09:03 | * | themagician joined #nim |
15:17:00 | * | girvo joined #nim |
15:17:50 | * | nairobi quit (Remote host closed the connection) |
15:21:45 | * | girvo quit (Ping timeout: 265 seconds) |
15:24:05 | * | couven92 quit (Quit: Shutting down...) |
15:39:26 | * | pregressive quit (Read error: Connection reset by peer) |
15:39:54 | * | pregressive joined #nim |
15:54:32 | * | Roin joined #nim |
16:07:17 | * | brson joined #nim |
16:12:55 | * | nairobi joined #nim |
16:16:57 | * | girvo joined #nim |
16:21:03 | * | girvo quit (Ping timeout: 240 seconds) |
16:21:58 | * | nairobi quit (Remote host closed the connection) |
16:25:18 | * | space-wizard joined #nim |
16:25:53 | * | space-wizard quit (Max SendQ exceeded) |
16:26:32 | * | space-wizard joined #nim |
16:36:25 | * | filcuc quit (Read error: Connection reset by peer) |
16:48:33 | dom96 | gokr: saw your video earlier while at work, really awesome |
16:49:05 | rbergmair | hi everyone! (as this is my first interaction here, let me introduce myself: i'm new to nim-lang, having come across it only a few days ago, but have been on a steep learning curve since then, and am really loving it. thanks for your great work!) |
16:49:41 | rbergmair | anyway: at the risk that this might be a rtfm question: is there a way to do in nim what you'd do with next(x) in python for an iterator? |
16:50:48 | rbergmair | all i'm trying to do at the moment is to write a unit test that says: assert that the first element is this, assert that the second element is this, assert that the third element is this, etc. using a for-loop here seems a bit far-fetched. |
16:51:34 | rbergmair | i couldn't find anything like a next(), looking through the stdlib doc for system, nor in the manual. i've also worked through the tutorial, and through most chapters of nim in action, but can't seem to remember anything like that. |
16:52:49 | * | yglukhov_ quit (Ping timeout: 260 seconds) |
16:53:50 | flyx | rbergmair: this is possible with first class iterators: http://nim-lang.org/docs/manual.html#iterators-and-the-for-statement-first-class-iterators |
16:54:30 | flyx | rbergmair: however a) most iterators in the stdlib are inline iterators and b) does not work for the JS backend |
16:54:58 | Araq | b) is being worked on, thanks for reminding me again |
16:55:03 | * | nsf joined #nim |
16:55:09 | flyx | :) |
16:56:50 | rbergmair | ah, interesting, this thing about first class iterators. should work for me, since i'm implementing it myself, so making it a closure iterator should be straightforward. thanks for the pointer. |
16:58:07 | Araq | rbergmair: I's use a case ste |
16:58:20 | Araq | a case statement in the for loop body |
17:00:35 | rbergmair | oh, right, that's what i was about to ask. so am i understanding this right that inline operators are in some sense considered "better citizens" of the country of nim? so it would be better style / more idiomatic if i wrote my unit test to use a for-loop, rather than rewriting my iterator to be a first class iterator? |
17:07:19 | * | brechtm quit (Remote host closed the connection) |
17:07:36 | * | nairobi joined #nim |
17:12:21 | * | nairobi quit (Ping timeout: 265 seconds) |
17:13:52 | * | hendi__ quit (Ping timeout: 240 seconds) |
17:16:59 | * | girvo joined #nim |
17:21:20 | Calinou | hi! |
17:21:30 | * | girvo quit (Ping timeout: 250 seconds) |
17:32:57 | flyx | rbergmair: iterators are by default inline, so inline iterators are more widely used. also, using first class iterators is *kinda* low-level since you call the iterator once and then have to test for finished() |
17:33:51 | chemist69 | Why can't I use a var enum in `proc test(unit: var enum) =`? |
17:34:00 | chemist69 | It gives me `Error: ')' expected` |
17:35:23 | flyx | chemist69: um, `enum` is a keyword for defining an enum, not a type that can be directly used |
17:36:15 | chemist69 | But I can use it without var: `proc test(unit: enum) =` |
17:36:27 | chemist69 | This compiles. ----------^ |
17:36:36 | chemist69 | and runs correctly. |
17:37:00 | flyx | interesting |
17:37:34 | flyx | well you can of course do `proc test[T: enum](unit: var T) =` |
17:37:51 | chemist69 | Yes, I did that already. |
17:38:18 | chemist69 | Just with [T], your version is better. |
17:53:41 | Calinou | dom96: https://lut.im/1N12GuGT6P/wjTEQvd5QIdst31m.png - Bountysource banner added, it disappears when scrolling (since navigation bar goes over) |
17:53:56 | Calinou | needs a Bountysource icon next to it, there's none in Font Awesome so I'll look for a SVG |
17:54:35 | * | brechtm joined #nim |
17:54:37 | dom96 | sure, that looks good. |
17:54:55 | dom96 | But you imply that you have made the header nav sticky. Did you? |
17:55:15 | Calinou | yes, that's why I try to keep it relatively compact |
17:55:41 | Calinou | (it automatically scales down on small screens) |
17:55:46 | dom96 | hrm. |
17:55:53 | dom96 | I dunno, I'll have to test it but those tend to annoy me |
17:56:36 | * | endragor joined #nim |
17:56:44 | * | fastrom joined #nim |
18:01:19 | * | endragor quit (Ping timeout: 252 seconds) |
18:02:05 | * | yglukhov joined #nim |
18:04:18 | * | brechtm quit (Remote host closed the connection) |
18:06:54 | * | yglukhov quit (Ping timeout: 276 seconds) |
18:15:53 | * | endragor joined #nim |
18:16:58 | * | girvo joined #nim |
18:20:30 | * | endragor quit (Ping timeout: 265 seconds) |
18:22:03 | * | girvo quit (Ping timeout: 264 seconds) |
18:29:31 | * | yglukhov joined #nim |
18:34:46 | * | GangstaCat quit (Quit: Leaving) |
18:35:35 | * | GangstaCat joined #nim |
18:36:11 | Araq | hmm someone invented 'goto' for Nim in https://github.com/nim-lang/Nim/issues/4170 |
18:36:22 | Araq | and now I feel stupid |
18:36:40 | euantor | :( |
18:36:44 | Araq | it never occured to me to just use a block label |
18:37:00 | Araq | I thought it would require yet more syntax :-) |
18:38:00 | dom96 | lol |
18:38:16 | dom96 | why the need for goto? |
18:38:48 | Araq | no need right now, but it's nice to know it can just work |
18:39:21 | euantor | On the topic of an async MySQL client, has anybody ever worked on a native MySQL client? |
18:39:37 | euantor | I've got one started, but haven't gotten too far with it and don't want to duplicate effort |
18:39:41 | Araq | there is a nimble package for it I think |
18:41:04 | dom96 | there is definitely a postgre async client |
18:41:39 | euantor | Yep, I can't see any MySQL clients in the package list |
18:43:17 | Calinou | main.scss has over 400 lines of CSS, that's a bit much, needs to be splitted into smaller files :( |
18:43:25 | Calinou | I worked on making the menu more convenient |
18:43:37 | euantor | Made my start of an implementation public in that case. Only got it opening a connection at the minute though. I'll finish it eventually |
18:45:27 | * | nsf quit (Quit: WeeChat 1.5) |
18:45:41 | Araq | ah so it was postgre, ok |
18:50:34 | * | User quit (Read error: Connection reset by peer) |
18:56:18 | * | libman joined #nim |
18:59:21 | Calinou | dom96: good news, I tested the site on IE11, looks just fine! |
18:59:32 | Calinou | glad to know I can mindlessly develop things and it works there :P |
18:59:46 | Calinou | well, IE11-on-Windows-10 to be accurate |
19:00:05 | Calinou | (which is not exactly the same as previous IE11 revisions) |
19:00:10 | dom96 | Yeah, IE has been pretty good |
19:00:23 | dom96 | Safari is the new problem, but only when you use new stuff |
19:00:39 | * | dom96 had some fun with Safari on mobile phones and offline storage |
19:00:50 | Calinou | yeah, need prefixes everywhere and such |
19:01:02 | Calinou | my dad has an old Mac (running OS X El Capitan… very slow) |
19:01:11 | Calinou | but I have no recent iDevice |
19:02:55 | Calinou | committing… |
19:05:47 | Calinou | done |
19:08:19 | dom96 | :D |
19:08:26 | dom96 | Keep up the good work :) |
19:09:21 | Calinou | wow, this is great https://github.com/sgentle/caniuse-cmd |
19:10:07 | Calinou | also http://www.iwanttouse.com/ |
19:13:07 | dom96 | cool, but why not just go on the can I use website? :) |
19:13:23 | Calinou | dom96: might be quicker :P |
19:13:29 | Calinou | but yeah, website is pretty convenient to use |
19:13:54 | dom96 | doubt it, that app is written in CoffeeScript :P |
19:14:30 | Calinou | also, this: https://atom.io/packages/caniuse |
19:16:47 | * | girvo joined #nim |
19:21:39 | * | girvo quit (Ping timeout: 276 seconds) |
19:44:43 | * | kulelu88 joined #nim |
19:55:17 | * | fredrik92 joined #nim |
19:55:47 | * | GustavoLapasta joined #nim |
20:12:50 | * | endragor joined #nim |
20:15:04 | * | Ven joined #nim |
20:16:07 | * | endragor_ joined #nim |
20:16:25 | * | Ven quit (Client Quit) |
20:16:43 | * | girvo joined #nim |
20:17:21 | * | endragor quit (Ping timeout: 244 seconds) |
20:20:48 | * | endragor_ quit (Ping timeout: 276 seconds) |
20:21:03 | * | girvo quit (Ping timeout: 240 seconds) |
20:28:14 | libman | Would https://kore.io wrappers for Nim give it's best shot at winning some HTTP API scalability benchmarks this year? |
20:28:42 | * | desophos joined #nim |
20:30:22 | * | nsf joined #nim |
20:31:49 | * | libman is pondering the KING app stack. (K)ore-based HTTP APIs, (I)PFS for anything that can be statically cached, (N)im bindings to everything, and (G)odot engine for multi-platform phone and desktop UI. |
20:32:25 | def- | libman: zero-cost futures in Nim and multithreading would be a cleaner approach i believe |
20:33:51 | libman | This is over my head, I'm a burned-out ex-programmer, but I hope to return to serious programming "soon"... ;) |
20:34:17 | def- | rust recently implemented something like that, but I haven't checked if they use black magic or if it's possible in Nim |
20:34:35 | Calinou | libman: Godot engine for UI? are you serious? no! |
20:34:36 | euantor | Well, not rust exactly, a Rust crate ;) |
20:34:47 | def- | rust developers* I meant |
20:34:49 | Calinou | don't use things requiring an OpenGL context, and that refresh 60 times a second regarldess if it's needed or not, for native UI |
20:34:54 | Calinou | not to mention it *won't* look native |
20:34:56 | euantor | Their Tokio wrapper over mis looks very nice |
20:35:06 | Calinou | Godot is great, just not for this kind of thing |
20:35:06 | euantor | *mio |
20:35:11 | libman | I don't see people taking Nim seriously for HTTP APIs until it starts performing MUCH better in benchmarks like TechEmpower. Right now Go is the leader. |
20:35:43 | Calinou | okay, PHP is far from the leader in benchmarks yet it's still heavily used |
20:35:46 | euantor | https://pyfisch.github.io/blog/tokio-echo-server/ |
20:35:49 | Calinou | most apps do not have 1,000,000 hits a second |
20:35:58 | def- | libman: I don't think the benchmarks count THAT much, it's just about the overhead of futures or whatever is used to implement it. 10k requests per second is already plenty |
20:36:15 | libman | I'm a copyfree fanatic, all options with unkosher licenses are off the table. If I didn't care about software freedom, I'd still be Microsoft's / Oracle's bitch. And if I care about software freedom, I won't let some commie like Stallman define its philosophy. |
20:36:37 | Calinou | libman: feel free to create your own copyfree (sic) UI library that works on all platforms, then |
20:36:43 | Calinou | you'll realize why Qt is commercial and thus uses LGPL |
20:38:02 | def- | Zero-cost futures in Rust if someone wants to look into that: http://aturon.github.io/blog/2016/08/11/futures/ |
20:38:03 | libman | Godot is obviously primarily intended as a game engine, but it has a nice widget interface and can evolve into a more general client-side "app engine". |
20:38:47 | Calinou | libman: it's still pretty inefficient in terms of CPU, until it gets on-demand rendering (already partially possible, but not fully implemented) |
20:38:54 | Calinou | Godot's GUI system is pretty good indeed |
20:39:54 | * | libman hates himself for pitching ideas to other people instead of doing things oneself. Hopefully it's not more than a minor annoyance. |
20:40:08 | Calinou | I'm a Godot contributor actually :) |
20:40:16 | * | libman bows to Calinou. |
20:41:37 | * | yglukhov quit (Remote host closed the connection) |
20:42:03 | Araq | libman: whenever I read about these C based "frameworks" I'm bored to death |
20:42:16 | libman | re PHP: yes, but that's a scripting language. When people choose a statically typed compiled language for performance sake, they look at return on investment, performance-wise. |
20:42:41 | Calinou | maybe it's just the current Nim frameworks underperforming |
20:42:44 | Calinou | not Nim itself |
20:42:46 | Araq | some_long_function_name(); if (error) goto errorHandler; bla blub |
20:43:07 | libman | But can a pure-Nim framework beat Kore in pure performance? And when? |
20:43:26 | Calinou | beating it is mostly pointless… as long as Nim is faster than most/all scripting languages, that should be fine |
20:43:46 | Araq | doesn't cheatfate_'s stuff beat it already? |
20:43:50 | Araq | how do we know? |
20:44:03 | euantor | I'd also say we need to beat or match Crystal |
20:44:11 | euantor | Since they're in a very similar position to us |
20:44:18 | libman | https://github.com/cheatfate/wanted ? |
20:44:31 | euantor | (garbage collected, statically typed compiled language) |
20:44:33 | Araq | yeah that one |
20:44:49 | libman | We need to beat everything less ugly than C/C++/Rust. ;) |
20:44:59 | * | saml quit (Quit: Leaving) |
20:46:46 | * | libman hopes to see some benchmarks, and eventually reputable third party ones. |
20:47:14 | Araq | and I hope you get your ass up and do some benchmarking yourself |
20:47:35 | Araq | and help improve Nim's performance. |
20:48:19 | Calinou | Crystal looks nice too, need to benchmark it in my Fibonacci test :) |
20:48:31 | Araq | ^ yeah that one. |
20:48:48 | Araq | "Fibonacci test". totally representative benchmark. for nothing. |
20:48:59 | Calinou | woo, it's in Arch repos |
20:49:08 | euantor | It's a good starting point Araq |
20:49:13 | Calinou | Araq: it gives out obvious performance differences |
20:49:20 | Calinou | like, nobody can claim that Python is fast compared to C++ |
20:49:31 | Calinou | (unless the bottleneck doesn't come from it) |
20:50:01 | euantor | Obviously there needs to be a range of different benchmarks, but it's best to start somewhere I reckon |
20:51:41 | Araq | euantor: it's good for nothing since too common. you could pattern match it and transform it into a lookup table |
20:51:57 | Calinou | not everyone knows or has time to write optimized code :) |
20:52:02 | Calinou | unoptimized performance matters too |
20:52:26 | euantor | True, it's also testing the C compiler more than Nim |
20:52:48 | Araq | for me the only thing that matters if I can do everything I need to do without leaving the programming language |
20:53:13 | euantor | What matters to me is network performance, because that's the problem space I usually operate in |
20:53:28 | euantor | It depends on what you need from the language what you focus on |
20:53:59 | euantor | The ability to use async networking and multiple threads is what I look for, and Nim fits that bill |
20:54:00 | * | yglukhov joined #nim |
20:54:02 | * | yglukhov quit (Remote host closed the connection) |
20:54:18 | * | yglukhov joined #nim |
20:57:42 | Calinou | heh, Crystal has a Gitbook https://crystal-lang.org/docs/ :p |
20:57:57 | euantor | Yep |
20:59:30 | Araq | "The memory system in Kore for heap allocation is based on pools. At startup Kore will initialize at least 10 pools for commonly sized objects (ranging from 8 to 8192 bytes)." congratualations you have just re-implemented every malloc implementation out there |
21:00:21 | Araq | kore_strlcpy -- outch. |
21:00:36 | Araq | this thing is focussed on "security", got it. |
21:06:49 | Calinou | https://github.com/Calinou/benchmarks |
21:06:52 | Calinou | Crystal results published |
21:07:22 | euantor | https://github.com/crystal-lang/crystal-book/blob/master/.travis.yml |
21:07:43 | euantor | WOuldn't publishing the `secret_access_key` be a bad idea? |
21:07:50 | euantor | Judging by the name, it should be secret? |
21:08:31 | Calinou | normally you're able to hide it |
21:09:04 | libman | Make it a const. :P |
21:11:10 | def- | Calinou: that's a bit of an unrealistic benchmark^^ |
21:11:47 | def- | Calinou: also, you use different integer sizes in different languages |
21:16:48 | * | girvo joined #nim |
21:18:17 | * | fredrik92 quit (Read error: Connection reset by peer) |
21:20:29 | gokr | dom96: Thanks |
21:21:45 | * | girvo quit (Ping timeout: 265 seconds) |
21:26:53 | * | fastrom quit (Quit: Leaving.) |
21:28:27 | dom96 | Calinou: how can Crystal's release be slower than its debug version? :o |
21:28:34 | dom96 | def-: why? |
21:28:52 | Calinou | dom96: I mixed both up, sorry :P |
21:29:32 | Calinou | committed fix |
21:30:49 | * | nsf quit (Quit: WeeChat 1.5) |
21:31:16 | dom96 | Zero cost futures would certainly be nice, I bet they have their downsides though. |
21:31:27 | dom96 | I do need to look into the Rust implementation in more detail. |
21:32:05 | Calinou | what are futures for? |
21:32:37 | dom96 | to encapsulate a future result |
21:33:24 | dom96 | They're an alternative to callbacks |
21:34:16 | dom96 | My book has a nice explanation ;) |
21:36:28 | * | Calinou saw that Crystal has twice as many GitHub stars as Nim :( |
21:36:34 | Calinou | but Crystal doesn't have multi-threading support yet apparently |
21:38:35 | * | nairobi joined #nim |
21:39:39 | dom96 | indeed, and no Windows support |
21:40:31 | Calinou | yeah, they don't seem to mention it much :p |
21:41:03 | Calinou | https://github.com/crystal-lang/crystal/issues/26 |
21:41:04 | Calinou | big issue there |
21:42:23 | Calinou | Windows support is important for me, even though I don't like that OS |
21:42:28 | Calinou | I try to use cross-platform stuff whenever possible |
21:42:38 | Calinou | (to make transition as painless as possible) |
21:43:03 | * | nairobi quit (Ping timeout: 264 seconds) |
21:51:24 | dom96 | Calinou: just stick with Nim :D |
21:51:49 | Calinou | yeah Nim is cool |
21:52:22 | Calinou | I've thought of writing a Jekyll-like static site generator in Nim |
21:52:27 | Calinou | does such a thing exist already? |
21:52:37 | Calinou | needs templating engine, Sass/LESS/Stylus integration |
21:52:57 | dom96 | this might be close https://github.com/h3rald/hastyscribe |
21:53:25 | Calinou | that's just Markdown -> HTML conversion it seems |
21:53:45 | dom96 | I also created ipsumgenera a while back, more a static blog generator: https://github.com/dom96/ipsumgenera |
21:53:49 | Calinou | but yes, a Markdown parser is needed for a static site generator |
21:53:57 | dom96 | But it's old and I don't have time to work on it |
21:54:07 | * | Demon_Fox joined #nim |
21:54:13 | Calinou | right |
21:54:19 | Calinou | guess I could start a project then :p |
21:54:36 | Calinou | also, why does GitHub say it's still "Nimrod" in language stats? |
21:54:45 | Calinou | I know it has been renamed to Nim, why didn't they follow? |
21:54:48 | dom96 | because of some issue on their side |
21:54:51 | Calinou | right |
21:55:24 | * | astocko quit (Quit: ZNC 1.6.3+deb1+trusty0 - http://znc.in) |
21:57:11 | dom96 | https://github.com/github/linguist/pull/995#issuecomment-46665150 |
21:59:13 | dom96 | good night |
22:05:52 | * | astocko joined #nim |
22:06:42 | * | Trustable quit (Remote host closed the connection) |
22:08:45 | Calinou | https://lut.im/y6qyaPjNjo/xrX4wnXMONPrlrAM.jpg |
22:08:45 | Calinou | hahaha |
22:08:51 | Calinou | we need Nim in that comic :P |
22:09:33 | * | astocko quit (Client Quit) |
22:11:38 | * | gdelazzari joined #nim |
22:13:06 | gdelazzari | Hi everyone, I can't figure this out... I'm wrapping some C code and I have a "ptr cuchar" variable that in the C code is a pointer to the first element of an array. I also have its size. I need to access every element of that "array", how can I do that? |
22:14:08 | * | GustavoLapasta quit (Quit: Leaving) |
22:16:49 | * | girvo joined #nim |
22:17:40 | * | irrequietus quit () |
22:21:12 | * | girvo quit (Ping timeout: 244 seconds) |
22:23:02 | kulelu88 | what is the status of Nim as a web/backend programming language? |
22:24:04 | * | girvo joined #nim |
22:24:54 | Calinou | kulelu88: probably not very developed it seems. but I'm quite new to Nim |
22:25:14 | Calinou | there's Jester |
22:25:20 | Calinou | not sure about database integration |
22:25:33 | kulelu88 | hmmm, I was hoping some progress would be made to give Nim a solid use-case in some area |
22:26:10 | kulelu88 | Jesters performance isn't too great and it is very barebones |
22:26:14 | Calinou | https://github.com/MvnTruong/NimRing |
22:26:14 | Calinou | haha |
22:26:19 | * | Calinou sees "An integrated web framework written in Nim. From page to database, one language to rule them all." |
22:26:24 | Calinou | ends up with: "helloWorld.nim" |
22:27:16 | Calinou | kulelu88: yeah I'd like to see something more like a modern PHP or Python framework |
22:27:20 | Calinou | even something like Flask |
22:27:40 | kulelu88 | It needs to have performance that matches Go |
22:27:48 | kulelu88 | which none do at this moment |
22:27:51 | Calinou | yeah :( |
22:27:57 | Calinou | needs a fast HTTP stack |
22:28:15 | Calinou | I find Go web programming confusing to get in, so I gave up |
22:28:18 | kulelu88 | Perhaps it will make the std lib too bloated to add it |
22:28:23 | Calinou | I really want something with the simplicity of PHP, but speed of Nim :p |
22:28:38 | kulelu88 | That is how I found Crystal |
22:28:50 | kulelu88 | but their Ruby-like syntax isn't very Pythonic |
22:28:56 | Calinou | Ruby-like is fine to me |
22:29:00 | Calinou | as long as it's not braces party |
22:29:01 | * | girvo quit (Ping timeout: 265 seconds) |
22:29:37 | kulelu88 | Go could have been that, had they left out {} |
22:30:01 | Calinou | why do popular system programming languages insist on obtuse syntax? :( |
22:31:30 | kulelu88 | Blame Java and C# |
22:32:00 | * | girvo joined #nim |
22:36:32 | * | girvo quit (Ping timeout: 250 seconds) |
22:36:39 | kulelu88 | Calinou: is that what you're looking for? A good systems-language for web backends that isn't Go? |
22:36:55 | Calinou | kulelu88: something simple to use is most important to me, but I'd like good performance too |
22:36:59 | Calinou | and something not as hated on as PHP |
22:37:02 | Calinou | (which I know relatively well) |
22:37:08 | Calinou | (PHP is what I'm being taught at uni primarily) |
22:37:35 | Calinou | most Go/Rust/whatever frameworks sound like "Build APIs/microservices" rather than "Build websites" |
22:37:35 | ldlework | :( |
22:37:54 | ldlework | Calinou: have you considered Python/Django? |
22:37:57 | kulelu88 | that is essentially what most stacks are these days. APIs |
22:37:57 | * | endragor joined #nim |
22:38:05 | Calinou | yeah, I have, but performance is not notorious to be very good there :) |
22:38:05 | * | PMunch quit (Quit: leaving) |
22:38:10 | Calinou | Flask does work with PyPy though |
22:38:15 | ldlework | Calinou: performance for what exactly? |
22:38:38 | * | astocko joined #nim |
22:38:47 | ldlework | I have django website that recieves thousands of hits a day all day |
22:38:48 | Calinou | it's nice when websites reply quickly for page loading :P |
22:38:58 | kulelu88 | apparently in production-systems the bottleneck is always I/O |
22:39:13 | federico3 | kulelu88: *apparently* |
22:39:13 | ldlework | mmm no |
22:39:27 | Calinou | so I've considered PyPy+Flask, need to dig a bit more into it |
22:39:37 | ldlework | "production-systems" as if no matter what code you write, as soon as it moves into production it becomes I/O bound |
22:39:55 | Calinou | I just miss the good old PHP way of "write some logic, it works" |
22:39:58 | ldlework | Calinou: It sounds like you don't really have good reasons |
22:40:06 | * | Matthias247 quit (Read error: Connection reset by peer) |
22:40:24 | ldlework | And don't know much about web-development or what causes a web-site to load quickly |
22:40:25 | Calinou | all other languages seem to try to make you work "the right way", but are beginner holocausts |
22:41:00 | Calinou | ldlework: try visiting https://directory.fsf.org/wiki/Main_Page - you'll understand what's a large TTFB |
22:41:09 | federico3 | beginner holocausts? |
22:41:33 | kulelu88 | I think Go is the *best* option on offer at this moment |
22:41:41 | Calinou | federico3: I guess this would be much better if universities stopped teaching PHP and started teaching Python/Go instead |
22:41:44 | ldlework | Calinou: you just linked to the home page of the FSF directory... |
22:41:52 | Calinou | ldlework: yes, and it takes 3 seconds to *reply* here |
22:41:58 | ldlework | It didn't take that long for me |
22:42:09 | ldlework | What do you think caused the loading time |
22:42:15 | Calinou | server response time |
22:42:17 | ldlework | ... |
22:42:23 | * | endragor quit (Ping timeout: 244 seconds) |
22:42:24 | federico3 | Calinou: universities could instead teach CS concepts :) |
22:42:45 | ldlework | "What caused the delay?" "The delay." |
22:43:02 | Calinou | the server takes a while to respond because the PHP behind it is slow :P |
22:43:48 | kulelu88 | Calinou: you are now about to get a tough lesson in "you don't understand shit" :D |
22:43:52 | ldlework | Okay so "I haven't the fainted idea at all" |
22:43:58 | kulelu88 | ^^^ :D |
22:44:13 | ldlework | Which is fine, but really you should slow down and change your rhetoric if you're actually earnestly trying to figure things out. |
22:45:55 | ldlework | If you want to be paid real money to write websites, I highly suggest learning Python and Django, or sticking with Python |
22:45:58 | ldlework | err PHP |
22:46:03 | kulelu88 | Calinou: you're probably better of investing in Python with Pypy at this stage. It should be good enough to increase performance |
22:46:13 | ldlework | If you ever want to work with smart engineers, I would leave PHP behind and pick up Python. |
22:46:19 | * | pregressive quit (Remote host closed the connection) |
22:46:36 | ldlework | Writing websites in Golang and Rust is not how you will make money. |
22:46:39 | kulelu88 | If you want an API that has decent performance, #falconframework is a decent option |
22:46:44 | ldlework | Though if you're intersted in network-applications, Golang is fine. |
22:46:56 | * | pregressive joined #nim |
22:47:08 | kulelu88 | hey wait a second, ldlework aren't you from #python ? |
22:47:14 | Calinou | ldlework: I'm not in for money |
22:47:17 | ldlework | kulelu88: and many others |
22:47:25 | kulelu88 | a bit biased then ldlework :P |
22:47:25 | ldlework | I didn't say "If you code only because money" |
22:47:31 | ldlework | kulelu88: why? |
22:47:47 | kulelu88 | saying: "If you ever want to work with smart engineers, I would leave PHP behind and pick up Python." |
22:47:53 | ldlework | Oh yeah |
22:47:55 | ldlework | I'm totally strange |
22:48:00 | ldlework | holding that opinion |
22:48:05 | ldlework | you wont find that anywhere else |
22:48:06 | Calinou | I'm sure Python engineers are overall smarter than PHP engineers |
22:48:12 | Calinou | probably because the barrier to entry is higher :P |
22:48:43 | kulelu88 | I disagree. Python is easier to learn than PHP |
22:49:02 | ldlework | Learning how to make a web-page with Python is far harder than PHP |
22:49:03 | Calinou | PHP allows for really ugly code, and is oriented towards web development |
22:49:05 | Calinou | this ^ |
22:49:10 | ldlework | Which is probably the scope of their understanding of what makes up a webpage |
22:49:12 | Calinou | PHP allows echoing out HTML and such |
22:49:18 | kulelu88 | Presumably why you will find Python in just about everything, from modifying excel to crunching data |
22:49:19 | Calinou | Python will really push you towards templating |
22:49:48 | kulelu88 | aah yeah web programming is more complex for Python, true. |
22:50:07 | federico3 | Calinou: it's not that the language, in itself, makes people smarter. If you look at all the "technologies" that existed around the web in the last 15 years most stuff was quite bad and that's just because web programming tends to attract beginners |
22:50:23 | Calinou | I disagree that programming should be elitist though :( |
22:50:34 | kulelu88 | Python isn't elitist Calinou |
22:50:51 | ldlework | I'm looking at the market |
22:50:54 | kulelu88 | Which is why I mentioned that people do just about anything with it |
22:51:10 | * | pregressive quit (Ping timeout: 244 seconds) |
22:51:14 | kulelu88 | even the hackers use it for scripts |
22:51:16 | ldlework | If you would like to survive by using your programming talent, then Django and Python web-programming right now is by and large the largest without using shitty java |
22:51:23 | Calinou | also, in my benchmarks, PyPy3/CPython 3 are always slower than their version 2 counterparts |
22:51:26 | Calinou | (by a significant margin) |
22:51:34 | ldlework | Why the hell are you benchmarking python versions |
22:51:41 | ldlework | God our universities are *terrible* |
22:51:50 | ldlework | Calinou: are you in university in the US? |
22:51:51 | Calinou | no |
22:51:52 | Calinou | France |
22:51:56 | ldlework | oh well fuck |
22:52:02 | federico3 | poor Calinou |
22:52:04 | ldlework | France has amazing computer universities |
22:52:09 | ldlework | you must be at like, the worst one :( |
22:52:14 | Calinou | my uni never told me to benchmark stuff |
22:52:24 | ldlework | it led to the thinking that inspired the action |
22:52:26 | ldlework | lol |
22:52:35 | Calinou | it's just that a language that loses performance over major versions isn't very exciting :) |
22:52:44 | Calinou | PHP went the other way around with PHP 7, I applaud them |
22:53:05 | kulelu88 | ldlework: let up on the guy a little bit. He is a beginner, we all go through this phase |
22:53:21 | Calinou | I've been programming for like, 3 years :P |
22:53:28 | ldlework | kulelu88: even when I was younger I listened up when people told me I was saying insane things |
22:53:44 | kulelu88 | Calinou: the PyPy3 speed will increase over time |
22:53:51 | Calinou | yeah, I think so, it's still somewhat experimental |
22:53:55 | kulelu88 | the JIT provides good performance |
22:54:20 | ldlework | Calinou: you know what's a really fast language |
22:54:24 | ldlework | Rust |
22:54:28 | Calinou | Rust has horrible syntax |
22:54:31 | Calinou | that's why I ditched it |
22:54:32 | ldlework | But its fast |
22:54:38 | Calinou | I want good syntax and high speed :) |
22:54:48 | ldlework | high speed relative to what |
22:54:50 | * | rbergmair left #nim (#nim) |
22:54:54 | Calinou | relative to most interpreted languages |
22:54:54 | kulelu88 | ldlework: having a statically-compiled language that is Python-friendly and decent for web programming (something Nim could be) isn't a bad idea though. That is probably why some Python guys moved over to Go, cause the learning curve wasn't too bad |
22:54:56 | ldlework | previous versions of the language |
22:55:09 | ldlework | the learning curve in golang is worse |
22:55:22 | ldlework | Because not only do you need to learn a small language with non-obvious design choices |
22:55:23 | kulelu88 | well not for everyone |
22:55:30 | ldlework | but you have to implement a lot of things yourself |
22:55:33 | ldlework | over and over and over again |
22:55:37 | Calinou | yeah, Go is very anti-framework, sadly |
22:55:42 | ldlework | learning the language golang is easy |
22:55:42 | Calinou | when Iris was released, everyone went batshit ._. |
22:55:50 | ldlework | learning how to use go to productivity is a worthless exercise |
22:56:07 | kulelu88 | well Google built it for Google, the fanboys followed |
22:56:15 | ldlework | But I agree that Nim could be a nice web-language |
22:56:37 | ldlework | I don't think it is, but it could be |
22:56:53 | * | Calinou is surprised Lua is not more used in web development, considering the speed of LuaJIT |
22:57:05 | federico3 | ldlework: because of the language itself or the lack of more rich frameworks or traction? |
22:57:06 | Calinou | guess it's not good at large programs |
22:57:31 | ldlework | federico3: a bit of both |
22:57:34 | ldlework | but mostly the latter |
22:57:53 | ldlework | I think the one we have by dom96 is not really the framework I'd choose to use day in and out |
22:57:56 | ldlework | but maybe it has improved |
22:58:19 | ldlework | Calinou: lua isn't used because speed is the dumbest metric for web |
22:58:29 | federico3 | +1 ldlework |
22:58:30 | kulelu88 | Calinou: you can't bash PyPy when LuaJIT is essentially the same thing. Python has more mind-share than Lua |
22:58:54 | kulelu88 | Nim would be legendary with a non OO web framework |
22:59:20 | Calinou | Flask didn't perform that well with PyPy in my tests (used "wrk" to test) |
22:59:21 | ldlework | Yep that's what all the web-programmers I deal with each day continue to ask for |
22:59:26 | Calinou | 4000 requests/s, some Rust framework did over 200,000 |
22:59:27 | Calinou | :P |
22:59:28 | ldlework | non-OO web frameworks |
22:59:29 | kulelu88 | ldlework: I don't think he has touched it in a while. but he is not obliged to, he is afterall, still studying :P |
22:59:57 | ldlework | Calinou: how many requests does your website currenty serve a second? |
22:59:59 | federico3 | Calinou: are you comparing the speed of serving "Hello world" pages? If so, that has nothing to do with real workloads |
23:00:05 | Calinou | federico3: yes |
23:00:26 | kulelu88 | aah well I don't even like web programming anymore. Some day in 2025 Nim will get there :D |
23:00:53 | kulelu88 | Isn't Bottle or some other Python framework non OO? ldlework |
23:00:54 | Calinou | ldlework: not a lot but well… you know, "webscale" ;) |
23:01:24 | federico3 | kulelu88: Bottle is faster |
23:01:32 | ldlework | Faster than what?! |
23:01:43 | ldlework | Doing what? |
23:02:31 | kulelu88 | Calinou: I was planning on learning/using Elixir/Phoenix for an app that interacts with an external chat-API and through my investigation I realized that a lot of what Python has, Elixir doesn't |
23:03:29 | federico3 | ldlework: faster than Flask when executing code paths in the framework itself |
23:04:07 | Calinou | also, I'm aware that computers get faster over time |
23:04:15 | Calinou | but the reality is that most VPS providers don't have 4 GHz CPUs |
23:04:30 | Calinou | not to mention those "half a core" low-end VPSes that many people have… |
23:05:19 | * | girvo joined #nim |
23:06:20 | kulelu88 | Calinou: the assumption is that it is cheaper to add another server than to hire another programmer |
23:06:44 | Calinou | that's what GitLab did, look at how slow it is, even on gitlab.com |
23:06:48 | kulelu88 | on average, a Go programmer is probably in the USD75~80k salary bracket |
23:07:18 | Trixar_za | Really? I think I should learn Go then |
23:07:57 | ldlework | Most of the time loading gitlab.com is not spent in the backend server.... |
23:08:14 | ldlework | Which responds almost i stantly for me |
23:08:39 | kulelu88 | what is the za for? Trixar_za |
23:08:57 | Trixar_za | kulelu88: It's the international code for South Africa |
23:09:16 | kulelu88 | oh fekk, do you hang out in #ubuntu-za? Trixar_za :D |
23:09:41 | Trixar_za | Yes kulelu88, that's where you know me from. Probably :P |
23:09:51 | kulelu88 | aah I thought I recognized you! |
23:10:06 | Calinou | sorry if I angered you btw :P |
23:10:09 | Calinou | was not my intent to troll or something |
23:10:13 | kulelu88 | and 75-80K is apparently on the lower scale. Go engineers in SF rake in +100K |
23:10:23 | Trixar_za | Well, much like Xe, I tend to get around. |
23:10:24 | federico3 | way more |
23:10:27 | * | girvo quit (Ping timeout: 276 seconds) |
23:11:04 | ldlework | You would be homeless on 80k in SF |
23:11:14 | kulelu88 | earning USD100K in the "third world" can really be a boon |
23:11:14 | ldlework | Or hungry |
23:11:58 | * | girvo joined #nim |
23:12:11 | Trixar_za | Yeah, it's like what? R14 to the dollar? |
23:12:45 | kulelu88 | when it was R17, the contractors were rejoicing. December bonus |
23:14:22 | kulelu88 | I didn't know anyone else was learning Nim (or interested) Trixar_za |
23:15:08 | * | endragor joined #nim |
23:19:11 | Trixar_za | I've been around for a few years. Still haven't really learned anything beyond the basics to be honest. I'm pretty sure Araq just tolerates me since I used to compare Nim to python a lot. And I picked fights with naysayers. |
23:19:46 | * | endragor quit (Ping timeout: 265 seconds) |
23:20:12 | * | girvo quit (Ping timeout: 276 seconds) |
23:21:49 | Trixar_za | Yeah, took me a few years to actually grow up. Sorry about that. |
23:21:51 | * | yglukhov quit (Remote host closed the connection) |
23:22:12 | kulelu88 | :D |
23:22:21 | kulelu88 | why you still awake? Trixar_za |
23:23:16 | Trixar_za | Cheap data bundle rates - 1GB for R10 - so I'm doing my downloads now. Also nice and quiet, so the speeds are good too. |
23:24:08 | kulelu88 | no ADSL? |
23:25:25 | Trixar_za | No, 3G - not that ADSL here would be worth it where I am. The max speeds residential lines get here is about 1MB/s |
23:25:55 | Xe | kulelu88: in SF you make at least 100k or you're homeless tbh |
23:25:58 | Trixar_za | I'm considering WiFi since it will be much faster. |
23:26:15 | kulelu88 | Xe: you in the US? |
23:26:31 | Xe | kulelu88: literally working for a small startup in SF |
23:26:42 | kulelu88 | remotely? Xe |
23:27:17 | Xe | kulelu88: i live in the SF area |
23:27:46 | kulelu88 | you originally from ZA? Xe |
23:28:01 | Xe | no |
23:28:04 | Xe | from SEA originally |
23:28:38 | kulelu88 | aah cool |
23:28:52 | kulelu88 | brownie points if your startup is using Nim Xe :) |
23:28:54 | Trixar_za | I know Xe from intentionally breaking the IRCd she was working on |
23:29:50 | kulelu88 | SHE? *insert there are no women on the internet joke here* |
23:29:51 | Xe | kulelu88: i used nim to make an example for them to prove a crazy concept |
23:30:11 | Xe | is that an issue? :P |
23:30:23 | kulelu88 | ChanServ status 0.o |
23:30:28 | * | kulelu88 quivers in fear |
23:30:39 | * | kulelu88 crawls into a bundle in the corner |
23:30:42 | kulelu88 | :D |
23:30:58 | Trixar_za | Just make a bronie joke and see what happens :P -hides- |
23:31:18 | * | girvo joined #nim |
23:32:22 | kulelu88 | bronie?? |
23:32:32 | * | kulelu88 goes to look for context |
23:32:53 | Trixar_za | Fandom of the My Little Pony tv series - more the modern one than the old one. |
23:33:44 | Trixar_za | The network I met Xe on was dedicated to it |
23:34:03 | kulelu88 | proverbial geek culture? tsk tsk Xe . if you tell us you're a "gamer girl" I'll just self-ban :D |
23:34:06 | Xe | kulelu88: i also smoke weed |
23:35:03 | kulelu88 | Xe: what does your startup do? |
23:35:38 | * | girvo quit (Ping timeout: 250 seconds) |
23:36:31 | Xe | kulelu88: basically a way to make your servers not exposed to the public internet, yet exposed to the public internet |
23:36:49 | * | gdelazzari quit (Quit: Page closed) |
23:36:50 | kulelu88 | Docker??? |
23:37:06 | kulelu88 | or some fancy virtualization |
23:37:08 | Trixar_za | Interesting guess that |
23:37:35 | Xe | kulelu88: plain old TCP actually |
23:37:56 | kulelu88 | what is the use-case for it? Xe |
23:39:43 | * | girvo joined #nim |
23:40:18 | libman | NimRing is GPL. :( |
23:40:44 | Xe | kulelu88: simplifying the backend so you can get back to making Cool Shit |
23:41:51 | Trixar_za | libman: which one? |
23:42:02 | kulelu88 | so... "serverless" SaaS? |
23:42:25 | libman | That means `echo("Hello World")` is now restricted, and any programs that use it risk being sued... :P |
23:43:26 | Trixar_za | lol |
23:43:29 | libman | Ca1inou haha'd about it an hour ago. |
23:44:32 | Sentreen | Another stupid question from yours truly! |
23:44:58 | Sentreen | When I create a generic proc which I explicitly want to instantiate, I can use something like foo[type](bar) |
23:45:15 | Sentreen | Yet bar.foo[type]() does not work |
23:45:41 | kulelu88 | back to Nim questions! for a moment there, we almost became nim-meta!!! |
23:45:41 | Sentreen | Is this intended? I figured the second example would have to work due to uniform call syntax |
23:46:23 | Sentreen | Ooooh, I should join nim-meta |
23:49:35 | kulelu88 | nim-meta channel status will be: forever hoping Araq introduces an amazing HTTP stdlib to Nim |
23:51:33 | * | themagician quit () |
23:52:27 | Sentreen | Ah, it turns out this is intended behaviour: https://github.com/nim-lang/Nim/issues/1782 |
23:54:04 | Xe | kulelu88: been half considering writing a proper HTTP client |
23:54:26 | Sentreen | shame, const nam = <really long seq comprehension>.toArray[idx, typ]() looked a lot better than const nam = toArray[idx, typ](<really long seq comprehension>) |
23:54:27 | kulelu88 | Xe: on the Go level of stdlib? |
23:55:25 | Xe | kulelu88: the Go stdlib is a good example yeah |
23:56:08 | kulelu88 | Xe: that would be awesome and actually possibly kickstart momentum for it (I swear I'll contribute) |
23:57:10 | * | endragor joined #nim |