00:12:23 | FromDiscord | <spotlightkid> Apropos, you do know about upx? https://github.com/upx/upx↵(@Festive) |
00:18:31 | FromDiscord | <Festive> In reply to @spotlightkid "Apropos, you do know": I do know about upx |
00:18:42 | FromDiscord | <Festive> it gets it down to the same size as when I use the flags |
00:36:00 | * | lumo_e joined #nim |
00:50:26 | * | lumo_e quit (Quit: Quit) |
00:59:01 | FromDiscord | <spotlightkid> you can use it on top |
01:34:30 | * | ajunior joined #nim |
02:35:36 | FromDiscord | <.matrixagent> why does the nim exetnion for inteliji dont work on the latest version? it wants a more later version of inteliji even though mine is the latest. |
02:35:46 | FromDiscord | <.matrixagent> im talking about the offical one by jetbrains |
02:44:23 | * | ajunior quit (Ping timeout: 264 seconds) |
02:45:50 | * | ajunior joined #nim |
03:21:23 | * | ajunior quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
03:29:54 | * | r4ven joined #nim |
03:30:30 | r4ven | ayuda! |
03:31:27 | r4ven | alguien podria ayudar con algun codigo? |
03:33:50 | * | Tintle joined #nim |
03:33:54 | * | Tintle left #nim (I'm leaving! Goodbye) |
03:34:36 | * | Guest23 joined #nim |
03:37:30 | * | r4ven quit (Quit: leaving) |
03:38:40 | FromDiscord | <Elegantbeef> Translate says that's spanish, english is the language of communication here |
03:40:10 | * | Guest23 quit (Quit: Client closed) |
03:42:20 | FromDiscord | <odexine> If you can speak English please do, if not then maybe another Spanish speaker can help hopefully |
03:50:47 | FromDiscord | <Elegantbeef> Hmph there is not really a good way of doing a dynamic library without a bunch of repetition |
03:51:45 | FromDiscord | <.kanaxa> https://github.com/nim-lang/atlas |
03:51:50 | FromDiscord | <Elegantbeef> Wanting a nim procedure named `loadScript` but to be exposed in FFI as `nimscripter_load_script` requires manually annotating |
03:51:57 | FromDiscord | <.kanaxa> In reply to @.kanaxa "https://github.com/nim-lang/atlas": "...It manages an isolated workspace that contains projects and dependencies." |
03:52:04 | FromDiscord | <.kanaxa> Isolated workspace, like a virtual environment? |
03:52:13 | FromDiscord | <.kanaxa> I haven't tested it out yet, since I'm still with nimble |
03:52:16 | FromDiscord | <Elegantbeef> Yes |
03:52:18 | FromDiscord | <.kanaxa> Any key differences with Atlas? |
03:52:32 | FromDiscord | <Elegantbeef> Atlas is simpler |
03:52:52 | FromDiscord | <Elegantbeef> Atlas 'accidentally' generates a lock file due to how it works |
03:53:04 | FromDiscord | <Elegantbeef> Nimble has a lock file but it's opt in |
03:53:23 | FromDiscord | <.kanaxa> Will nimble be deprecated eventually? |
03:53:24 | FromDiscord | <Elegantbeef> Araq has said something along the lines of "Atlas will handle 90% of what you need" |
03:53:35 | FromDiscord | <Elegantbeef> No clue, atlas isnt a package manager |
03:53:43 | FromDiscord | <.kanaxa> It says that it's a "package cloner" |
03:54:13 | FromDiscord | <Elegantbeef> Right, a package manager to mean implies something that installs globally and allows you to manage all your packages in a single place |
03:54:27 | FromDiscord | <Elegantbeef> Atlas is likely better software due to it's limited scope |
03:54:29 | FromDiscord | <.kanaxa> In reply to @Elegantbeef "No clue, atlas isnt": True, but we do have `nimble init` |
03:54:34 | FromDiscord | <Elegantbeef> Less likely to be buggy and still usable |
03:54:41 | FromDiscord | <.kanaxa> In reply to @.kanaxa "True, but we do": Which seems to be what atlas is going for |
03:54:47 | FromDiscord | <.kanaxa> In reply to @Elegantbeef "Atlas is likely better": I see |
03:56:02 | FromDiscord | <Elegantbeef> https://github.com/nim-lang/atlas/blob/master/doc/atlas.md if you didnt see it |
03:57:26 | FromDiscord | <.kanaxa> Didn't see this one, thank you! |
04:00:30 | FromDiscord | <.kanaxa> I am currently going through Nim in Action to get an overview of the distinct parts of the language, it's quite helpful |
04:00:40 | FromDiscord | <.kanaxa> But it has to be updated a fair bit |
04:01:12 | FromDiscord | <.kanaxa> And I still have no idea why the networking and sockets chapter is straight up in the third chapter, seems quite advanced to be dealing with sockets and async so early on for programmers who are coming to Nim from another language |
04:01:18 | FromDiscord | <.kanaxa> More so for beginner programmers |
04:01:34 | FromDiscord | <.kanaxa> (edit) "programmers" => "programmers, I think any beginner reading that Chapter would be completely lost" |
04:01:44 | FromDiscord | <.kanaxa> (edit) "Chapter" => "chapter so early on in their careers" |
04:56:43 | FromDiscord | <Phil> Honestly particularly async in nim pulls you in for a somewhat wild ride when you're used to async in JS |
04:56:50 | FromDiscord | <Phil> Since in nim it's somewhat of a different beast |
04:58:53 | FromDiscord | <Phil> I wonder if atlas has the nimble file parsing neatly separated out so one could rip that for making a GUI frontend for those CLI tools |
04:59:14 | FromDiscord | <Phil> That's what I stumbled a bit over with nimble - It was somewhat of a pain to parse the output/nimble files, but that was necessary |
04:59:22 | FromDiscord | <Elegantbeef> https://github.com/nim-lang/atlas/blob/master/src/parse_requires.nim |
05:00:56 | FromDiscord | <Elegantbeef> It uses PNodes so it doesnt parse them as much as evaluate them |
05:01:31 | FromDiscord | <Phil> Hmm parses incompletely then, author, description, license and "bin" are missing |
05:02:07 | FromDiscord | <Phil> Given how compact that module is, that seems pretty ripp-able though |
05:03:04 | FromDiscord | <Elegantbeef> I mean you could just import it then call what you need |
05:03:08 | FromDiscord | <Phil> Could make a nimble fileparsing package out of that and then used that in my GUI.↵The reason I wouldn't want any project to have nimble fileparsing itself is simply because I'd want to have a centralized place that keeps up with parsing that thing if it ever needs to |
05:03:48 | FromDiscord | <Elegantbeef> As nice as nimscript is for building stuff, it's sorta shame that nimble files are nimscript files |
05:04:08 | FromDiscord | <Elegantbeef> Atlas is much more sane in that regard, it has tasks inside a 'plugins' folder |
05:04:33 | FromDiscord | <Phil> I mean, can those still be executed via `<whatever> <taskname>`? |
05:05:06 | FromDiscord | <Elegantbeef> `atlas plugin` evaluates them |
05:05:38 | FromDiscord | <Phil> In that context evaluates means "execute"? Or does it mean "validates that they are valid and can be executed"? |
05:06:10 | FromDiscord | <Elegantbeef> https://github.com/nim-lang/atlas/blob/master/doc/atlas.md#plugins |
05:06:39 | FromDiscord | <Elegantbeef> I was wrong it seems |
05:07:42 | FromDiscord | <Elegantbeef> Atlas doesnt do any invoking you'd need to make your own `.nims` file to make tasks |
05:10:10 | FromDiscord | <Phil> Aaaaaand that lost me. Nimble tasks are a pretty singificant part of my workflow |
05:10:42 | FromDiscord | <Phil> Wait, you sure it can't execute any? Why are they read into the nimbleFileInfo type? |
05:10:47 | FromDiscord | <Elegantbeef> It's literally just `touch config.nims` then `task doStuff, "bleh": bleh` |
05:11:12 | FromDiscord | <Elegantbeef> then you can do `nim dostuff` |
05:12:05 | FromDiscord | <Elegantbeef> No clue, I'm only rereading the readme |
05:20:25 | * | rockcavera quit (Remote host closed the connection) |
06:16:27 | * | ntat joined #nim |
06:21:38 | * | jjido joined #nim |
06:24:22 | * | junaid__ joined #nim |
06:36:06 | * | junaid__ quit (Remote host closed the connection) |
06:38:38 | * | azimut_ quit (Ping timeout: 240 seconds) |
07:02:34 | * | oddish quit (Ping timeout: 260 seconds) |
07:03:09 | * | mronetwo quit (Ping timeout: 260 seconds) |
07:03:45 | * | henrytill quit (Ping timeout: 260 seconds) |
07:03:45 | * | casaca quit (Ping timeout: 260 seconds) |
07:04:10 | * | mronetwo joined #nim |
07:04:17 | * | oddish joined #nim |
07:04:55 | FromDiscord | <gamedroit> In reply to @isofruit "Honestly particularly async in": I couldn't agree more lol given it caused me so much confusion. For me async-await was a well-defined concept that JS embraced. |
07:06:08 | * | henrytill joined #nim |
07:09:17 | FromDiscord | <gamedroit> sent a long message, see http://ix.io/4Cd8 |
07:16:17 | * | casaca joined #nim |
07:16:37 | FromDiscord | <gamedroit> In JS the control of the mainloop is automatic too, it's not explicit like in Nim so you don't worry about X task borrowing the mainloop and disturbing the execution of other tasks. |
07:18:53 | * | xet7 quit (Ping timeout: 246 seconds) |
07:56:16 | * | jjido quit (Quit: My laptop has gone to sleep. ZZZzzz…) |
07:59:45 | * | xet7 joined #nim |
08:03:14 | * | xet7 quit (Remote host closed the connection) |
08:08:53 | FromDiscord | <Phil> To me async in general was something that I had to break my brain for a little to finally understand it in general (and be fluent in it in both JS and Java).↵And I see nim's async and I see a lot of similar concepts but I feel like I'd need to break my brain again a little to wrap my head around the differences. |
08:09:07 | FromDiscord | <Phil> (edit) "To me async in general was something that I had to break my brain for a little to finally understand it ... in" added "intuitively" |
08:09:24 | FromDiscord | <_gumbercules> Hmm... how to construct an identifier inside of a template when the suffix starts with an underscore? |
08:09:59 | FromDiscord | <_gumbercules> sent a code paste, see https://play.nim-lang.org/#ix= |
08:10:10 | FromDiscord | <_gumbercules> (edit) |
08:10:13 | FromDiscord | <Phil> Is there a reason that should work?↵I thought identifier with `_` suffix were illegal in general |
08:10:22 | FromDiscord | <Elegantbeef> `My_foo_suffix` |
08:10:25 | FromDiscord | <Elegantbeef> Might work |
08:10:51 | FromDiscord | <Phil> Wait, I was thinking prefix, not suffix, I'm dumb |
08:10:55 | FromDiscord | <_gumbercules> yeah but what if I just want - Myfoo_suffix` |
08:10:57 | FromDiscord | <_gumbercules> (edit) "Myfoo_suffix`" => "Myfoo_suffix" |
08:11:05 | FromDiscord | <_gumbercules> seems impossible |
08:11:18 | FromDiscord | <Elegantbeef> You need a macro here |
08:11:27 | FromDiscord | <_gumbercules> seems like a bug |
08:11:37 | FromDiscord | <_gumbercules> or at least an oversight |
08:11:38 | FromDiscord | <Phil> wouldn't you need to use `ident` in a macro somewhere? |
08:12:00 | FromDiscord | <_gumbercules> nah - the problem is that Nim doesn't allow identifiers to start with `_` |
08:12:11 | FromDiscord | <Phil> Wait, so you do want a _ prefix |
08:12:19 | FromDiscord | <_gumbercules> not really |
08:12:27 | FromDiscord | <_gumbercules> it's somewhat difficult to explain |
08:12:48 | FromDiscord | <_gumbercules> I'm trying to pass a symbol into a proc and from that symbol construct an identifier |
08:12:51 | FromDiscord | <_gumbercules> normall you can do this like so: |
08:12:58 | FromDiscord | <Elegantbeef> Accquote means each part needs to be a valid nim ident when used this way |
08:13:25 | FromDiscord | <_gumbercules> sent a code paste, see https://play.nim-lang.org/#ix= |
08:13:43 | FromDiscord | <_gumbercules> if I called `foo(blah)` |
08:13:51 | FromDiscord | <_gumbercules> this would construct the identifier `Myblahblah` |
08:14:21 | FromDiscord | <Elegantbeef> sent a code paste, see https://paste.rs/gTKLx |
08:14:45 | FromDiscord | <_gumbercules> sent a code paste, see https://play.nim-lang.org/#ix=4Cdq |
08:14:57 | FromDiscord | <_gumbercules> I understand why it doesn't work |
08:15:23 | FromDiscord | <Elegantbeef> Accquoting is not a really well thoughtout feature, so it is what it is |
08:15:40 | FromDiscord | <_gumbercules> In reply to @Elegantbeef "Accquoting is not a": yeah - I guess this is what I was trying to say, it doesn't seem well thought out |
08:16:00 | FromDiscord | <Elegantbeef> Each component part of an accquote has to be a valid ident |
08:16:07 | FromDiscord | <Elegantbeef> So it's not really lexically stropped |
08:16:07 | FromDiscord | <_gumbercules> I get it |
08:16:13 | FromDiscord | <_gumbercules> Yeah |
08:16:18 | FromDiscord | <Elegantbeef> PRs welcome 😛 |
08:16:24 | FromDiscord | <_gumbercules> okay dom 😛 |
08:16:34 | FromDiscord | <_gumbercules> gd I used to hate that shit lol |
08:16:43 | FromDiscord | <Elegantbeef> Hey don't call me that in public 😛 |
08:16:46 | FromDiscord | <Phil> Sometimes specific macros seem obvious but aren't |
08:16:47 | FromDiscord | <_gumbercules> lol |
08:16:53 | FromDiscord | <Phil> I mean, I was also surprised why `obj.get("fieldNameAsStaticString")` was not a thing |
08:17:21 | FromDiscord | <_gumbercules> well - theoretically this could work, the compiler would just have to get smarter |
08:17:25 | FromDiscord | <_gumbercules> but is it worth it? meh |
08:17:28 | FromDiscord | <Elegantbeef> Well that's cause that's dumb phil |
08:17:41 | FromDiscord | <Elegantbeef> If you have the static string just make an dot expr 😄 |
08:17:57 | FromDiscord | <Elegantbeef> obj.makeIdent("bleh")\` 😄 |
08:18:15 | FromDiscord | <Elegantbeef> that doesnt work now that I think about it |
08:19:59 | FromDiscord | <Elegantbeef> Personally I'd do the dumb thing and make a procedure for that phil, no clue what you actually did |
08:20:10 | FromDiscord | <Phil> In reply to @Elegantbeef "If you have the": It's trivial but it allows you to not have to dive into the macro layer of nim yet still leverage a ton of compiletime stuff |
08:20:21 | FromDiscord | <Phil> (edit) "In reply to @Elegantbeef "If you have the": It's trivial but it allows you to not have to dive into the macro layer of nim yet still leverage a ton of compiletime stuff ... " added "and code generation with just procs and templates" |
08:20:43 | FromDiscord | <Phil> Simply because you typically pair those with .fields iterators going over a static dummy type instance somewhere |
08:21:19 | FromDiscord | <Phil> In reply to @Elegantbeef "Personally I'd do the": I have basically a set of a couple macros that I lug around everywhere |
08:21:57 | FromDiscord | <Phil> getField, setField, and a macro to unroll a loop over a static seq as those don't get unrolled by default which can cause problems if you want to do compile time stuff |
08:22:23 | FromDiscord | <Phil> (edit) "getField," => "getField (for object instances and types)," |
08:22:33 | FromDiscord | <Phil> (edit) removed "object" | "types)," => "typedescs)," |
08:22:54 | FromDiscord | <Phil> Oh, `hasField` as well of course |
08:23:23 | FromDiscord | <Phil> Though only getField and the for-loop-unroll thing are actually macros, the rest are templates or generic procs |
08:25:26 | FromDiscord | <Phil> I might as well start creating a macroutils package or sth |
08:25:50 | FromDiscord | <Phil> Then again, there are dozen or so already out there |
08:26:34 | FromDiscord | <Elegantbeef> How many of those are macros? |
08:26:44 | FromDiscord | <Phil> 2 |
08:27:06 | FromDiscord | <Phil> I stand corrected, the "unroll-For-Loop" thing is a template that defines a macro |
08:27:17 | FromDiscord | <Phil> (edit) "I stand corrected, the "unroll-For-Loop" thing is a template that defines ... a" added "and uses" |
08:27:22 | FromDiscord | <Elegantbeef> Oh you're actually using that |
08:27:22 | FromDiscord | <Phil> So still kind of 2? |
08:27:36 | FromDiscord | <Phil> I use mratsims variant IIRC |
08:28:58 | FromDiscord | <Phil> The nice thing is I don't need to remember the macros themselves because I literally have an SO question where I have them all cleanly listed up 😛 |
08:29:32 | FromDiscord | <Elegantbeef> Unless you need to support object variants all of those but the unroll can be done in a procedure 😄 |
08:31:14 | FromDiscord | <Phil> I don't have a usecase for that yet. Doesn't mean I won't in the future, after my chat with treeform in webdev it's itching me to replace my HTTP layer with a websocket message layer and the websocket messages likely would be an object variant.↵I don't think I'd need to do any compile time stuff with those, but who knows, I haven't written a single line of code for that yet |
08:32:07 | FromDiscord | <Elegantbeef> I have been meaning to add a `unroll` for loop macro to slicerator |
08:32:26 | FromDiscord | <Elegantbeef> that way one can just do the good ol' `for x in unroll ....:` |
09:09:06 | NimEventer | New Nimble package! luigi - Nim bindings for the barebones single-header GUI library for Win32, X11, and Essence: Luigi., see https://github.com/neroist/luigi |
09:17:23 | FromDiscord | <arkanoid> sometimes it happens that I stay away from Nim for days/weeks, and I end up searching for all the updates and interesting stuff/packages.↵↵how would you do that? what's the best way to read about new packages from day X to Y? |
09:38:42 | FromDiscord | <leetnewb> I don't know about best, but you could use discord's search. something like in: main after: 2023-01-03 New Nimble package |
10:00:19 | FromDiscord | <arkanoid> wow, surprisingly, trying the same search in Matrix fails server side |
10:00:46 | FromDiscord | <arkanoid> it does work with telegram |
10:04:46 | FromDiscord | <leetnewb> There's also the irc logs (https://irclogs.nim-lang.org/03-08-2023.html). Guessing a 4 line bash script could do it |
10:21:56 | FromDiscord | <.kanaxa> In reply to @_gumbercules "okay dom 😛": Wait, Elegantbeef is Dominik? |
10:22:01 | FromDiscord | <_gumbercules> no no |
10:22:40 | FromDiscord | <_gumbercules> Dom had a habit of replying to anything that needed doing with a very cheeky "PRs are wecome :)" |
10:22:53 | FromDiscord | <.kanaxa> Ah, haha |
10:23:02 | FromDiscord | <.kanaxa> Character impersonation |
10:23:03 | FromDiscord | <_gumbercules> and it was extremely annoying because they were a core dev who at the time contributed very little but still wanted to control quite a bit |
10:23:15 | FromDiscord | <.kanaxa> I thought he'd left |
10:23:20 | FromDiscord | <.kanaxa> (edit) "I thought he'd ... left" added "already" |
10:23:24 | FromDiscord | <.kanaxa> That's why |
10:23:42 | FromDiscord | <_gumbercules> yeah - he has |
10:23:52 | FromDiscord | <.kanaxa> So he's no longer working with Nim code at all? |
10:23:54 | FromDiscord | <.kanaxa> Or just the community |
10:24:00 | FromDiscord | <leetnewb> right |
10:24:10 | FromDiscord | <_gumbercules> I have no idea - I doubt he's using Nim |
10:24:35 | FromDiscord | <.kanaxa> In reply to @arkanoid "sometimes it happens that": I like to keep up using RSS feed keyword monitors, I keep up with Nim and Python and other langs separately via Inoreader |
10:24:53 | FromDiscord | <.kanaxa> I used to have a script patched to Reddit APIs to monitor keywords but it turned out to be a firehose information overload |
10:25:04 | FromDiscord | <.kanaxa> I just stick with the best Hacker News comments these days for keywords, they're good enough to keep updated by |
10:25:12 | FromDiscord | <leetnewb> It would be nice if the nimble.directory site exposed a feed |
10:25:32 | FromDiscord | <.kanaxa> In reply to @_gumbercules "I have no idea": Aww, that's a sad development |
10:25:37 | FromDiscord | <Phil> I really should learn to use RSS feeds |
10:25:43 | FromDiscord | <_gumbercules> In reply to @.kanaxa "Aww, that's a sad": ehhhhh |
10:25:58 | FromDiscord | <_gumbercules> I suppose it depends on your perspective re: Dom |
10:26:07 | FromDiscord | <_gumbercules> I'm not losing sleep over it, that's for sure |
10:26:18 | FromDiscord | <.kanaxa> Yeah, nothing personal, just sad in the sense that he's a book author for Nim and stuff |
10:27:23 | FromDiscord | <.kanaxa> I was thinking of writing up an open-source Nim Cookbook to document my adventures with it - ala David Beazley's Python Cookbook, or Chris Albon's Pandas exercises, would be quite useful |
10:27:51 | FromDiscord | <.kanaxa> Right now the stuff on the internet is useful but too technical, especially if Nim's aiming to be an easier-to-access general purpose programming language |
10:27:58 | FromDiscord | <leetnewb> In reply to @isofruit "I really should learn": I threw miniflux on my server and miniflutt on my android. pretty nice setup. |
10:28:42 | FromDiscord | <.kanaxa> (edit) "Right now the stuff on the internet ... is" added "for Nim" |
10:36:47 | * | ntat quit (Quit: leaving) |
10:38:52 | FromDiscord | <arkanoid> agree! or at least make the "New Packages" time window larger↵(@leetnewb) |
10:45:04 | * | cedb quit (Quit: WeeChat 4.0.2) |
10:52:44 | FromDiscord | <arkanoid> You're missing the book from Dr. Salewski\: https://nimprogrammingbook.com/↵(@.kanaxa) |
10:53:39 | FromDiscord | <.kanaxa> I was just recommended that book yesterday! I like it |
10:53:42 | FromDiscord | <.kanaxa> Will be going through it as well |
10:55:36 | FromDiscord | <.kanaxa> I've been wondering: what's the main difference between this Discord and the forum? I assume the same folks hang out here and there? Or is it a different crowd mostly |
10:55:50 | FromDiscord | <.kanaxa> (edit) "I've been wondering: what's the main difference between this ... DiscordNim" added "Nim" | "NimDiscord and the ... forum?" added "Nim" |
10:56:30 | FromDiscord | <Andreas> well, the forum is 'persistence' and AFAIK can be searched easier.. |
10:57:08 | FromDiscord | <Andreas> (edit) "well, the forum is 'persistence' and AFAIK can be searched easier.. ... " added "but yes, i guess most read the forum and Discord/Matrix.." |
10:57:19 | FromDiscord | <Andreas> (edit) "'persistence'" => "'persistencent'" |
10:57:35 | FromDiscord | <leetnewb> The aggregated chat rooms are much higher volume |
10:57:41 | FromDiscord | <Andreas> (edit) "'persistencent'" => "'persistent'" |
10:59:04 | * | koltrast_ joined #nim |
10:59:30 | FromDiscord | <Phil> In reply to @.kanaxa "I've been wondering: what's": Some folks are more on the forum than here. At least some of the folks that are essentially my last-last ditch effort I only have a decent chance of reaching via forum as they're only sporadically active here (or not at all).↵↵Generally for having things persistent I just write stuff over to Stack Overflow |
10:59:46 | FromDiscord | <Phil> I tend to persist the answers I find to more complicated questions over there which is why I regularly have self-answered questions there |
11:00:16 | * | koltrast quit (Read error: Connection reset by peer) |
11:00:48 | FromDiscord | <Phil> I think the one time where I was absolutely stuck at a hard wall with no way out was when I needed a macro to unroll a for loop on a static seq |
11:00:58 | FromDiscord | <Phil> (edit) "seq" => "seq, the forum was pretty much my saviour there" |
11:02:00 | FromDiscord | <Andreas> In reply to @isofruit "I tend to persist": thats clever, would you agreed that searching the Discord/Matrix-channels is tedious and at least my hit-quote is less compared to SO and the FOrum ? |
11:03:00 | FromDiscord | <Phil> Yeah discord search is garbage, not search-machine searchable, unreliable and generally I trust it less the more the thing I'm looking for is in the past |
11:03:01 | FromDiscord | <Andreas> (edit) "FOrum" => "Forum" | "Forum? ... " added "Esp. trying to retrieve consistent discussions i find hard.." |
11:03:25 | FromDiscord | <Phil> For posts made in the last 3 months: Pretty decent chance I can find the post still |
11:03:38 | FromDiscord | <Phil> For posts made half a year ago on here: I give it a 50:50 |
11:03:51 | * | ntat joined #nim |
11:04:09 | FromDiscord | <Phil> SO is very searchable, even moreso than the forum since SO in general will rank highly on google.↵The forum follows immediately after that for me |
11:05:52 | FromDiscord | <Andreas> In reply to @isofruit "SO is very searchable,": totally agree here - though the forum-search could be semantically improved and is guranteed to stay around ? What would happen if SO decided for a subscription-model ? |
11:05:56 | FromDiscord | <arkanoid> I find the tendency to keep most of the community on chats instead of stackoverflow/forum is a big downside |
11:07:04 | FromDiscord | <Andreas> (edit) "guranteed" => "guaranteed" |
11:07:11 | FromDiscord | <Phil> I find it understandable though because the feedback cycle is measured in minutes typically, not days. |
11:07:23 | FromDiscord | <Phil> (edit) "minutes" => "minutes/seconds" |
11:08:04 | FromDiscord | <arkanoid> but the persistence of information is lost in hours |
11:08:21 | FromDiscord | <arkanoid> and not separated in topics |
11:08:27 | FromDiscord | <Phil> Yeah but a lot of times the questions you're asking aren't really worth persisting |
11:08:39 | FromDiscord | <arkanoid> true |
11:08:49 | FromDiscord | <Phil> you as in you generally.↵A lot of the discussions I fire up here aren't worth being googleable |
11:09:21 | FromDiscord | <Phil> That's why I move the things I do feel worth preserving over to SO - Or I add stuff to the docs like I did with prologue and owlkettle |
11:09:35 | * | Lord_Nightmare quit (Quit: ZNC - http://znc.in) |
11:10:46 | FromDiscord | <leetnewb> hmm, doesn't seem like it would be too hard to take the nimeventer code and create a feed |
11:12:23 | * | Lord_Nightmare joined #nim |
11:12:23 | FromDiscord | <Andreas> some better means of integrating valuable chat-threads, related playground-code within the forum would be nice.. |
11:13:42 | FromDiscord | <Andreas> which would require some sort of API for discord/matrix.. |
11:27:38 | FromDiscord | <System64 ~ Flandre Scarlet> In Nim, is it possible to do something like C#'s properties? |
11:29:18 | FromDiscord | <System64 ~ Flandre Scarlet> like↵var aPalette = myObject.Palette↵and↵myObject.Palette = anotherPalette |
11:30:32 | NimEventer | New thread by krakengore: Problems compiling objc code including <UIKit/UIKit.h> on osx, see https://forum.nim-lang.org/t/10371 |
11:30:32 | FromDiscord | <System64 ~ Flandre Scarlet> sent a code paste, see https://play.nim-lang.org/#ix=4Cem |
11:33:50 | FromDiscord | <ratogbm> What, can someone please explain this situation to me? https://media.discordapp.net/attachments/371759389889003532/1136622955145728090/Screenshot_2023-08-03_at_15.33.09.png |
11:33:58 | FromDiscord | <ratogbm> (edit) "What, can" => "Can" |
11:34:42 | FromDiscord | <System64 ~ Flandre Scarlet> In reply to @ratogbm "Can someone please explain": Nim doesn't take care of "_" in variables↵Same for caps in the middle of a name |
11:35:38 | FromDiscord | <ratogbm> In reply to @sys64 "Nim doesn't take care": Anything else? This feels like something I would spend ages debugging if it happended to me... |
11:35:52 | FromDiscord | <ieltan> sent a code paste, see https://play.nim-lang.org/#ix=4Cer |
11:36:36 | FromDiscord | <ieltan> (edit) "https://play.nim-lang.org/#ix=4Cer" => "https://play.nim-lang.org/#ix=4Ces" |
11:38:11 | FromDiscord | <System64 ~ Flandre Scarlet> Oh wait↵Seems Nim allows that |
11:39:19 | FromDiscord | <System64 ~ Flandre Scarlet> sent a code paste, see https://play.nim-lang.org/#ix=4Ceu |
11:39:48 | FromDiscord | <ieltan> In reply to @ratogbm "Can someone please explain": Nim has style-insensitivity, `hello_world` and `helloWorld` resolve to the same symbol for the compiler, hence why it's saying "redefinition" |
11:40:22 | FromDiscord | <ieltan> sent a code paste, see https://play.nim-lang.org/#ix=4Cev |
11:40:38 | FromDiscord | <ratogbm> In reply to @ieltan "Nim has style-insensitivity, `hello_world`": tnks |
11:40:42 | FromDiscord | <System64 ~ Flandre Scarlet> In reply to @ieltan "this is syntax to": Oh neat! So you can mimic C#'s properties! |
11:40:59 | FromDiscord | <System64 ~ Flandre Scarlet> so you can create fake fields |
11:41:23 | FromDiscord | <ieltan> C# properties means nothing to me since I don't know what it means 😅 |
11:41:51 | FromDiscord | <ieltan> Don't know what fake fields are either |
11:42:39 | FromDiscord | <System64 ~ Flandre Scarlet> In reply to @ieltan "C# properties means nothing": You can basically create fake fields in a class/struct↵It acts like a getter/setter, but the feeling is like you manipulate fields directly |
11:43:15 | arkanoid | what's the right way to build path objects leveraging on static type system and stuff? I only find https://nim-lang.org/docs/compiler/pathutils.html but https://forum.nim-lang.org/t/7190#45411 |
11:43:54 | arkanoid | With python I'd do "from pathlib import Path" "Path("/home/arkanoid/foo")" |
11:45:44 | FromDiscord | <ieltan> Ok, I've googled what C# properties are |
11:47:43 | FromDiscord | <ieltan> In Nim, you can omit the `` to make a field private (meaning you can only access it in the module the type was declared). Then you can create a `get` and `set` proc that act on those private fields and they can be used in other modules @System64 ~ Flandre Scarlet |
11:48:32 | FromDiscord | <ieltan> In this case you don't need custom assignment, its a more advanced feature |
11:51:12 | FromDiscord | <System64 ~ Flandre Scarlet> sent a code paste, see https://play.nim-lang.org/#ix=4Cey |
11:58:18 | FromDiscord | <ieltan> sent a code paste, see https://play.nim-lang.org/#ix=4CeA |
11:58:39 | * | jjido joined #nim |
12:00:24 | FromDiscord | <ieltan> sent a code paste, see https://paste.rs/JmOjS |
12:00:39 | FromDiscord | <ieltan> (edit) "https://play.nim-lang.org/#ix=4CeE" => "https://play.nim-lang.org/#ix=4CeD" |
12:01:33 | FromDiscord | <ieltan> Obviously adapt it to your code |
12:02:23 | FromDiscord | <System64 ~ Flandre Scarlet> Oh alright |
12:03:34 | FromDiscord | <System64 ~ Flandre Scarlet> sent a code paste, see https://play.nim-lang.org/#ix=4CeG |
12:08:10 | FromDiscord | <ieltan> Nope since you're too low level, what you can do is make it more high level |
12:08:52 | FromDiscord | <System64 ~ Flandre Scarlet> ideally, I want to do something like↵bitmap[x, y] = myColor |
12:09:17 | FromDiscord | <ieltan> Typically you should not actually use `importc` procs directly, you have some sugar that use it instead so that you have idiomatic Nim code |
12:09:45 | FromDiscord | <System64 ~ Flandre Scarlet> the getDataImpl is private↵the one I use is getData |
12:09:55 | FromDiscord | <ieltan> In reply to @sys64 "ideally, I want to": Yup, you can just define `[]=` |
12:10:10 | FromDiscord | <ieltan> Lemme see the syntax because I'm not sure |
12:14:16 | * | jjido quit (Quit: My laptop has gone to sleep. ZZZzzz…) |
12:19:11 | * | jmdaemon quit (Ping timeout: 246 seconds) |
12:20:39 | FromDiscord | <ieltan> sent a code paste, see https://play.nim-lang.org/#ix=4CeM |
12:21:17 | FromDiscord | <ieltan> sent a code paste, see https://play.nim-lang.org/#ix=4CeO |
12:21:41 | FromDiscord | <System64 ~ Flandre Scarlet> and what is the 0 for? |
12:23:55 | FromDiscord | <ieltan> sent a code paste, see https://play.nim-lang.org/#ix=4CeU |
12:24:33 | FromDiscord | <ieltan> In reply to @sys64 "and what is the": the index of the UncheckedArray |
12:25:32 | FromDiscord | <ieltan> You could just hard code it if you really just need to access index 0, and then you can just omit the `[0]` and it'll look how you want it to be |
12:25:48 | FromDiscord | <System64 ~ Flandre Scarlet> Oh alright! Thanks! |
12:26:40 | FromDiscord | <ieltan> sent a code paste, see https://play.nim-lang.org/#ix=4CeV |
12:26:56 | FromDiscord | <ieltan> sent a code paste, see https://play.nim-lang.org/#ix= |
12:31:15 | * | FromDiscord quit (Remote host closed the connection) |
12:31:29 | * | FromDiscord joined #nim |
12:32:36 | FromDiscord | <System64 ~ Flandre Scarlet> sent a code paste, see https://play.nim-lang.org/#ix=4CeW |
12:38:51 | FromDiscord | <ieltan> In reply to @ieltan "So this would be": @System64 ~ Flandre Scarlet edited this message since it was incorrect code |
12:40:08 | FromDiscord | <System64 ~ Flandre Scarlet> Oh alright |
13:01:17 | FromDiscord | <Chronos [She/Her]> Honestly I have a bit of a stupid idea for a TUI library but I think it'd be neat |
13:04:15 | FromDiscord | <ieltan> For TUIs I would really like to have something like this for Nim↵https://github.com/charmbracelet/bubbletea |
13:05:44 | FromDiscord | <leetnewb> In reply to @ieltan "For TUIs I would": I also like the shell script tool - https://github.com/charmbracelet/gum |
13:06:12 | * | rockcavera joined #nim |
13:08:20 | FromDiscord | <Chronos [She/Her]> sent a code paste, see https://play.nim-lang.org/#ix=4Cf5 |
13:08:26 | FromDiscord | <Chronos [She/Her]> Stupid idea but it would be kinda neat |
13:09:06 | FromDiscord | <Chronos [She/Her]> In reply to @ieltan "For TUIs I would": Definitely looks interesting |
13:12:44 | FromDiscord | <ratogbm> How can I check if a variable has been assigned anything or not? |
13:15:14 | FromDiscord | <ratogbm> sent a code paste, see https://play.nim-lang.org/#ix=4Cf7 |
13:17:11 | FromDiscord | <ratogbm> (edit) "https://play.nim-lang.org/#ix=4Cf7" => "https://play.nim-lang.org/#ix=4Cf8" |
13:18:03 | FromDiscord | <ratogbm> It's `isNil()` right? |
13:37:46 | FromDiscord | <.kanaxa> Currently reading the Jester tutorial in Nim in Action |
13:37:58 | FromDiscord | <.kanaxa> Is Jester the most widely used framework right now for Nim? |
13:38:12 | FromDiscord | <.kanaxa> Or are there more recent popular and competing alternatives |
13:38:23 | FromDiscord | <.kanaxa> I can see there are some, but I'm not sure which one is the most popular right now |
13:38:34 | FromDiscord | <ieltan> I think this would be Karax but I'm not sure |
13:38:42 | FromDiscord | <.kanaxa> The book was published in 2017, that was 6 years ago, a lot has changed |
13:39:13 | FromDiscord | <ieltan> https://github.com/karaxnim/karax |
13:40:15 | FromDiscord | <ieltan> If I'm not senile, this is the framework that Nitter use |
13:45:04 | FromDiscord | <ratogbm> `list.delete(len(list)-1)` or is there a better way? |
13:48:04 | * | ajunior joined #nim |
13:58:21 | FromDiscord | <leetnewb> In reply to @arkanoid "agree! or at least": Looks like it does - https://nimble.directory/packages.xml |
14:01:55 | FromDiscord | <onekrissh> https://discord.gg/fRQsFa5u↵<a:FPS_vibe:1112990361233670174> <a:FPS_vibe:1105950639768477798> |
14:04:29 | * | lucasta joined #nim |
14:06:56 | FromDiscord | <ratogbm> In reply to @onekrissh "https://discord.gg/fRQsFa5u <a:FPS_vibe:11129903612": hacked? |
14:07:20 | FromDiscord | <ratogbm> In reply to @onekrissh "https://discord.gg/fRQsFa5u <a:FPS_vibe:11129903612": <@&371760044473319454> |
14:07:33 | FromDiscord | <ratogbm> (edit) "In reply to @onekrissh "https://discord.gg/fRQsFa5u <a:FPS_vibe:11129903612": <@&371760044473319454> ... " added "Spammer" |
14:07:45 | FromDiscord | <ratogbm> (edit) "Spammer" => "Spammer, joined 1 minute ago" |
14:09:05 | FromDiscord | <ratogbm> (edit) "In reply to @onekrissh "https://discord.gg/fRQsFa5u <a:FPS_vibe:11129903612": <@&371760044473319454> Spammer, joined 1 minute ago ... " added "and already invite link" |
14:10:25 | FromDiscord | <Phil> @onekrissh Explicit first warning, this is a channel to discuss nim coding, not to promote discord servers |
14:11:44 | FromDiscord | <auxym> So the nim v2 announcement got quite a bit of positivity on HN. I don't think I saw even 1 post complaining about case-insentivity 😄 |
14:12:02 | FromDiscord | <Phil> In reply to @.kanaxa "Is Jester the most": Yes-ish ?↵In general it might if some small orgs have adopted it, but I'm not familiar with them.↵Personally I use prologue and I don't know a ton of folks that use or still use jester.↵The main reason being that the core developer behind jester (dom) is no longer active. |
14:12:05 | FromDiscord | <ratogbm> In reply to @auxym "So the nim v2": I was complaining earlier |
14:12:28 | FromDiscord | <Phil> It's also the case that prologue has explicit middleware support and better docs including docs to deploy such an application. |
14:12:52 | FromDiscord | <Phil> Another framework worth checking out is mummy which might have better performance, but is a bit smaller in terms of featureset and docs |
14:12:59 | FromDiscord | <Phil> (edit) "framework" => "framework/server" |
14:13:19 | FromDiscord | <Phil> Prologue and jester use the same server under the hood - httpbeast though prologue uses a fork that can also compile on windows |
14:19:20 | * | azimut joined #nim |
14:21:25 | * | lucasta quit (Remote host closed the connection) |
14:22:29 | FromDiscord | <Chronos [She/Her]> Anyone know if there's a better way to use Nim on termux rather than relying on the repos? |
14:25:32 | FromDiscord | <.kanaxa> In reply to @isofruit "Yes-ish ? In general": I see, thank you! |
14:25:44 | FromDiscord | <.kanaxa> I really would love it if there were a framework with the sort of documentation consistency like Django's |
14:26:06 | FromDiscord | <.kanaxa> I prioritize documentation over performance as I'm not doing anything that needs to be crazy scalable |
14:27:04 | FromDiscord | <leetnewb> Not exactly comparable, but this project had some ambitions: https://github.com/jfilby/Nexus |
14:46:33 | FromDiscord | <Phil> In reply to @.kanaxa "I prioritize documentation over": As leetnewb stated, Nexus wanted to go there but I haven't used it so no clue.↵I ended up just using prologue and wiring stuff together from there and found I actually prefer that over traditional "Thinks for you" ORMs.↵My tech-stack ended up being prologue - norm- nimword (for password hashing) - jsony (for JSON parsing/serializing) and constructor for general convenience. |
14:47:27 | FromDiscord | <Phil> (edit) "In reply to @.kanaxa "I prioritize documentation over": As leetnewb stated, Nexus wanted to go there but I haven't used it so no clue.↵I ended up just using prologue and wiring stuff together from there and found I actually prefer that over traditional "Thinks for you" ORMs.↵My tech-stack ended up being prologue - norm- nimword (for password hashing) - jsony (for JSON parsing/serializing) and constructor for general convenience |
14:47:46 | FromDiscord | <Phil> (edit) "http://ix.io/4CfC" => "http://ix.io/4CfD" |
14:50:31 | FromDiscord | <Phil> There are other choices for ORMs of course, Gatabase for example, I just liked norm since I used sqlite |
14:51:21 | FromDiscord | <Phil> In reply to @.kanaxa "I really would love": Define consistency. If you want something that guides you from start to finish, I don't think any nim framework can provide that so far as none of them are as batteries included and fully fledged out as Django is |
14:54:03 | FromDiscord | <.kanaxa> In reply to @isofruit "Define consistency. If you": What I meant is I find Django's document superbly accessible and consistent across their iterations - e.g. you can just swap between documentation by just changing version numbers in the URL, even - they show which feature has been deprecated over time, which hasn't, and most of the API is quite exposed |
14:54:52 | FromDiscord | <Phil> Ah check.↵I think that is the kind of quality work I'd start investing in once money is involved |
14:54:56 | FromDiscord | <.kanaxa> Compared to Flask, I had a bit of a headache looking through various tutorials, blogs and books just to get an idea of where everything was, and no matter how 'light' it was eventually you'd need to patch up things with packages, that eventually resembled the complexity of Django (but messier, because it's not batteries included) |
14:55:00 | FromDiscord | <Phil> That or some tooling that is trivial |
14:55:04 | FromDiscord | <Phil> (edit) "is" => "makes it" |
14:55:30 | FromDiscord | <Phil> Like, that is effort |
14:55:32 | FromDiscord | <.kanaxa> And Django's quite hackable - i.e. I've used parts where you can rip out just its ORM, or you can reduce it to its barest bits, etc |
14:55:45 | FromDiscord | <Phil> And that is coming from somebody who has basically all their packages highly documented |
14:56:16 | FromDiscord | <.kanaxa> In reply to @isofruit "Like, that is **effort**": Agreed, definitely |
14:57:09 | FromDiscord | <.kanaxa> I'm definitely looking into Norm as a potential counterparty in the absence of Django's ORM or SQLAlchemy |
14:58:06 | FromDiscord | <.kanaxa> I can write raw SQL but I prefer keeping it somewhat ORM-centric when I'm writing applications that don't strictly require performance |
14:58:44 | FromDiscord | <Phil> In reply to @.kanaxa "I can write raw": Personally I want to write raw SQL, but only for the complex stuff |
14:58:49 | FromDiscord | <Phil> For simple queries give me procs |
14:58:55 | FromDiscord | <.kanaxa> Yeah |
15:00:03 | FromDiscord | <.kanaxa> For instance Django doesn't really support the more advanced stuff of SQLite, like FTS5, so I had to descend into the pipework to set up tables and the triggers and the delete mechanism, etc |
15:00:21 | FromDiscord | <.kanaxa> That was the part where I prefered hitting the raw SQL, otherwise I'm quite happy with the ORM interface handling everything |
15:00:23 | FromDiscord | <Phil> Welcome to the jungle, literally done the same |
15:00:43 | FromDiscord | <Phil> Migrated a Django application over to Prologue to see how fast I could make requests |
15:02:57 | FromDiscord | <Phil> In fact the one thing imo norm is missing is a signalling system like Django signals and maybe a migration manager, though moigagoo has created normandy, I just haven't been using it |
15:03:26 | FromDiscord | <Phil> I ended up creating a signalling system myself ~~with blackjack etc.~~ |
15:03:49 | FromDiscord | <.kanaxa> That's pretty interesting, I never had a real need for django's signaling yet |
15:03:54 | FromDiscord | <.kanaxa> (edit) "django's" => "Django's" |
15:04:05 | FromDiscord | <.kanaxa> What was that for, intervening during delete transactions? |
15:04:19 | FromDiscord | <Phil> Nah, mirroring all the data in my DB to the FTS5 tables |
15:04:25 | FromDiscord | <.kanaxa> That was the only real use I ever used it before |
15:04:27 | FromDiscord | <Phil> It was a DB of articles |
15:04:29 | FromDiscord | <.kanaxa> Ahh, replication |
15:04:45 | FromDiscord | <Phil> Many different kinds of articles |
15:06:46 | FromDiscord | <Phil> FTS5 tables had this silly limitation that you could only search for prefixes, not suffixes |
15:07:23 | FromDiscord | <.kanaxa> Oh yeah, I recall |
15:07:24 | FromDiscord | <Phil> So I basically wrote myself a signalling system so that every db entry gets written twice into FTS5 |
15:07:30 | FromDiscord | <.kanaxa> I can't remember how I got around that |
15:07:37 | FromDiscord | <.kanaxa> Maybe I used the trigram tokenizer or something |
15:08:02 | FromDiscord | <.kanaxa> In reply to @isofruit "So I basically wrote": Hmm? How does that work, won't that create duplicate IDs? |
15:08:08 | FromDiscord | <ntzeno> How can i have 2+ parameters with same default value without Nim compiler giving ImplicitDefaultValue? It gives me option of using `;` but I have no idea what to do with it, thanks in advance |
15:08:10 | FromDiscord | <Phil> I brute forced it, my DB is unlikely to grow beyond a gig ever so I'm pretty safe there even if the FTS5 table effectively triples the size of it |
15:08:40 | FromDiscord | <.kanaxa> In reply to @isofruit "I brute forced it,": Then that's smart, performance isn't even hurt at such small sizes |
15:13:56 | FromDiscord | <Phil> sent a long message, see http://ix.io/4CfN |
15:14:57 | FromDiscord | <jaar23> hi, i've install nim via choosenim, recently, just upgrade it to nim v2.0↵i cannot nimble run my project anymore. ↵all the package i install is now in `~/.nimble/pkgs2` folder and whenever i run nimble run, i got `cannot open file: <package-name>` |
15:15:32 | FromDiscord | <jaar23> i tried with nim c -r main.nim, and it able to run successfully, only nimble run is not successful |
15:15:58 | FromDiscord | <spotlightkid> Just nimle install your project again for Nim 2.0. |
15:16:17 | FromDiscord | <.kanaxa> In reply to @isofruit "Wait no, other way": For the BM25 ranking you mean? |
15:16:25 | FromDiscord | <Phil> Yeah |
15:22:06 | FromDiscord | <Phil> What got a bit frustrating is that there's this network latency of like 30-50ms that you just can't beat without pushing the server closer to your user |
15:22:37 | FromDiscord | <.kanaxa> @Phil What's your GUI situation with Nim? Are you using any of the packages |
15:22:50 | FromDiscord | <.kanaxa> And has anyone written full programs with Qt and Nim? |
15:23:22 | FromDiscord | <.kanaxa> I've seen some packages but I have no idea how to integrate them since they require C++ knowledge, which I don't have |
15:23:28 | FromDiscord | <Phil> I haven't build anything serious in nim for native GUI because I have 0 experience there (I'm webdev by profession). I have played around a fair bit with owlkettle and really liked it, given that I contributed to the doc situation there a fair bit |
15:23:50 | FromDiscord | <Phil> For QT I only tried around with nimqml, which was nice, but learning a JS abstraction over C++ seemed like work |
15:24:05 | FromDiscord | <.kanaxa> I wish there were a way that I could write with PyQt as the interface/controller, with Nim on the backend that could compile it into a single static executable of sorts |
15:24:07 | FromDiscord | <.kanaxa> That would be great |
15:24:22 | FromDiscord | <Phil> If you're already familiar with QML I think it's worth checking out, I did play around with that as well and that was nice, just seemed like in overall complexity it was harsher than e.g. owlkettle |
15:24:34 | FromDiscord | <Phil> owlkettle is GTK though mind you |
15:25:06 | FromDiscord | <Phil> As for existing QT wrappers, I'm way too much of a native GUI noob to jump into that rabbit hole |
15:25:28 | FromDiscord | <.kanaxa> Yeah I was considering owlkettle but it's GTK |
15:25:35 | FromDiscord | <.kanaxa> I like GTK but I'd like something more cross-platform |
15:25:56 | FromDiscord | <.kanaxa> The beauty of Nim is the binary is cross-platform, it's the GUI part that's stumbling me |
15:26:29 | FromDiscord | <.kanaxa> I totally dig Tkinter/Tk with Python and you can make some nice stuff with it, but I haven't yet learned how to write wrappers with Nim |
15:26:30 | FromDiscord | <Phil> Might have better luck asking other folks, I can happily debate frontend architectures with you in general as I'm at the point where I have an overview over how they work in general regardless of what platform you write them for, but the syntax specifics for native just escape me for the moment |
15:26:43 | FromDiscord | <.kanaxa> In reply to @isofruit "Might have better luck": Fair enough |
15:27:31 | FromDiscord | <Phil> Though again, I did find that the nimqml package worked pretty well |
15:27:39 | FromDiscord | <Phil> Learning QML was just a bit too big of a barrier of entry for me |
15:30:43 | FromDiscord | <.kanaxa> As a webdev what drew you to Nim? |
15:30:47 | FromDiscord | <.kanaxa> I'm curious |
15:35:23 | FromDiscord | <Phil> sent a long message, see http://ix.io/4CfZ |
15:37:52 | FromDiscord | <Chronos [She/Her]> In reply to @.kanaxa "I totally dig Tkinter/Tk": Iirc there's a basic wrapper for tcl in Nim |
15:39:33 | FromDiscord | <Phil> sent a long message, see http://ix.io/4Cg0 |
15:40:02 | FromDiscord | <Phil> (edit) "http://ix.io/4Cg0" => "http://ix.io/4Cg1" |
15:40:20 | FromDiscord | <Chronos [She/Her]> Yeah Rust is a bit of a pain to learn and I have decided that after trying it (for the 3rd time) I am not touching it |
15:41:00 | FromDiscord | <Chronos [She/Her]> Nim is a very nice medium between what I like about Python and what I craved for from most compiled languages |
15:41:11 | FromDiscord | <Phil> It doesn't heart that I find nim to be increadibly readable. |
15:41:13 | FromDiscord | <Chronos [She/Her]> It's what I'm kinda using as a role model for my ideal language now lol |
15:41:19 | FromDiscord | <Phil> (edit) "heart" => "hurt" |
15:41:51 | FromDiscord | <Phil> (edit) "It doesn't hurt that I find nim to be increadibly readable. ... " added "Which is a value I count somewhere near as high, if not higher than performance." |
15:44:39 | NimEventer | New Nimble package! voicepeaky4gpt - Voicepeak Server With GPT, see https://github.com/solaoi/voicepeaky4gpt |
15:44:57 | FromDiscord | <.kanaxa> In reply to @yu.vitaqua.fer.chronos "Nim is a very": Same here, I looked at Rust and it seemed like quite the nightmare that I didn't want to touch, much less read |
15:45:04 | FromDiscord | <.kanaxa> Difficulty-wise I could probably wrap my head around it, but I'm not a masochist |
15:45:30 | FromDiscord | <.kanaxa> Especially when I'm not working in a team and have limited time what with my legal practice to run |
15:45:51 | FromDiscord | <.kanaxa> I find Nim highly readable, and consistent, which I really like |
15:46:07 | FromDiscord | <Phil> In reply to @.kanaxa "Difficulty-wise I could probably": That makes you better than me, I tried, failed and gave up.↵I was actually swearing to just wait a year or so until they get better learning materials and hype around them and then I found nim and that just capitalized on my time |
15:46:15 | FromDiscord | <.kanaxa> After the UFCS stuff blew me I really got into the whole macros stuff, and I'm quite blown away by the FFI stuff too, especially the interoperability with Python via Nimpy |
15:46:24 | FromDiscord | <Phil> (edit) "In reply to @.kanaxa "Difficulty-wise I could probably": That makes you better than me, I tried, failed and gave up.↵I was actually swearing to just wait a year or so until they get better learning materials and hype around them and then I found nim and that just capitalized on my time ... " added "because it gave me all I wanted and in fact more" |
15:46:31 | FromDiscord | <.kanaxa> In reply to @isofruit "That makes you better": And I find the Rust folks quite... evangelical |
15:46:47 | FromDiscord | <.kanaxa> It's sort of like the programming language version of "I use Arch too, BTW" |
15:47:07 | FromDiscord | <.kanaxa> It's a bit of a turn off for me |
15:47:08 | FromDiscord | <Phil> Eh, I'm fine with that, I'm less fine with having to think 10 seconds about a loc I just read |
15:47:13 | FromDiscord | <Phil> In reply to @.kanaxa "It's sort of like": Thanks for the reminder |
15:47:16 | FromDiscord | <Phil> I use Arch btw |
15:47:19 | FromDiscord | <.kanaxa> Hahahahaha |
15:47:27 | FromDiscord | <.kanaxa> I use POP OS, and I'm really happy with it |
15:47:28 | FromDiscord | <Phil> Almost missed my daily quota |
15:47:47 | FromDiscord | <jaar23> In reply to @spotlightkid "Just nimle install your": doesn't work. still getting the same error. ↵i have 1.16.14 and 2.0 in my environment. ↵`nim -v` give me 2.0.0 now |
15:47:48 | FromDiscord | <.kanaxa> And it's simple, and I dislike unnecessary complexity |
15:48:01 | FromDiscord | <.kanaxa> (edit) "it's simple," => "Nim is 'simpler'," | "Nim is 'simpler',and I dislike unnecessary complexity ... " added "so my vote and mindshare goes to Nim" |
15:48:42 | FromDiscord | <.kanaxa> As much as I see the benefits of Rust I think it's overhyped, as other languages can just do the same |
15:48:44 | FromDiscord | <Phil> It's the entire "opt-in" philosophy that I sense |
15:48:55 | FromDiscord | <Phil> (edit) "It's the entire "opt-in" philosophy that I sense ... " added "everywhere and that I value" |
15:49:00 | FromDiscord | <.kanaxa> In the end it's in the hands of the programmer - the sculptor makes the art, whatever the material, whatever the tool |
15:49:36 | FromDiscord | <.kanaxa> I sometimes have this feeling that some Rust folks just want to be seen as folks of a higher echelon of the programming realms, for being able to withstand the complexity of the language |
15:50:16 | FromDiscord | <Phil> In reply to @jaar23 "doesn't work. still getting": Hmmm can you check your nim dump in where it's looking for files? |
15:50:22 | FromDiscord | <.kanaxa> In reply to @.kanaxa "I sometimes have this": I'll just stick to C and shoot myself in the foot if I ever want to go that low-level |
15:50:53 | FromDiscord | <.kanaxa> "...Why code in C anymore?↵↵...because it makes you a Real Man™, with steel wool-like hair on your chest and a distant gaze, as though contemplating the segfault that got away; UNIX beard moving gently in the harsh nautical wind that is ever present near C programmers." |
15:50:55 | FromDiscord | <.kanaxa> I found this quote hilarious |
15:51:55 | FromDiscord | <double_spiral> In reply to @.kanaxa "I sometimes have this": FR |
15:52:00 | FromDiscord | <Phil> sent a long message, see http://ix.io/4Cg6 |
15:52:10 | FromDiscord | <.kanaxa> (edit) ""...Why" => ""...Why" | "programmers."" => "programmers."" |
15:52:20 | FromDiscord | <Phil> And if the packages aren't in the right directory that means figuring out how to install them properly so that they start going into that pkgs2 directory |
15:52:49 | FromDiscord | <Phil> If the packages are and the nim dump is borked somehow, I'd start looking into how that can be manipulated.↵There are compiler flags, but I'd use those as a last resort |
15:52:58 | FromDiscord | <Phil> (edit) "If the packages are and the nim dump is borked somehow, I'd start looking into how that can be manipulated.↵There are compiler flags, but I'd use those as a last resort ... " added "and more of a workaround for a fundamental problem." |
15:56:00 | FromDiscord | <.kanaxa> In reply to @yu.vitaqua.fer.chronos "Iirc there's a basic": How does that wrapper work? Is it like a direct translation to Tcl calls? Is there a Tk/Tkinter-like interface for it, or do I have to actually make Tcl calls? |
15:56:11 | FromDiscord | <.kanaxa> (edit) "Tcl" => "Tk" | removed "actually" |
15:56:20 | FromDiscord | <.kanaxa> (edit) "calls?" => "calls directly?" |
15:58:02 | FromDiscord | <Chronos [She/Her]> In reply to @.kanaxa "How does that wrapper": Not sure exactly, I can find a link hold on |
15:58:45 | FromDiscord | <jaar23> In reply to @isofruit "For reference, the way": that's good to know, i can see it is using `.choosenim/toolchains/nim-2.0.0/config/nim.cfg` and there is `pkgs2` and `pkgs` folder export as nimblepath. ↵`nim dump` run fine. I realize if i explicitly leave the package in my xxx.nimble file as one of the required, then it works. |
15:59:05 | FromDiscord | <jaar23> do i need to explicitly define package that i install from nimble? |
15:59:20 | FromDiscord | <Chronos [She/Her]> Official bindings which seem to just be commands: https://github.com/nim-lang/tcl |
16:00:21 | FromDiscord | <Chronos [She/Her]> https://github.com/thindil/steamsky/blob/master/nim/src/tk.nim this also seems to be just commands |
16:00:24 | FromDiscord | <.kanaxa> Which means that I'd need to actually learn Tcl itself just to use the GUI I guess |
16:00:40 | FromDiscord | <Chronos [She/Her]> Probably wouldn't be too hard to make a small wrapper over either once you have some minimal Tcl knowledge |
16:01:08 | FromDiscord | <Phil> In reply to @jaar23 "that's good to know,": Could you rephrase that sentence?↵Do you mean that if you add the package that is missing as a `required` statement to your nimble file it all works? |
16:01:54 | FromDiscord | <Phil> Because if that is your statement then you, that'll help.↵When you run a nimble command, nimble very aggressively first tries to install (if it can't find them in pkgs/pkgs2) any dependency defined via `requires` statements in the nimble file |
16:02:08 | FromDiscord | <Phil> And it will use only the dependencies defined in that scope |
16:02:52 | FromDiscord | <Phil> So if you were to compile your project and your nimble was missing a requires statement for one of the packages that you use in your project, then it would throw errors during compilation that it could not find a certain package |
16:03:12 | FromDiscord | <.kanaxa> In reply to @yu.vitaqua.fer.chronos "https://github.com/thindil/steamsky/blob/master/nim": I'm reaading the source, wondering whether the window-drawing module is |
16:03:37 | FromDiscord | <Phil> nim c doesn't have that problem, as it uses whatever it can find in your pkgs/pkgs2 folders, independent of what is defined in a given nimble file. |
16:03:44 | FromDiscord | <.kanaxa> (edit) "reaading" => "reading" |
16:05:30 | FromDiscord | <Phil> sent a code paste, see https://paste.rs/veFRL |
16:05:35 | FromDiscord | <.kanaxa> As in the module that actually draws the widgets by calling on Tcl |
16:05:58 | FromDiscord | <.kanaxa> In reply to @.kanaxa "I'm reading the source,": As in the module that actually draws the widgets by calling on Tcl |
16:30:19 | * | junaid_ joined #nim |
16:33:57 | FromDiscord | <jaar23> In reply to @isofruit "Could you rephrase that": Sorry, i was disconnected. Yes, that what I mean. Doesn't nimble install going to auto add the required in my project nimble file? |
16:34:29 | FromDiscord | <Phil> In reply to @jaar23 "Sorry, i was disconnected.": nimble install does not automatically modify the nimble file.↵Instead it relies on the nimble file to tell it which packages to install |
16:34:43 | FromDiscord | <Phil> So if you got nothing in there then it won't install any packages if you need them |
16:35:05 | FromDiscord | <Phil> Basically the nimble file is king, nobody writes to the nimble file except for you, the human user |
16:35:13 | FromDiscord | <Phil> ~~Unless you're a very clever AI like ElegantBeef~~ |
16:35:48 | Amun-Ra | :P |
16:36:20 | FromDiscord | <Phil> Or Amun-Ra, can't forget about the AI faction from IRC |
16:36:37 | Amun-Ra | hehe |
16:39:50 | FromDiscord | <jaar23> In reply to @isofruit "Basically the nimble file": I see, my expectations is wrong. I never checked that file. So being say, nimble install package I should still modify the file myself in order to compile the program |
16:41:48 | FromDiscord | <Phil> In reply to @jaar23 "I see, my expectations": `nimble install <package>` is a project-independent operation.↵That install the package into your global .nimble/pkgs or .nimble/pkgs2 directories (which is on the nim path).↵That makes them available for globally using the compile command `nim c` but not for running the project-specific commands that you would execute from a terminal that is in you directory where a nimble file is lo |
16:42:09 | FromDiscord | <Phil> (edit) "In reply to @jaar23 "I see, my expectations": `nimble install <package>` is" => "sent" | "project-independent operation.↵That install the package into your global .nimble/pkgs or .nimble/pkgs2 directories (which is on the nim path).↵That makes them available for globally using the compile command `nim c` but not for running the project-specific commands that you would execute from a terminal that is in you directory wher |
16:42:22 | FromDiscord | <Phil> (edit) "http://ix.io/4Cgq" => "http://ix.io/4Cgr" |
16:42:57 | FromDiscord | <Phil> It's slightly confusing that there are project specific commands and global commands and that there are somewhat mixed I now realize, never occurred to me |
16:43:17 | FromDiscord | <Phil> Maybe because I basically only use custom tasks when it comes to project specific stuff and so I'm the one who determines what they're called |
16:51:24 | FromDiscord | <jaar23> In reply to @isofruit "`nimble install <package>` is": I see, thanks for clearing my thoughts. ↵I think I'm using all the std to start learning about Nim, and I just have to nimble run, never thought that should be global or project specific. |
16:51:55 | FromDiscord | <Phil> In reply to @jaar23 "I see, thanks for": std you don't need to mention in your requires, that's default available, it's user-packages where you'll have to do the requires thing |
16:52:15 | FromDiscord | <Phil> nimble run for example is project specific |
16:53:01 | FromDiscord | <Phil> (edit) "specific" => "specific. Noticeable by it throwing an error if that is executed without being in a directory with a .nimble file" |
16:55:47 | FromDiscord | <Festive> sent a code paste, see https://play.nim-lang.org/#ix=4Cgw |
16:57:28 | FromDiscord | <Phil> I'm out there, I have never coded with anything windows related and stay away from the platform |
16:57:53 | FromDiscord | <Phil> (edit) "there," => "as a convo partner for that topic," |
16:58:27 | FromDiscord | <.kanaxa> Just wondering if you use Nimscript? |
16:58:35 | FromDiscord | <.kanaxa> I'm wondering if that's a viable replacement for Bash or Python |
16:58:44 | FromDiscord | <.kanaxa> Or if there's any advantage to it over Python |
16:58:45 | FromDiscord | <Phil> I do a fair bit for build scripts |
17:00:20 | FromDiscord | <Phil> I basically have nimble tasks (which are nimscript) to build my webserver, put it in a docker container and deploy that together with an nginx container with a self-signed certificate, locally reroute the domain to my website to point to localhost and voila, I can access my local server as if it were the one on my webpage and have the closest thing to a live environment possible |
17:01:12 | FromDiscord | <Phil> The advantage of nimscript for me is solely that I can execute them as nimble tasks.↵I don't need 10 different bash scripts floating around, I can just go into my project directory and do `nimble local_deploy`, bam |
17:01:49 | FromDiscord | <Phil> You also have the advantage of being able to access nim code in a limited capacity, but that is only sometimes useful |
17:02:43 | FromDiscord | <Phil> Independent of nimble tasks, no I don't use nimscript.↵For nimble tasks in the shape of build-scripts and the like to make setup easy etc. they are my preferred tool |
17:03:25 | FromDiscord | <Phil> Not that it matters much mind you, under the hood those nimble scripts still execute a ton of bash commands, but the syntax for that is trivial |
17:04:27 | * | jmdaemon joined #nim |
17:06:00 | FromDiscord | <Phil> And I find nimscript to be far more readable than bash. And since you can trivially call bash from nimscript, I'll choose it any day of the week for anything where I'm allowed to assume a nim context (and thus allowed to assume a machine I ssh into might have nim installed) |
17:13:48 | * | ntat quit (Quit: leaving) |
17:20:33 | * | droidrage joined #nim |
17:22:49 | FromDiscord | <.kanaxa> In reply to @isofruit "I basically have nimble": Beautiful |
17:23:42 | FromDiscord | <.kanaxa> So it’s like automated setup in a container, like an Ansible Playbook but with Nimscript? |
17:23:57 | FromDiscord | <Phil> Pretty much |
17:24:03 | FromDiscord | <.kanaxa> I love it |
17:24:12 | FromDiscord | <Phil> Basically the second I find myself doing something a lot I write a nimble task to take it away |
17:25:04 | FromDiscord | <Phil> I have 4 different ways to compile my project with different flags, I have a task for building images, for changing my domain, for saving these images, for getting the image files and uploading them via scp to my server etc. |
17:25:16 | FromDiscord | <.kanaxa> I haven’t yet researched Nimble tasks but I’m looking into it |
17:25:49 | FromDiscord | <.kanaxa> I’ve a lot of Bash scripts but I’m thinking of moving them into Nimscript |
17:25:56 | FromDiscord | <Phil> It's something I'd start worrying about once I have a project and now how to build/deploy it |
17:26:29 | FromDiscord | <Phil> The main reason I started nimble tasks was because I had like 12 different bash scripts and invoking them with bash ./scriptDir/<script>.sh become annoying |
17:26:37 | FromDiscord | <.kanaxa> My only reservation with Python is that I don’t like how I might have to depend on the system Python with it, which I like to keep relatively package free |
17:27:09 | FromDiscord | <.kanaxa> At least with Nim I can isolate my scripts yet still have a programming language backing them |
17:27:19 | FromDiscord | <.kanaxa> Just not a fan of Bash syntax personally |
17:27:26 | FromDiscord | <.kanaxa> Unless I have to |
17:27:47 | FromDiscord | <Phil> sent a code paste, see https://play.nim-lang.org/#ix=4CgU |
17:28:00 | FromDiscord | <.kanaxa> Hell that’s still more readable than Bash |
17:28:12 | FromDiscord | <Phil> the echo makes it so the results of those commands get printed to the terminal |
17:28:16 | FromDiscord | <.kanaxa> And it wins for the ability to use string interpolation alone |
17:28:28 | FromDiscord | <Phil> I don't really care for the docker build steps so I don't echo those |
17:29:19 | FromDiscord | <Phil> ~~For me it already wins by the fact that if statements actually don't look confusing as hell~~ |
17:29:22 | * | qwestion joined #nim |
17:29:28 | FromDiscord | <Phil> For the rare occassions you actually need if statements |
17:29:36 | FromDiscord | <Phil> (edit) "For the rare occassions ... you" added "where" |
17:29:45 | FromDiscord | <.kanaxa> Oh man I find Bash if statements so… ugly |
17:29:58 | FromDiscord | <.kanaxa> If and fi |
17:30:01 | FromDiscord | <.kanaxa> Seriously what |
17:30:26 | FromDiscord | <.kanaxa> And the string interpolation and equality operators |
17:30:31 | FromDiscord | <.kanaxa> Just not my cup of tea |
17:31:01 | FromDiscord | <leetnewb> kanaxa, curious how you found nim? |
17:32:29 | FromDiscord | <.kanaxa> About a year or so ago I was looking around for a compiled programming language to learn and build tools with - I know that eventually, someday, I’ll really do C but I wanted something modern first and one that could render an executable |
17:32:40 | FromDiscord | <.kanaxa> I looked at rust, swift and Nim |
17:33:08 | FromDiscord | <Phil> I respect your drive to still want to try out C |
17:33:36 | FromDiscord | <Phil> I got exposed like twice ever to how C handles types (particularly ref types such as arrays etc.) and I just bailed |
17:33:47 | FromDiscord | <.kanaxa> In reply to @.kanaxa "I looked at rust,": It took me all of 15 minutes to fall in love with Nim’s syntax, although familiarizing myself with the differences of it as a compiled/types took a lot longer since I was coming from a lot of Python stuff |
17:33:54 | FromDiscord | <.kanaxa> Rust really put me off |
17:34:20 | FromDiscord | <.kanaxa> I personally find the syntax to be unreadable and ugly |
17:34:43 | FromDiscord | <leetnewb> there used to be a python -> go pipeline, but maybe go lost some of its shine |
17:34:44 | FromDiscord | <.kanaxa> Swift is much more beautiful in comparison despite not being indentation based like Python |
17:35:04 | FromDiscord | <.kanaxa> Essentially I formulate my decisions first and foremost on the readability of language, then it’s ecosystem |
17:35:08 | FromDiscord | <.kanaxa> Then my goals |
17:35:23 | FromDiscord | <.kanaxa> So I’m still learning swift right since I want to get into mobile development |
17:35:49 | FromDiscord | <.kanaxa> Nim I want as a general tooling language that I can build down to executables and Python is for everything else |
17:35:56 | FromDiscord | <.kanaxa> C is just pure intellectual capacity |
17:36:07 | FromDiscord | <.kanaxa> (edit) "C is just ... purecuriosity" added "out of" | "capacity" => "curiosity" |
17:36:27 | FromDiscord | <.kanaxa> And since it’s such a slow-moving language, which I think is really nice |
17:36:36 | FromDiscord | <Phil> I'd start learning zig before I start learning C |
17:36:48 | FromDiscord | <Phil> (edit) "C" => "C, I'll be honest" |
17:38:20 | FromDiscord | <.kanaxa> In reply to @.kanaxa "Nim I want as": I also really want to master Nim since I don’t trust in the Swift’s ecosystem so much since their standard library/Foundation framework discrepancies are quite a disappointment if you’re not on Mac |
17:38:41 | FromDiscord | <.kanaxa> In reply to @isofruit "I'd start learning zig": What attracts you to Zig |
17:39:18 | FromDiscord | <.kanaxa> I considered it but for me I don’t see its advantage over Nim or Swift for me |
17:39:46 | FromDiscord | <Phil> Syntax that looks like english and from what I've seen hopefully it treats types better than C where it just goes "here's a heap pointer to the first element of the array and the length to the array, now iterate over that and screw you" |
17:40:18 | FromDiscord | <.kanaxa> I take that to be C’s wild charm, haha |
17:40:38 | FromDiscord | <Phil> In reply to @.kanaxa "I take that to": You sir/maam have interesting ideas of charming 😛 |
17:41:02 | FromDiscord | <.kanaxa> In reply to @.kanaxa "I take that to": “You don’t tell ‘e what to do, I tell YOU what I’ll do.”- C |
17:41:13 | FromDiscord | <.kanaxa> (edit) "‘e" => "me" |
17:41:56 | FromDiscord | <Phil> I read people talking nostalgic of C and I glance like once a year at a piece of C code when I'm forced to as part of a project and I just do not get it |
17:42:17 | FromDiscord | <.kanaxa> I’m not a low-level programmer so I’ve never really had to deal with memory management or manual garbage collection so that’s part of the appeal of C for me - I’m not from a computer science background |
17:42:26 | FromDiscord | <.kanaxa> Just curiosity |
17:42:42 | FromDiscord | <Phil> Particularly hearing folks like e.g. Luke Lafrenyiere from Linus Tech Tips talk about how it's his favourite language I'm like... how? Expressing an idea in that looks like the worst kind of religious ritual |
17:42:53 | FromDiscord | <.kanaxa> True that |
17:43:16 | FromDiscord | <.kanaxa> Again some people have a very…tribalistic affinity for a language |
17:43:25 | FromDiscord | <.kanaxa> I have no such affinity |
17:43:33 | FromDiscord | <.kanaxa> I just go for what’s practical for me and what looks nice |
17:43:57 | FromDiscord | <.kanaxa> So Nim and Python it is for me first, then anything else (eg Swift and C) |
17:44:26 | FromDiscord | <Phil> For me the next big thing that I'll have to find a reason to come around to is just jump into something that forces you to write functional code |
17:45:34 | FromDiscord | <Phil> I have an idea on how to write and structure procedural code to my liking, I have an idea on how one would want to structure object oriented code, I don't have the same kind of intuitive understanding for functional yet.↵I just don't have the mixture of time/motivation/mental capacity to start something in there |
17:46:09 | FromDiscord | <Phil> (edit) "code," => "code (though I've arrived at the standpoint that OO just does not lead to readable code)," |
17:47:55 | FromDiscord | <Phil> Though taking a deeper dive into the worlds of reactive programming that websockets enable you to do is also something that really tickles me.↵See the discussion with treeform in the webdev channel we had a couple days back |
17:48:39 | FromDiscord | <Phil> Literally had to stop because my neurons were cooking with the new viewpoints you can reach for looking at how to structure things |
17:48:51 | FromDiscord | <Phil> (edit) removed "looking at" |
17:52:56 | FromDiscord | <.kanaxa> Have you tried HTMX before? It’s wonderful |
17:53:02 | FromDiscord | <.kanaxa> I’ve never done any reactive programming |
17:53:07 | FromDiscord | <.kanaxa> I wonder how different it is |
17:53:12 | FromDiscord | <Phil> Can't say I have |
17:53:45 | FromDiscord | <michaelb.eth> like "functional", "reactive" requires some defining of terms else it can mean a number of different things |
17:54:27 | FromDiscord | <.kanaxa> I think he means the view in the DOM reacts to the change of state |
17:54:38 | FromDiscord | <.kanaxa> Or at least that’s what I understand it does |
17:54:46 | FromDiscord | <.kanaxa> But SPAs are not my thing |
17:54:51 | FromDiscord | <.kanaxa> I’m just a Django guy |
17:55:05 | FromDiscord | <leetnewb> In reply to @.kanaxa "Have you tried HTMX": You've probably seen this: https://arhamjain.com/2021/11/22/nim-simple-chat.html |
17:55:08 | FromDiscord | <michaelb.eth> sure, that's not an uncommon context in which to speak of "reactive" |
17:55:14 | FromDiscord | <Phil> sent a long message, see http://ix.io/4Ch4 |
17:55:49 | FromDiscord | <.kanaxa> In reply to @leetnewb "You've probably seen this:": Oh I haven’t! Thanks for sharing, gonna read it |
17:56:18 | FromDiscord | <michaelb.eth> but RxJS and IxJS are also reactive even though they don't have anything to do with the DOM directly, other than being used sometimes re: DOM events |
17:56:31 | FromDiscord | <Phil> (edit) "http://ix.io/4Ch4" => "http://ix.io/4Ch6" |
17:56:46 | FromDiscord | <michaelb.eth> sometimes those kinds of pipeline libs or DSLs are called "functional reactive" |
17:56:56 | FromDiscord | <Phil> I mean, the entire DOM updating and central store etc. is typically achieved via rxjs in my eyes |
17:57:04 | FromDiscord | <Phil> It's based on observables through and through imo |
17:57:09 | FromDiscord | <michaelb.eth> it can be, sure |
17:58:41 | FromDiscord | <griffith1deadly> Are there any good reactive libraries for Nim with C backend? |
17:58:59 | FromDiscord | <Phil> No clue, I haven't written async nim code in any meaningful capacity |
17:59:41 | FromDiscord | <Phil> https://nimble.directory/pkg/chronos↵Chronos is often mentioned as a quality package I think |
18:00:26 | FromDiscord | <griffith1deadly> In reply to @isofruit "https://nimble.directory/pkg/chronos Chronos is oft": as I recall, it assumes single-threaded programming |
18:00:55 | FromDiscord | <michaelb.eth> well it's one event loop per thread, but you can start other threads and chronos event loops on them |
18:01:01 | FromDiscord | <Phil> In reply to @griffith1deadly "as I recall, it": WIth that you already know more than me about the package 😅 |
18:01:29 | FromDiscord | <Phil> Wait, conceptually... is "one event-loop across threads" even possible? |
18:02:12 | FromDiscord | <griffith1deadly> In reply to @isofruit "Wait, conceptually... is "one": in other languages like jvm lang's yes |
18:05:32 | FromDiscord | <michaelb.eth> the main challenge with chronos and multi-threading is figuring out how to coordinate between the threads |
18:05:58 | FromDiscord | <michaelb.eth> the problem isn't unique to chronos, of course |
18:06:23 | FromDiscord | <Phil> The entire space seems as a general concept challenging already |
18:07:19 | FromDiscord | <michaelb.eth> the chronos maintainers recently added a feature for rudimentary signaling between threads, and then started using that feature in their nimbus-eth2 project |
18:07:27 | FromDiscord | <michaelb.eth> I've been meaning to take a look, seems promising |
18:07:36 | FromDiscord | <michaelb.eth> (edit) "I've been meaning to take a ... look," added "closer" |
18:08:20 | FromDiscord | <michaelb.eth> v |
18:08:23 | FromDiscord | <michaelb.eth> https://github.com/status-im/nim-chronos/pull/406 |
18:08:35 | FromDiscord | <griffith1deadly> In reply to @isofruit "The entire space seems": probably yes, but in other languages multithreading could be very easy literally ↵jvm has itself executors, and in them just post some code via procs | lambdas |
18:09:26 | FromDiscord | <Phil> I mean, if we're just talking about defining a job object and executing "runJob" in another thread, you can similarly just spawn a thread in nim, hand it a proc and let it go |
18:09:47 | FromDiscord | <Phil> But typically it's about having interactive concurrency in some manner where it becomes challenging |
18:10:14 | FromDiscord | <michaelb.eth> In reply to @isofruit "But typically it's about": exactly, there still doesn't seem to be a good solution/framework for that in Nim |
18:10:15 | FromDiscord | <Phil> Or have the thread's execution result somehow return to the main thread |
18:10:50 | FromDiscord | <griffith1deadly> In reply to @isofruit "I mean, if we're": but another executors features that mean posting task like future[result] to another thread's may harder |
18:11:23 | FromDiscord | <Phil> That one I fully agree with. I think nim only has stuff like "channels" to forward data from thread a to b |
18:11:59 | FromDiscord | <Phil> But how you conceptually would even do "Thread B does task, sends result back to A which has been doing other stuff since and suddenly changes track to deal with the result from B" or something is absolutely beyond me |
18:12:08 | FromDiscord | <Phil> I'm too much of a novice in multithreaded applications |
18:12:39 | FromDiscord | <Phil> I can mentally deal with simple concurrent tasks like executing an expensive mapping operation on a long list in a concurrent manner or sth |
18:12:45 | FromDiscord | <michaelb.eth> There was an `AsyncChannel` prototype/experiment in chronos, though the PR was never merged. I used it to experiment with exactly what you're describing, it is do-able. |
18:13:10 | FromDiscord | <Phil> (edit) "sth" => "sth↵After that it gets iffy" |
18:13:44 | FromDiscord | <michaelb.eth> the thread notification mechanism in PR 406 I linked above was extracted as sort of a minimal feature based on that older unmerged PR for `AsyncChannel` |
18:22:09 | FromDiscord | <michaelb.eth> There's also the nim.works cps and loony libraries. I haven't spent any time with them, so can't offer much insight, but I do know they're an alternative approach to async/await:↵https://github.com/nim-works/cps↵https://github.com/nim-works/loony |
18:22:42 | FromDiscord | <michaelb.eth> I'm also vaguely aware there was some drama around CPS in Nim, but I don't know the story |
18:27:26 | * | xet7 joined #nim |
18:38:30 | * | jmdaemon quit (Ping timeout: 246 seconds) |
18:50:23 | FromDiscord | <Phil> This is why I love nim:↵I have literally no idea what this even does conceptually, let alone in syntax.↵But I have the option to deal with it if I so choose to, I'm not forced to learn whatever concept that is supposed to represent |
18:53:49 | FromDiscord | <nervecenter> Very Lisp-like in that regard |
18:54:07 | FromDiscord | <nervecenter> There are very few massive all-encompassing libraries |
18:54:15 | FromDiscord | <nervecenter> (edit) "very few" => "almost no" |
18:54:29 | FromDiscord | <nervecenter> You can piece together parts quite effectively |
19:31:48 | * | jjido joined #nim |
19:45:18 | * | xet7 quit (Remote host closed the connection) |
19:57:14 | * | xet7 joined #nim |
20:12:45 | FromDiscord | <enthus1ast> ugh nimble develop is so broken, idk how you guys can work with this |
20:13:05 | FromDiscord | <enthus1ast> or nimble in general idk |
20:15:16 | FromDiscord | <enthus1ast> when i try to install a fork of a package that i've just edited, it does not get picked up |
20:15:16 | FromDiscord | <enthus1ast> and why tf do we have dozents of json and lock and places where an entry could be? |
20:15:26 | FromDiscord | <enthus1ast> my GUESS is i tried both nimble develop and nimble develop -g |
20:15:52 | FromDiscord | <enthus1ast> but i usually do not create nimble packages for my quick and dirty scripts or experiments |
20:17:38 | FromDiscord | <enthus1ast> but then, as far as i understand nimble develop -g it should be in \~/.nimble/links but the package is not there |
20:18:18 | FromDiscord | <enthus1ast> but there is now a reference somewhere in some file |
20:19:26 | FromDiscord | <enthus1ast> what i currently do, i fight with nimble every time i develop a local package and this is annoying af |
20:21:01 | FromDiscord | <Elegantbeef> Nimble 0.14 is just awful ime |
20:21:01 | FromDiscord | <Elegantbeef> I'd suggest checking if atlas makes your life any better |
20:21:15 | FromDiscord | <enthus1ast> can it also read nimble files for requires? |
20:21:21 | FromDiscord | <Elegantbeef> Yes |
20:34:28 | * | jjido quit (Ping timeout: 252 seconds) |
20:35:23 | * | jmdaemon joined #nim |
20:43:31 | * | junaid_ quit (Remote host closed the connection) |
20:46:33 | FromDiscord | <Chronos [She/Her]> Gonna be using Mummy for making an account system now |
20:46:52 | FromDiscord | <Chronos [She/Her]> Wondering how many threads I should really use in a production environment though |
20:47:26 | FromDiscord | <Chronos [She/Her]> I'd imagine if there's 4 requests at a time, and there's only 2 threads in the pool, they have to wait for the first 2 to be completed right? Which makes sense |
20:47:30 | FromDiscord | <Chronos [She/Her]> But... Websockets? |
20:49:16 | FromDiscord | <bung8954> depends on how many concurent requests you can imaging |
20:52:07 | FromDiscord | <Phil> In reply to @yu.vitaqua.fer.chronos "Wondering how many threads": I mean, first things first, how many threads will the server that you borrow even have :-P? |
20:52:48 | * | ced1 joined #nim |
20:52:59 | * | ced1 is now known as cedb |
20:52:59 | FromDiscord | <Phil> For me e.g. multithreaded code is meaningless:↵My server runs for 6 bucks a month on a single shared CPU Thread, so multithreading is essentially meaningless to me |
20:56:22 | FromDiscord | <Chronos [She/Her]> Makes sense, I'd probably use something like Oracle VPS so not great for threads |
20:56:28 | FromDiscord | <Chronos [She/Her]> Ig Prologue should be fine then? |
20:56:54 | FromDiscord | <Phil> Pretty much, if you're bound by a single-threaded environment, async is your only chance of getting faster |
20:57:26 | FromDiscord | <Phil> But then again, if it's a web-application your webserver is not going to be the speed-limitting step |
20:57:45 | FromDiscord | <Phil> Your database and how well you optimize your interactions and workflows with it via buffers, caches etc. will be |
20:59:22 | FromDiscord | <Phil> That and how well you can avoid N+1 problems |
21:12:29 | * | pbsds quit (Ping timeout: 260 seconds) |
21:18:12 | FromDiscord | <Chronos [She/Her]> In reply to @isofruit "Your database and how": Fair |
21:18:54 | FromDiscord | <Chronos [She/Her]> Lmao I hate I can't just write to a Nim table and have it automatically map itself to a db or something lmao |
21:19:03 | FromDiscord | <Chronos [She/Her]> (This is a cry for help) |
21:19:07 | FromDiscord | <Phil> webdev is fascinating in that you can save a ton of performance literally independent of your actual language and framework |
21:20:21 | FromDiscord | <Phil> In reply to @yu.vitaqua.fer.chronos "Lmao I hate I": Yeah no, no pity from me.↵Generally I tend to use an ORM and let those generate my DB for me.↵Though at this point I might just write my database with SQL by hand solely so I can use the full available syntax for constraints etc. |
21:21:04 | * | pbsds joined #nim |
21:21:21 | FromDiscord | <Chronos [She/Her]> Fair, I just want my app to work honestly |
21:21:49 | FromDiscord | <Phil> Yeah but invalid database states! |
21:22:22 | FromDiscord | <Phil> Only you can protect your future self from debugging stupid shit |
21:22:32 | FromDiscord | <Phil> Use protection! use constraints! |
21:22:33 | FromDiscord | <.matrixagent> why is the IDE support for nim so poor |
21:23:37 | FromDiscord | <Chronos [She/Her]> In reply to @isofruit "Use protection! use constraints!": 😭 |
21:24:07 | FromDiscord | <Chronos [She/Her]> Honestly I'm likely to roll my own ORM or at least abstraction layer for everything to allow for migration near seamlessly on request |
21:24:10 | FromDiscord | <Phil> In reply to @.matrixagent "why is the IDE": Because parsing nim code is hard so the only reliable source that can do so is the compiler.↵Which means all your plugins (except for the madlads at intellij and their plugin) will eventually rely on the same piece of code from the compiler that does the parsing for them, be it via nimlsp or else |
21:24:17 | FromDiscord | <Chronos [She/Her]> In reply to @.matrixagent "why is the IDE": No-one invests time into it really |
21:24:46 | FromDiscord | <.matrixagent> In reply to @isofruit "Because parsing nim code": im just trying to use the offical jetbrains nim plugin |
21:24:53 | FromDiscord | <Phil> That and I think only nimsaem ever invested a decent amount of time to work around those limitations. |
21:25:35 | FromDiscord | <Phil> In reply to @.matrixagent "im just trying to": Well they don't use the compiler, they use... I dunno, magic sauce that still leads to weird and inconsistent syntax highlighting |
21:26:26 | FromDiscord | <Elegantbeef> I mean there has been some time invested into it, but the present way nimsuggest is done is going to always result in a bad experience |
21:26:34 | FromDiscord | <Phil> In reply to @yu.vitaqua.fer.chronos "Honestly I'm likely to": Honestly if you don't want to deal with ORMs, just write the queries yourself and use nisane |
21:26:57 | FromDiscord | <Phil> nisane can deal with the parsing of your query result into nim types |
21:27:04 | FromDiscord | <Phil> And you can deal ORM independent with the rest |
21:27:21 | FromDiscord | <Phil> In reply to @yu.vitaqua.fer.chronos "😭": Also don't go raw dogging your database without any constraint, that's just ill advised in general |
21:27:49 | FromDiscord | <Elegantbeef> I use CSV for all my database needs! |
21:27:58 | FromDiscord | <.matrixagent> In reply to @isofruit "Also don't go raw": raw dogging? |
21:28:01 | FromDiscord | <.matrixagent> ayo |
21:28:06 | FromDiscord | <Phil> Beef with the absolute monstrous take |
21:29:03 | FromDiscord | <.matrixagent> i wonder why inteliji is using 3 gb of memory |
21:29:06 | FromDiscord | <.matrixagent> jesus |
21:29:27 | FromDiscord | <Phil> Imagine me splitting my hands in a half circle and a rainbow appearing |
21:29:28 | FromDiscord | <Phil> "Java" |
21:29:29 | FromDiscord | <Elegantbeef> Written in a JVM language |
21:30:01 | FromDiscord | <Phil> Heard many good things about Kotlin, I'd love to try it out |
21:30:10 | FromDiscord | <.matrixagent> In reply to @isofruit "Heard many good things": im using it right now |
21:30:20 | FromDiscord | <.matrixagent> honestly is slept on for a lot of things |
21:30:45 | FromDiscord | <.matrixagent> the whole jvm ecosystem is slept on i think people have forgotten how good the java ecosystem is |
21:30:57 | FromDiscord | <Elegantbeef> Too bad the JVM is atrocious |
21:30:59 | FromDiscord | <Phil> More functional, less null, less "I will murder you with unnecessarily long lines of code until you actually die" |
21:31:28 | FromDiscord | <.matrixagent> In reply to @Elegantbeef "Too bad the JVM": i think the reason why java uses so much memory is it will use up all the heap given to it once its full it will run the GC |
21:31:40 | FromDiscord | <.matrixagent> to avoid pauses |
21:32:14 | FromDiscord | <.matrixagent> i would definitely not run java on any of my servers with less than 2 gb of memory |
21:32:31 | FromDiscord | <Elegantbeef> There's the difference between you and I 😄 |
21:32:40 | FromDiscord | <Elegantbeef> 2Gb |
21:32:59 | FromDiscord | <.matrixagent> i would actually like to compile llvm ir to java bytecode |
21:33:04 | FromDiscord | <.matrixagent> i know its a war crime to do so |
21:33:09 | FromDiscord | <Phil> Given I don't even have a full gig of memory for my miniature server that's oof |
21:33:12 | FromDiscord | <.matrixagent> but the ecosystem is nice |
21:33:26 | FromDiscord | <.matrixagent> In reply to @isofruit "Given I don't even": 512? |
21:33:30 | FromDiscord | <Elegantbeef> I'm primarily someone that cares about gamedev, so the JVM is just a joke to me |
21:33:33 | FromDiscord | <Phil> 965M |
21:33:52 | FromDiscord | <.matrixagent> im using nim for my crash reporter just incase the server malfunctions or something it would send me all the relevant logs |
21:33:55 | FromDiscord | <.matrixagent> its been great |
21:34:29 | FromDiscord | <.matrixagent> In reply to @Elegantbeef "I'm primarily someone that": project zomboid has proven this |
21:34:37 | FromDiscord | <.matrixagent> the lag spikes are insane |
21:34:59 | FromDiscord | <.matrixagent> and they're using a pimped out LLVM jit for their jvm and it didnt help much |
21:35:32 | FromDiscord | <Elegantbeef> When you cannot have user defined value types you either have awful written code, or awful performance |
21:36:21 | FromDiscord | <.matrixagent> and also why doesnt nim just compile to llvm ir |
21:36:23 | FromDiscord | <.matrixagent> why C? |
21:36:31 | FromDiscord | <Elegantbeef> It's more portable than llvmir |
21:36:46 | FromDiscord | <.matrixagent> how |
21:36:59 | FromDiscord | <.matrixagent> llvm ir runs on nearly every backend llvm had |
21:37:05 | FromDiscord | <Elegantbeef> you also get all the tooling for C pretty much out of the box |
21:37:05 | FromDiscord | <.matrixagent> (edit) "had" => "has" |
21:37:06 | FromDiscord | <Elegantbeef> There is a C compiler for pretty much everything |
21:37:40 | FromDiscord | <.matrixagent> i see |
21:37:51 | FromDiscord | <.matrixagent> so its possible to compile nim for esp32? |
21:37:56 | FromDiscord | <Elegantbeef> Yes |
21:37:57 | FromDiscord | <Chronos [She/Her]> In reply to @isofruit "Honestly if you don't": Nisane? Neat |
21:38:08 | FromDiscord | <Chronos [She/Her]> In reply to @isofruit "Also don't go raw": Oh yeah I know that for sure |
21:38:12 | FromDiscord | <Elegantbeef> And you have access to all the tooling that exists since you're generating C |
21:38:27 | FromDiscord | <Elegantbeef> another benefit is that it gives you a very readable IR |
21:38:56 | FromDiscord | <Elegantbeef> Not supremely readable, but you can read the C and aside from optimisations know what's going on |
21:39:01 | FromDiscord | <.matrixagent> and also how does java beat nim here wtf↵https://programming-language-benchmarks.vercel.app/nim-vs-java |
21:39:04 | FromDiscord | <Phil> In reply to @Elegantbeef "And you have access": The most important part of that is that it grants nim the ability to run on the most important place on the planet |
21:39:05 | FromDiscord | <Phil> A toaster |
21:39:12 | FromDiscord | <Elegantbeef> Programming language benchmarks a joke |
21:39:19 | FromDiscord | <Elegantbeef> They have a plan↵(@Phil) |
21:39:23 | FromDiscord | <Chronos [She/Her]> In reply to @.matrixagent "i would actually like": Tbf there's wasm2kotlin, and asmble, may wanna look at those, not exactly what you want, but WASM to JVM bytecode is p damn good |
21:39:51 | FromDiscord | <Phil> In reply to @.matrixagent "and also how does": If I compare linear search against binary search or other such jokes, everything can become fascinating. |
21:40:10 | FromDiscord | <.matrixagent> lol |
21:40:41 | FromDiscord | <Elegantbeef> There are simd vs non simd examples for Nim vs. Rust on that website |
21:40:58 | FromDiscord | <Elegantbeef> It's a fucking pointless endeavour |
21:41:11 | FromDiscord | <.matrixagent> so pretty much the benchmarks are rigged |
21:41:20 | FromDiscord | <Phil> sent a long message, see http://ix.io/4Cif |
21:41:35 | FromDiscord | <Elegantbeef> Not rigged, but pointless |
21:41:42 | FromDiscord | <.matrixagent> In reply to @isofruit "I've stopped actually looking": i can swap the allocator in nim> |
21:41:44 | FromDiscord | <.matrixagent> (edit) "nim>" => "nim?" |
21:41:47 | FromDiscord | <Elegantbeef> Yes |
21:42:01 | FromDiscord | <Elegantbeef> It uses a global allocator so it's not like Zig/Odin, but you can replace it globally |
21:42:09 | FromDiscord | <Phil> So basically if you just compile that program with the right flag to use the most insane allocator you just win |
21:42:12 | FromDiscord | <Elegantbeef> https://github.com/Yardanico/mimalloc_nim is an example of how |
21:42:17 | FromDiscord | <Phil> So what's your point then, what have you proven? |
21:42:24 | FromDiscord | <.matrixagent> so i can use TLSF? |
21:42:38 | FromDiscord | <Elegantbeef> Nim's allocator is TLSF inspired |
21:42:38 | FromDiscord | <Elegantbeef> So why would you want to |
21:42:55 | FromDiscord | <.matrixagent> oh alright |
21:43:05 | FromDiscord | <.matrixagent> In reply to @Elegantbeef "So why would you": thought i was some other allocator |
21:43:33 | FromDiscord | <.matrixagent> and also does the nim boehm gc straight up just add the header and use `GC_malloc`? |
21:43:57 | FromDiscord | <Elegantbeef> https://github.com/nim-lang/Nim/blob/devel/lib/system/mm/boehm.nim check for oyurself |
21:44:25 | FromDiscord | <Elegantbeef> https://github.com/nim-lang/Nim/blob/devel/lib/system/alloc.nim nim's alloc is here |
21:44:51 | FromDiscord | <Chronos [She/Her]> My question is why is Go's GC supported? |
21:44:55 | FromDiscord | <Chronos [She/Her]> For Go interop? |
21:45:00 | FromDiscord | <Chronos [She/Her]> Because I can't think of any other reason |
21:45:00 | FromDiscord | <.matrixagent> In reply to @yu.vitaqua.fer.chronos "For Go interop?": yes |
21:45:01 | FromDiscord | <Elegantbeef> That was the point |
21:45:14 | FromDiscord | <Chronos [She/Her]> Does anyone even use Go with Nim? |
21:45:18 | FromDiscord | <Elegantbeef> The idea was seemlessly sharing Go objects across the FFI barrier |
21:45:21 | FromDiscord | <.matrixagent> probably not |
21:45:31 | FromDiscord | <Elegantbeef> I think whoever added Go's GC did but not any longer |
21:45:45 | FromDiscord | <Elegantbeef> Similar thing with Nim's objc backend |
21:46:06 | FromDiscord | <.matrixagent> i think its safe to say nim is as fast as C++ |
21:46:27 | FromDiscord | <Elegantbeef> It's as fast as the programmer |
21:46:33 | FromDiscord | <.matrixagent> did some benchmarks the other day by implementing the same nbody algo in C++ and in nim both had the same performance |
21:46:41 | FromDiscord | <.matrixagent> In reply to @Elegantbeef "It's as fast as": damn didnt know nim was slow |
21:46:53 | FromDiscord | <Elegantbeef> With macros and inline assembly it's really the programmer slowing it down |
21:47:20 | FromDiscord | <.matrixagent> speaking about inlining what are the rules to get my function to be inlinable? |
21:47:21 | FromDiscord | <Phil> Basically nim allows you to be as fast as you're willing to invest time |
21:47:42 | FromDiscord | <Elegantbeef> Annotate it `{.inline.}` and it'll likely be inlined |
21:47:45 | FromDiscord | <Phil> If you want you can carefully craft your algo's to do as little memory moves as possible and very carefully do your de/allocations |
21:47:50 | FromDiscord | <Elegantbeef> It uses C to inline it |
21:47:51 | FromDiscord | <.matrixagent> In reply to @Elegantbeef "Annotate it `{.inline.}` and": that means nothing |
21:48:07 | FromDiscord | <.matrixagent> it just hints to compiler "i think it should be inlined" |
21:48:12 | FromDiscord | <Elegantbeef> I mean if you want to guaranteed inline you use a template |
21:48:13 | FromDiscord | <Phil> But that will require effort as opposed to just chugging down business logic |
21:48:24 | FromDiscord | <Elegantbeef> Generally trusting the compiler and compiling with `-d:lto` suffices |
21:48:42 | FromDiscord | <.matrixagent> damn i can just use `-d:lto` all this time |
21:48:51 | FromDiscord | <Phil> note: only do -d:lto for release builds |
21:48:53 | FromDiscord | <.matrixagent> i was passing it as a C compiler linker flag |
21:49:13 | FromDiscord | <Phil> It's not worth waiting the time the linker takes with its flipping single-threaded process when you're just debugging |
21:49:30 | FromDiscord | <.matrixagent> In reply to @isofruit "note: only do -d:lto": i like to build all of my nim code on my production machine |
21:49:30 | FromDiscord | <Elegantbeef> Well I think `-d:lto` is iffy with clang on mac |
21:49:33 | FromDiscord | <Elegantbeef> Phil it's a bit funny hearing you say "Do not do optimised debug builds" |
21:49:35 | FromDiscord | <.matrixagent> since i can pass march native |
21:49:57 | FromDiscord | <Phil> In reply to @Elegantbeef "Phil it's a bit": What, because I throw all my debug builds into docker containers for more elaborate debugging? |
21:50:17 | FromDiscord | <Elegantbeef> I stopped reading at docker |
21:50:32 | FromDiscord | <.matrixagent> lol |
21:50:50 | FromDiscord | <.matrixagent> i wonder if docker increases latency in an app |
21:50:53 | FromDiscord | <Phil> ~~you stopped reading in general a while ago ;-P~~ |
21:51:05 | FromDiscord | <.matrixagent> since if im running a vps and running docker thats 2 vms |
21:51:08 | FromDiscord | <Phil> for web applications? Not in a manner that matters |
21:51:14 | FromDiscord | <Elegantbeef> I generally just avoid any message that has a blue 'Phil' before it |
21:51:33 | FromDiscord | <.matrixagent> In reply to @isofruit "for web applications? Not": in websockets probably |
21:51:35 | FromDiscord | <Phil> Beef starting beef , it is that time of the night |
21:51:44 | FromDiscord | <.matrixagent> i never use docker anyways i just use `nohup` lol |
21:51:50 | FromDiscord | <Elegantbeef> Oh you know I'm joking, I hope |
21:52:00 | FromDiscord | <Phil> In reply to @Elegantbeef "Oh you know I'm": I am german, what is humour? |
21:52:06 | FromDiscord | <Elegantbeef> I tried docker once but it was such a pain I gave up |
21:52:16 | FromDiscord | <.matrixagent> i wonder how does this even work https://media.discordapp.net/attachments/371759389889003532/1136778590411829379/image.png |
21:52:27 | FromDiscord | <Phil> In reply to @.matrixagent "in websockets probably": Unless your server is acting on a local network you will always fight with network latency of 30-50ms minimum |
21:52:37 | FromDiscord | <Elegantbeef> How does what work? |
21:52:41 | FromDiscord | <.matrixagent> In reply to @isofruit "Unless your server is": acceptable |
21:52:46 | FromDiscord | <.matrixagent> In reply to @Elegantbeef "How does what work?": look at the versions |
21:52:56 | FromDiscord | <.matrixagent> it wont work on my ide but it says its supported |
21:53:01 | FromDiscord | <Phil> In reply to @.matrixagent "acceptable": Mind you a decently fast optimized prologue handler will execute request to response in like 2ms |
21:53:11 | FromDiscord | <Phil> It does not matter how much more effort you put into your server at that point |
21:53:27 | FromDiscord | <Phil> Your network latency is what's eating your response time by 80%+ |
21:53:39 | FromDiscord | <.matrixagent> In reply to @.matrixagent "i wonder how does": oh inteliji 2022 |
21:53:45 | FromDiscord | <.matrixagent> nice abandonded plugin |
21:53:52 | FromDiscord | <Elegantbeef> Just don't do web dev, problem solved |
21:53:59 | FromDiscord | <.matrixagent> +1 |
21:54:00 | FromDiscord | <Phil> It might matter if you have like 100.000 users a day or sth and be the difference between you needing a couple extra threads and gigs of RAM or not |
21:54:10 | FromDiscord | <.matrixagent> In reply to @isofruit "It might matter if": a day? |
21:54:13 | FromDiscord | <.matrixagent> try a second |
21:54:42 | FromDiscord | <.matrixagent> the mummy websocket server im running is handling 200k ish requests a second on regular days |
21:54:44 | FromDiscord | <Phil> In reply to @.matrixagent "try a second": If you have 100.000 active Users (not requests, Users) a second you have different problems |
21:55:03 | FromDiscord | <.matrixagent> yeah |
21:55:09 | FromDiscord | <Elegantbeef> As hard as I try I cannot read that as more than a 100 users |
21:55:16 | FromDiscord | <.matrixagent> i just dont understand the hyper in docker |
21:55:21 | FromDiscord | <.matrixagent> (edit) "hyper" => "hype" |
21:55:25 | FromDiscord | <Phil> In reply to @.matrixagent "i just dont understand": It trivializes setup |
21:55:27 | FromDiscord | <.matrixagent> it solves pretty much nothing |
21:55:40 | FromDiscord | <.matrixagent> In reply to @isofruit "It trivializes setup": because your lazy to run a .sh script to install everything |
21:55:53 | FromDiscord | <Phil> In reply to @.matrixagent "because your lazy to": No, the docker file literally is the .sh script |
21:56:00 | FromDiscord | <.matrixagent> it adds latency tho |
21:56:03 | FromDiscord | <.matrixagent> its a vm |
21:56:06 | FromDiscord | <.matrixagent> inside a vm |
21:56:15 | FromDiscord | <Phil> It adds less than the ms area |
21:56:26 | FromDiscord | <Phil> That is literally not worth talking about unless you're doing fintech |
21:56:36 | FromDiscord | <Elegantbeef> is docker even a VM, isnt it visualised like LXD? |
21:56:46 | FromDiscord | <Elegantbeef> virtualisation\ |
21:57:02 | FromDiscord | <.matrixagent> its a vm |
21:57:06 | FromDiscord | <Phil> It's kind of more a container than a VM so the layer is significantly thinner (otherwise Alpine would be far larger than just a 5MB image) |
21:57:15 | FromDiscord | <.matrixagent> but its still there |
21:57:18 | FromDiscord | <.matrixagent> which i dont like |
21:57:22 | FromDiscord | <Phil> Again |
21:57:29 | FromDiscord | <Phil> You're talking about less than 0.5% optimization |
21:57:37 | FromDiscord | <.matrixagent> In reply to @isofruit "You're talking about less": bro i write C++ |
21:57:39 | FromDiscord | <Phil> In exchange for trivialized deployments after an initial setup |
21:57:44 | FromDiscord | <.matrixagent> 0.5% optimization is everything lol |
21:57:45 | FromDiscord | <Elegantbeef> I'm a simpleton I prefer LXD as it was capable of doing what I wanted |
21:58:07 | FromDiscord | <Phil> In reply to @.matrixagent "0.5% optimization is everything": ... you should be optimizing hot code paths that give you 10% or more, not 0.5%, that's premature optimization |
21:58:18 | FromDiscord | <.matrixagent> premature is the source of all good |
21:58:32 | FromDiscord | <Phil> premature is the source of "I'll smack your PR down until its readable again" |
21:58:34 | FromDiscord | <.matrixagent> if you dont do premature optimization you end up with an app like discord |
21:58:42 | FromDiscord | <.matrixagent> bloated and a memory hog and slow |
21:59:12 | FromDiscord | <.matrixagent> and the state of discord on linux is just a joke |
21:59:30 | FromDiscord | <Elegantbeef> Imagine being named "matrixagent" insulting discord's client but still actively using it when you could be using matrix |
21:59:40 | FromDiscord | <.matrixagent> matrix sucks |
21:59:47 | FromDiscord | <Elegantbeef> mmmk |
21:59:59 | FromDiscord | <.matrixagent> i like the idea but the execution is horrible |
22:00:07 | FromDiscord | <.matrixagent> just add servers man then i'll use matrix |
22:00:11 | FromDiscord | <Phil> In reply to @.matrixagent "if you dont do": That is larger architectural decisions that blemish performance, not a lack of hyper micro optimizations |
22:00:48 | FromDiscord | <Phil> Like, Electron is a freighter, you can throw individual flecks of sand over board all you want that thing will still weigh dozens of tons and be slow as mollasses |
22:01:00 | FromDiscord | <Phil> (edit) "Like, Electron is a freighter, you can throw individual flecks of sand ... over" added "for optimization" |
22:01:06 | FromDiscord | <.matrixagent> i think electron isnt the problem |
22:01:16 | FromDiscord | <.matrixagent> just the discord engineers made it poorly |
22:01:27 | FromDiscord | <.matrixagent> vscode is an electron app and its good since they care about speed |
22:02:29 | FromDiscord | <Phil> vscode is not as overloaded with features as discord, which I think is more why it starts only becoming slow once you add a ton of plugins which would approximate getting to a featureset in size similar to discords |
22:02:42 | FromDiscord | <Phil> And mind you I don't mean overloaded in any positive sense |
22:03:24 | FromDiscord | <Phil> Half the stuff on this thing the app would be just as good or better off without and it wouldn't eat any of our collective CPU cycles to render for naught |
22:03:27 | FromDiscord | <.matrixagent> im running 50+ plugins in vscode and the performance is same as - |
22:03:29 | FromDiscord | <.matrixagent> (edit) "-" => "0" |
22:03:56 | FromDiscord | <.matrixagent> In reply to @isofruit "Half the stuff on": discord was fine couple of years back |
22:04:09 | FromDiscord | <.matrixagent> but they keep adding more garbage to it which is making the performance bad |
22:04:28 | FromDiscord | <Phil> In reply to @.matrixagent "im running 50+ plugins": I'd disagree on that one, having had a vastly different experience |
22:05:18 | FromDiscord | <Phil> It's what caused me to start paying at least a smidge of attention to throw out extensions I don't actually use (anymore) in hopes of hitting one of the ones that eat cycles |
22:05:29 | FromDiscord | <.matrixagent> @elegantbeef and also the offical matrix client is electron |
22:05:40 | FromDiscord | <Elegantbeef> Well 'official' |
22:05:51 | FromDiscord | <.matrixagent> In reply to @isofruit "It's what caused me": depends on what your running |
22:06:00 | FromDiscord | <.matrixagent> all of my extentions are just lsp's |
22:07:00 | FromDiscord | <Phil> I'm actually surprised overall discrod isn't increasing the pressures ever since interest rates started going up |
22:07:10 | FromDiscord | <Phil> (edit) "pressures" => "pressure" |
22:07:20 | FromDiscord | <Phil> (edit) "discrod" => "discord" |
22:07:41 | FromDiscord | <.matrixagent> and also the thing thats keeping me on discord is webhooks |
22:07:47 | FromDiscord | <.matrixagent> i use it for server monitoring |
22:21:11 | FromDiscord | <spotlightkid> The matrix API is pretty easy to work with. I wrote a few custom scripts to send notifications to Matrix rooms (in Python, though). |
22:21:38 | FromDiscord | <spotlightkid> The one matrix client lib I found for Nim seems unmaintained. |
22:22:12 | FromDiscord | <Elegantbeef> Yea, i've been meaning to contribute to it, but I only have so much motivation 😄 |
22:25:15 | FromDiscord | <.matrixagent> In reply to @spotlightkid "The matrix API is": whats the rate limit looking like> |
22:25:18 | FromDiscord | <.matrixagent> (edit) "like>" => "like?" |
22:27:02 | FromDiscord | <.matrixagent> also i wonder what OS @elegantbeef is on |
22:27:06 | FromDiscord | <.matrixagent> probably gentoo |
22:27:13 | FromDiscord | <Elegantbeef> I did make this DSL to make requests easier to write, but.... yea nothing much contributed https://github.com/tandy-1000/matrix-nim-sdk/blob/v1.3/src/matrix/clientserver/clientauth/login.nim |
22:27:13 | FromDiscord | <Elegantbeef> Linux |
22:27:14 | FromDiscord | <Elegantbeef> Endeavour |
22:27:39 | FromDiscord | <.matrixagent> why not...arch? |
22:27:47 | FromDiscord | <.matrixagent> endavour is just arch + installer |
22:27:55 | FromDiscord | <Elegantbeef> Exactly |
22:28:04 | FromDiscord | <.matrixagent> wait until you here about archinstall |
22:28:09 | FromDiscord | <.matrixagent> (edit) "here" => "hear" |
22:28:14 | FromDiscord | <Elegantbeef> I know about it |
22:28:42 | FromDiscord | <.matrixagent> i really dont get the hype about arch |
22:29:00 | FromDiscord | <Elegantbeef> I wanted something more rolling than debian sid |
22:29:09 | FromDiscord | <.matrixagent> but why rolling? |
22:29:14 | FromDiscord | <.matrixagent> because of packages? |
22:29:37 | FromDiscord | <Elegantbeef> Cause I like having programs that are updated without having to manually build them, or fetch an appimager |
22:30:05 | FromDiscord | <.matrixagent> yeah if only linux mint was rolling |
22:30:10 | FromDiscord | <Elegantbeef> I also have grown to like the shear number of accessible packages on the AUR |
22:30:31 | FromDiscord | <.matrixagent> debian and ubuntu by far have the most packages across any distro |
22:30:46 | FromDiscord | <.matrixagent> things like google chrome and steam only build deb packages |
22:32:14 | FromDiscord | <Elegantbeef> That might be the case, but there are way more packages on arch + AUR |
22:32:29 | FromDiscord | <huantian> hey nixpkgs technically has more packages |
22:32:41 | FromDiscord | <Elegantbeef> A vast majority of time I can just install using yay and I get what I want |
22:32:46 | FromDiscord | <.matrixagent> and also arch + nvidia is so slow for me |
22:32:50 | FromDiscord | <.matrixagent> thats why i use linux mint |
22:32:54 | FromDiscord | <spotlightkid> I don't really know. I have my (or rather a friend has his) own Matrix server.↵(@.matrixagent) |
22:33:27 | FromDiscord | <Elegantbeef> Actual federation on matrix, impossible! 😄 |
22:33:36 | FromDiscord | <huantian> wow are the cool kids talking on matrix |
22:33:51 | FromDiscord | <Elegantbeef> They were, now the cool kids a dullard |
22:33:56 | FromDiscord | <Elegantbeef> and a\ |
22:34:14 | FromDiscord | <Elegantbeef> Now who looks like a dullard. Making incorrect sentences |
22:35:45 | FromDiscord | <huantian> yeah I really can't stand all the stale packages on point release systems, and I loved how most packages I wanted were available on the AUR |
22:36:22 | FromDiscord | <Elegantbeef> Yea I do not suggest arch to anyone that wants a stable system, not that I've had any major issues |
22:36:24 | FromDiscord | <spotlightkid> I think federation is the logical evolution of everybody (well, every geek) self-hosting everything, like it was before the rise of the internet giants.↵I don't hope that it will be a mass phenomenon, though. |
22:36:34 | FromDiscord | <huantian> though if you look a bit closely you'll find that not all of the AUR packages are perfect↵like the ones I maintained |
22:36:46 | FromDiscord | <spotlightkid> [Edit](https://discord.com/channels/371759389889003530/371759389889003532/1136789694550650980): I think federation is the logical evolution of everybody (well, every geek) self-hosting everything, like it was before the rise of the internet giants.↵I don't have any hope that it will be a mass phenomenon, though. |
22:36:59 | FromDiscord | <Elegantbeef> It's annoying when something is not updated |
22:37:12 | FromDiscord | <spotlightkid> Plenty of aweful PKGBUILDs on the AUR, yes. |
22:37:17 | FromDiscord | <Elegantbeef> Looking at knossos 😄 |
22:37:39 | FromDiscord | <Elegantbeef> I just wanted to play freespace2, but no it was a ballache |
22:38:06 | FromDiscord | <spotlightkid> I maintain 100+ PKGBUILDs and I had to learn best practices whiel makeing the first 50 or so ;) |
22:38:31 | FromDiscord | <huantian> having written both PKGBUILDs for AUR and derivations for nix, I do like nix better↵even though it's probably harder synatx to get into, it's a lot easier to make reliable packages |
22:38:56 | FromDiscord | <huantian> eg it's harder to forget to include a library in a PKGBUILD's deps because you already had it installed on your system |
22:39:28 | FromDiscord | <Elegantbeef> eg it's easier\? |
22:39:46 | FromDiscord | <spotlightkid> Yeah, thatswhy the Arch folks preach building in a chroot. Not so easy, though, if you're on Manjaro 🤪 |
22:40:24 | FromDiscord | <Elegantbeef> Was going to say it seems like LXD or similar |
22:40:28 | FromDiscord | <huantian> Yeah that probably makes more sense, I was going for “it’s harder to make the same mistake” |
22:41:42 | FromDiscord | <spotlightkid> I think PKGBUILDs are great, exactly because they constitute a low barrier of entry. Even if it leads to some awful packaging attempty in teh AUR. |
22:41:50 | FromDiscord | <leetnewb> lxd got forked - https://github.com/cyphar/incus |
22:42:06 | FromDiscord | <spotlightkid> And I can point people to them if I want to show how a project can be built in practice. |
22:42:36 | FromDiscord | <spotlightkid> [Edit](https://discord.com/channels/371759389889003530/371759389889003532/1136791024946135163): I think PKGBUILDs are great, exactly because they constitute a low barrier of entry. Even if it leads to some awful packaging attempts in the AUR. |
22:45:37 | FromDiscord | <Elegantbeef> Sure leet\:↵> For production use, you are likely better off sticking with Canonical's LXD for the time being until stable release of Incus exist. |
22:46:12 | * | ajunior quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
22:46:24 | FromDiscord | <Elegantbeef> I don't even use any virtualisation or containerisation myself, so... I could not presently care much about any of these solutions |
22:46:53 | * | jmdaemon quit (Quit: ZNC 1.8.2 - https://znc.in) |
22:46:59 | FromDiscord | <Elegantbeef> The most I've touched this stuff is when I was unsuccessful in attempting to build postmarketos for my phone |
22:48:59 | FromDiscord | <leetnewb> It's a nice option for splitting up services on a vps without learning docker |
22:49:24 | FromDiscord | <Elegantbeef> Right, I dont have a VPS 😄 |
22:49:55 | FromDiscord | <.matrixagent> In reply to @leetnewb "It's a nice option": just use nohup |
22:50:21 | FromDiscord | <leetnewb> That is much less fun |
22:50:49 | FromDiscord | <leetnewb> also why nohup vs a service file? |
22:51:29 | FromDiscord | <.matrixagent> also is this the extention you guys use https://media.discordapp.net/attachments/371759389889003532/1136793491503071292/image.png |
22:51:33 | FromDiscord | <.matrixagent> or the first one? |
22:51:40 | FromDiscord | <Elegantbeef> saem's is better |
22:51:43 | FromDiscord | <.matrixagent> In reply to @leetnewb "also why nohup vs": dont mean |
22:51:53 | FromDiscord | <.matrixagent> (edit) "In reply to @leetnewb "also why nohup vs": ... dontunderstand" added "i" | "mean" => "understand" |
22:52:14 | FromDiscord | <.matrixagent> In reply to @Elegantbeef "saem's is better": alright |
22:52:43 | FromDiscord | <leetnewb> In reply to @.matrixagent "i dont understand": containers provide isolation. what does nohup do other than launching processes that are independent from the current sessoin? |
22:52:48 | FromDiscord | <leetnewb> (edit) "sessoin?" => "session?" |
22:53:09 | FromDiscord | <.matrixagent> In reply to @leetnewb "containers provide isolation. what": nothing |
22:53:16 | FromDiscord | <.matrixagent> why do i want anything to be isolated anyways |
22:53:29 | FromDiscord | <.matrixagent> i just use 1 service per vps |
22:54:27 | FromDiscord | <leetnewb> that works too |
22:56:07 | * | ajunior joined #nim |
22:57:22 | FromDiscord | <etra> since orc (and iirc move semantics are better in 2.0?) is the default gc now, i wonder if a csp async + multithread runtime would be possible in the future, ala go / crystal |
22:57:32 | FromDiscord | <etra> (edit) "since orc (and iirc move semantics are better ... in" added "figured out" |
22:58:10 | FromDiscord | <Elegantbeef> https://github.com/nim-works/cps is akin to what you're asking about |
22:58:31 | FromDiscord | <Elegantbeef> Maybe, maybe not, I don't know |
22:59:03 | FromDiscord | <treeform> In reply to @enthus1ast "ugh nimble develop is": I just run into nimble (that ships with Nim 2.0) is broken as well. I swtiched to atlas and everything works. |
22:59:57 | FromDiscord | <.matrixagent> In reply to @treeform "I just run into": did you report in github? |
23:00:02 | FromDiscord | <Elegantbeef> You likely need to delete your `.nimble/pkgs` `.nimble/pkgs2` and `.nimble/links` |
23:00:26 | FromDiscord | <treeform> In reply to @.matrixagent "did you report in": I can't figure this new nimble out? It might be intended behavior? |
23:00:50 | FromDiscord | <treeform> I am not sure if its me that is broken or if its nimble that is broken. But altas appears to work? |
23:01:19 | FromDiscord | <treeform> From the docs I can't seem to figure out how the new nimble is supposed to work with regards to `nimble develop` |
23:01:55 | FromDiscord | <treeform> In reply to @Elegantbeef "You likely need to": I have deleted `.nimble/pkgs` and I seem to have a new set of `.nimble/links` |
23:02:00 | FromDiscord | <treeform> still nothing |
23:02:10 | FromDiscord | <Elegantbeef> you're supposed to do `nimble develop package` and it'll clone it local to the project afaik |
23:03:04 | FromDiscord | <treeform> I don't want that? I want `nimble develop` behavior. |
23:03:20 | FromDiscord | <treeform> were it just left my folders alone and linked them |
23:03:42 | FromDiscord | <Elegantbeef> that's supposed tobe `nimble develop --global` which sorta works, but it's hit or miss and I cannot ever reason why |
23:03:50 | FromDiscord | <treeform> I think the new thing is `nimble develop -g` and it creates the `.nimble/links` but it does not do work form there. |
23:05:35 | * | jmd_ joined #nim |
23:06:05 | FromDiscord | <Elegantbeef> Comically enough I somehow have it linking my repos without any link files now that I think about it |
23:07:34 | FromDiscord | <treeform> I am just confused by this new nimble |
23:07:57 | FromDiscord | <treeform> Nimble for the most part was working |
23:07:57 | FromDiscord | <Elegantbeef> It's what happens when you let status write software without considering existent users |
23:08:26 | FromDiscord | <treeform> Why change if it was not badly broken? |
23:09:12 | FromDiscord | <Elegantbeef> Cause it caused them internal issues where someone was using local code and pushed their code supposedly |
23:09:32 | FromDiscord | <Elegantbeef> https://github.com/nim-lang/nimble/issues/1124 2 weeks and no response |
23:10:11 | FromDiscord | <treeform> Man the first sence is 100% how I feel:↵> Can you explain (and possibly show an example workflow) how to actually use↵> the new nimble develop and the old nimble develop -g? |
23:10:42 | FromDiscord | <treeform> How is it supposed to work? How do I make it work? |
23:11:07 | FromDiscord | <Elegantbeef> Status doesnt use `nimble develop -g` so they wouldnt run into this issue 😄 |
23:11:29 | FromDiscord | <treeform> > It seems the (actual) old behavior is either broken, or not supported any more. |
23:11:45 | FromDiscord | <treeform> His conclusion feels bad? |
23:11:54 | FromDiscord | <treeform> But I just got setup with atlas? So who knows... |
23:11:54 | FromDiscord | <Elegantbeef> I concur |
23:12:44 | FromDiscord | <Elegantbeef> https://github.com/nim-lang/nimble/issues/948 if you havent seen |
23:15:59 | FromDiscord | <Elegantbeef> Anyway atlas is likely more intuitive to use and even faster to compile |
23:16:54 | FromDiscord | <Elegantbeef> Since it's operation is to just generate a config file, you just use `nim c` instead of `nimble build` so skips the entire nimble parsing and fetching part |
23:17:12 | FromDiscord | <treeform> I never used `nimble build` |
23:17:20 | FromDiscord | <treeform> So yeah atlas appears to be winnin here. |
23:17:29 | FromDiscord | <treeform> (edit) "winnin" => "winnig" |
23:17:58 | FromDiscord | <Elegantbeef> I'd use `nimble build` more often if it wasnt for the slow down, it's nice to have the proper libraries used |
23:18:53 | FromDiscord | <Elegantbeef> I've had a few issues with reproducible builds due to using `nim c` with multiple versions of a package installed |
23:22:28 | FromDiscord | <spotlightkid> (old) `nimble develop` without proper project environment isolation seems like a recipe for great confusion to me. Too easy to forget you injected an arbitrary git version of a lib into your (user)global nim environment. |
23:23:31 | FromDiscord | <Elegantbeef> Eh it could, but it was generally fine in my experience |
23:23:38 | FromDiscord | <Elegantbeef> But i'm just a lowly solo game dev |
23:33:53 | * | jmd_ quit (Ping timeout: 246 seconds) |
23:43:32 | * | jmd_ joined #nim |
23:52:11 | * | lumo_e joined #nim |
23:52:50 | FromDiscord | <Festive> How can I use anonymous files in nim |