<< 03-08-2023 >>

00:12:23FromDiscord<spotlightkid> Apropos, you do know about upx? https://github.com/upx/upx↵(@Festive)
00:18:31FromDiscord<Festive> In reply to @spotlightkid "Apropos, you do know": I do know about upx
00:18:42FromDiscord<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:01FromDiscord<spotlightkid> you can use it on top
01:34:30*ajunior joined #nim
02:35:36FromDiscord<.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:46FromDiscord<.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:30r4venayuda!
03:31:27r4venalguien 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:40FromDiscord<Elegantbeef> Translate says that's spanish, english is the language of communication here
03:40:10*Guest23 quit (Quit: Client closed)
03:42:20FromDiscord<odexine> If you can speak English please do, if not then maybe another Spanish speaker can help hopefully
03:50:47FromDiscord<Elegantbeef> Hmph there is not really a good way of doing a dynamic library without a bunch of repetition
03:51:45FromDiscord<.kanaxa> https://github.com/nim-lang/atlas
03:51:50FromDiscord<Elegantbeef> Wanting a nim procedure named `loadScript` but to be exposed in FFI as `nimscripter_load_script` requires manually annotating
03:51:57FromDiscord<.kanaxa> In reply to @.kanaxa "https://github.com/nim-lang/atlas": "...It manages an isolated workspace that contains projects and dependencies."
03:52:04FromDiscord<.kanaxa> Isolated workspace, like a virtual environment?
03:52:13FromDiscord<.kanaxa> I haven't tested it out yet, since I'm still with nimble
03:52:16FromDiscord<Elegantbeef> Yes
03:52:18FromDiscord<.kanaxa> Any key differences with Atlas?
03:52:32FromDiscord<Elegantbeef> Atlas is simpler
03:52:52FromDiscord<Elegantbeef> Atlas 'accidentally' generates a lock file due to how it works
03:53:04FromDiscord<Elegantbeef> Nimble has a lock file but it's opt in
03:53:23FromDiscord<.kanaxa> Will nimble be deprecated eventually?
03:53:24FromDiscord<Elegantbeef> Araq has said something along the lines of "Atlas will handle 90% of what you need"
03:53:35FromDiscord<Elegantbeef> No clue, atlas isnt a package manager
03:53:43FromDiscord<.kanaxa> It says that it's a "package cloner"
03:54:13FromDiscord<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:27FromDiscord<Elegantbeef> Atlas is likely better software due to it's limited scope
03:54:29FromDiscord<.kanaxa> In reply to @Elegantbeef "No clue, atlas isnt": True, but we do have `nimble init`
03:54:34FromDiscord<Elegantbeef> Less likely to be buggy and still usable
03:54:41FromDiscord<.kanaxa> In reply to @.kanaxa "True, but we do": Which seems to be what atlas is going for
03:54:47FromDiscord<.kanaxa> In reply to @Elegantbeef "Atlas is likely better": I see
03:56:02FromDiscord<Elegantbeef> https://github.com/nim-lang/atlas/blob/master/doc/atlas.md if you didnt see it
03:57:26FromDiscord<.kanaxa> Didn't see this one, thank you!
04:00:30FromDiscord<.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:40FromDiscord<.kanaxa> But it has to be updated a fair bit
04:01:12FromDiscord<.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:18FromDiscord<.kanaxa> More so for beginner programmers
04:01:34FromDiscord<.kanaxa> (edit) "programmers" => "programmers, I think any beginner reading that Chapter would be completely lost"
04:01:44FromDiscord<.kanaxa> (edit) "Chapter" => "chapter so early on in their careers"
04:56:43FromDiscord<Phil> Honestly particularly async in nim pulls you in for a somewhat wild ride when you're used to async in JS
04:56:50FromDiscord<Phil> Since in nim it's somewhat of a different beast
04:58:53FromDiscord<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:14FromDiscord<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:22FromDiscord<Elegantbeef> https://github.com/nim-lang/atlas/blob/master/src/parse_requires.nim
05:00:56FromDiscord<Elegantbeef> It uses PNodes so it doesnt parse them as much as evaluate them
05:01:31FromDiscord<Phil> Hmm parses incompletely then, author, description, license and "bin" are missing
05:02:07FromDiscord<Phil> Given how compact that module is, that seems pretty ripp-able though
05:03:04FromDiscord<Elegantbeef> I mean you could just import it then call what you need
05:03:08FromDiscord<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:48FromDiscord<Elegantbeef> As nice as nimscript is for building stuff, it's sorta shame that nimble files are nimscript files
05:04:08FromDiscord<Elegantbeef> Atlas is much more sane in that regard, it has tasks inside a 'plugins' folder
05:04:33FromDiscord<Phil> I mean, can those still be executed via `<whatever> <taskname>`?
05:05:06FromDiscord<Elegantbeef> `atlas plugin` evaluates them
05:05:38FromDiscord<Phil> In that context evaluates means "execute"? Or does it mean "validates that they are valid and can be executed"?
05:06:10FromDiscord<Elegantbeef> https://github.com/nim-lang/atlas/blob/master/doc/atlas.md#plugins
05:06:39FromDiscord<Elegantbeef> I was wrong it seems
05:07:42FromDiscord<Elegantbeef> Atlas doesnt do any invoking you'd need to make your own `.nims` file to make tasks
05:10:10FromDiscord<Phil> Aaaaaand that lost me. Nimble tasks are a pretty singificant part of my workflow
05:10:42FromDiscord<Phil> Wait, you sure it can't execute any? Why are they read into the nimbleFileInfo type?
05:10:47FromDiscord<Elegantbeef> It's literally just `touch config.nims` then `task doStuff, "bleh": bleh`
05:11:12FromDiscord<Elegantbeef> then you can do `nim dostuff`
05:12:05FromDiscord<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:55FromDiscord<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:17FromDiscord<gamedroit> sent a long message, see http://ix.io/4Cd8
07:16:17*casaca joined #nim
07:16:37FromDiscord<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:53FromDiscord<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:07FromDiscord<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:24FromDiscord<_gumbercules> Hmm... how to construct an identifier inside of a template when the suffix starts with an underscore?
08:09:59FromDiscord<_gumbercules> sent a code paste, see https://play.nim-lang.org/#ix=
08:10:10FromDiscord<_gumbercules> (edit)
08:10:13FromDiscord<Phil> Is there a reason that should work?↵I thought identifier with `_` suffix were illegal in general
08:10:22FromDiscord<Elegantbeef> `My_foo_suffix`
08:10:25FromDiscord<Elegantbeef> Might work
08:10:51FromDiscord<Phil> Wait, I was thinking prefix, not suffix, I'm dumb
08:10:55FromDiscord<_gumbercules> yeah but what if I just want - Myfoo_suffix`
08:10:57FromDiscord<_gumbercules> (edit) "Myfoo_suffix`" => "Myfoo_suffix"
08:11:05FromDiscord<_gumbercules> seems impossible
08:11:18FromDiscord<Elegantbeef> You need a macro here
08:11:27FromDiscord<_gumbercules> seems like a bug
08:11:37FromDiscord<_gumbercules> or at least an oversight
08:11:38FromDiscord<Phil> wouldn't you need to use `ident` in a macro somewhere?
08:12:00FromDiscord<_gumbercules> nah - the problem is that Nim doesn't allow identifiers to start with `_`
08:12:11FromDiscord<Phil> Wait, so you do want a _ prefix
08:12:19FromDiscord<_gumbercules> not really
08:12:27FromDiscord<_gumbercules> it's somewhat difficult to explain
08:12:48FromDiscord<_gumbercules> I'm trying to pass a symbol into a proc and from that symbol construct an identifier
08:12:51FromDiscord<_gumbercules> normall you can do this like so:
08:12:58FromDiscord<Elegantbeef> Accquote means each part needs to be a valid nim ident when used this way
08:13:25FromDiscord<_gumbercules> sent a code paste, see https://play.nim-lang.org/#ix=
08:13:43FromDiscord<_gumbercules> if I called `foo(blah)`
08:13:51FromDiscord<_gumbercules> this would construct the identifier `Myblahblah`
08:14:21FromDiscord<Elegantbeef> sent a code paste, see https://paste.rs/gTKLx
08:14:45FromDiscord<_gumbercules> sent a code paste, see https://play.nim-lang.org/#ix=4Cdq
08:14:57FromDiscord<_gumbercules> I understand why it doesn't work
08:15:23FromDiscord<Elegantbeef> Accquoting is not a really well thoughtout feature, so it is what it is
08:15:40FromDiscord<_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:00FromDiscord<Elegantbeef> Each component part of an accquote has to be a valid ident
08:16:07FromDiscord<Elegantbeef> So it's not really lexically stropped
08:16:07FromDiscord<_gumbercules> I get it
08:16:13FromDiscord<_gumbercules> Yeah
08:16:18FromDiscord<Elegantbeef> PRs welcome 😛
08:16:24FromDiscord<_gumbercules> okay dom 😛
08:16:34FromDiscord<_gumbercules> gd I used to hate that shit lol
08:16:43FromDiscord<Elegantbeef> Hey don't call me that in public 😛
08:16:46FromDiscord<Phil> Sometimes specific macros seem obvious but aren't
08:16:47FromDiscord<_gumbercules> lol
08:16:53FromDiscord<Phil> I mean, I was also surprised why `obj.get("fieldNameAsStaticString")` was not a thing
08:17:21FromDiscord<_gumbercules> well - theoretically this could work, the compiler would just have to get smarter
08:17:25FromDiscord<_gumbercules> but is it worth it? meh
08:17:28FromDiscord<Elegantbeef> Well that's cause that's dumb phil
08:17:41FromDiscord<Elegantbeef> If you have the static string just make an dot expr 😄
08:17:57FromDiscord<Elegantbeef> obj.makeIdent("bleh")\` 😄
08:18:15FromDiscord<Elegantbeef> that doesnt work now that I think about it
08:19:59FromDiscord<Elegantbeef> Personally I'd do the dumb thing and make a procedure for that phil, no clue what you actually did
08:20:10FromDiscord<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:21FromDiscord<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:43FromDiscord<Phil> Simply because you typically pair those with .fields iterators going over a static dummy type instance somewhere
08:21:19FromDiscord<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:57FromDiscord<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:23FromDiscord<Phil> (edit) "getField," => "getField (for object instances and types),"
08:22:33FromDiscord<Phil> (edit) removed "object" | "types)," => "typedescs),"
08:22:54FromDiscord<Phil> Oh, `hasField` as well of course
08:23:23FromDiscord<Phil> Though only getField and the for-loop-unroll thing are actually macros, the rest are templates or generic procs
08:25:26FromDiscord<Phil> I might as well start creating a macroutils package or sth
08:25:50FromDiscord<Phil> Then again, there are dozen or so already out there
08:26:34FromDiscord<Elegantbeef> How many of those are macros?
08:26:44FromDiscord<Phil> 2
08:27:06FromDiscord<Phil> I stand corrected, the "unroll-For-Loop" thing is a template that defines a macro
08:27:17FromDiscord<Phil> (edit) "I stand corrected, the "unroll-For-Loop" thing is a template that defines ... a" added "and uses"
08:27:22FromDiscord<Elegantbeef> Oh you're actually using that
08:27:22FromDiscord<Phil> So still kind of 2?
08:27:36FromDiscord<Phil> I use mratsims variant IIRC
08:28:58FromDiscord<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:32FromDiscord<Elegantbeef> Unless you need to support object variants all of those but the unroll can be done in a procedure 😄
08:31:14FromDiscord<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:07FromDiscord<Elegantbeef> I have been meaning to add a `unroll` for loop macro to slicerator
08:32:26FromDiscord<Elegantbeef> that way one can just do the good ol' `for x in unroll ....:`
09:09:06NimEventerNew 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:23FromDiscord<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:42FromDiscord<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:19FromDiscord<arkanoid> wow, surprisingly, trying the same search in Matrix fails server side
10:00:46FromDiscord<arkanoid> it does work with telegram
10:04:46FromDiscord<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:56FromDiscord<.kanaxa> In reply to @_gumbercules "okay dom 😛": Wait, Elegantbeef is Dominik?
10:22:01FromDiscord<_gumbercules> no no
10:22:40FromDiscord<_gumbercules> Dom had a habit of replying to anything that needed doing with a very cheeky "PRs are wecome :)"
10:22:53FromDiscord<.kanaxa> Ah, haha
10:23:02FromDiscord<.kanaxa> Character impersonation
10:23:03FromDiscord<_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:15FromDiscord<.kanaxa> I thought he'd left
10:23:20FromDiscord<.kanaxa> (edit) "I thought he'd ... left" added "already"
10:23:24FromDiscord<.kanaxa> That's why
10:23:42FromDiscord<_gumbercules> yeah - he has
10:23:52FromDiscord<.kanaxa> So he's no longer working with Nim code at all?
10:23:54FromDiscord<.kanaxa> Or just the community
10:24:00FromDiscord<leetnewb> right
10:24:10FromDiscord<_gumbercules> I have no idea - I doubt he's using Nim
10:24:35FromDiscord<.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:53FromDiscord<.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:04FromDiscord<.kanaxa> I just stick with the best Hacker News comments these days for keywords, they're good enough to keep updated by
10:25:12FromDiscord<leetnewb> It would be nice if the nimble.directory site exposed a feed
10:25:32FromDiscord<.kanaxa> In reply to @_gumbercules "I have no idea": Aww, that's a sad development
10:25:37FromDiscord<Phil> I really should learn to use RSS feeds
10:25:43FromDiscord<_gumbercules> In reply to @.kanaxa "Aww, that's a sad": ehhhhh
10:25:58FromDiscord<_gumbercules> I suppose it depends on your perspective re: Dom
10:26:07FromDiscord<_gumbercules> I'm not losing sleep over it, that's for sure
10:26:18FromDiscord<.kanaxa> Yeah, nothing personal, just sad in the sense that he's a book author for Nim and stuff
10:27:23FromDiscord<.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:51FromDiscord<.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:58FromDiscord<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:42FromDiscord<.kanaxa> (edit) "Right now the stuff on the internet ... is" added "for Nim"
10:36:47*ntat quit (Quit: leaving)
10:38:52FromDiscord<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:44FromDiscord<arkanoid> You're missing the book from Dr. Salewski\: https://nimprogrammingbook.com/↵(@.kanaxa)
10:53:39FromDiscord<.kanaxa> I was just recommended that book yesterday! I like it
10:53:42FromDiscord<.kanaxa> Will be going through it as well
10:55:36FromDiscord<.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:50FromDiscord<.kanaxa> (edit) "I've been wondering: what's the main difference between this ... DiscordNim" added "Nim" | "NimDiscord and the ... forum?" added "Nim"
10:56:30FromDiscord<Andreas> well, the forum is 'persistence' and AFAIK can be searched easier..
10:57:08FromDiscord<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:19FromDiscord<Andreas> (edit) "'persistence'" => "'persistencent'"
10:57:35FromDiscord<leetnewb> The aggregated chat rooms are much higher volume
10:57:41FromDiscord<Andreas> (edit) "'persistencent'" => "'persistent'"
10:59:04*koltrast_ joined #nim
10:59:30FromDiscord<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:46FromDiscord<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:48FromDiscord<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:58FromDiscord<Phil> (edit) "seq" => "seq, the forum was pretty much my saviour there"
11:02:00FromDiscord<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:00FromDiscord<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:01FromDiscord<Andreas> (edit) "FOrum" => "Forum" | "Forum? ... " added "Esp. trying to retrieve consistent discussions i find hard.."
11:03:25FromDiscord<Phil> For posts made in the last 3 months: Pretty decent chance I can find the post still
11:03:38FromDiscord<Phil> For posts made half a year ago on here: I give it a 50:50
11:03:51*ntat joined #nim
11:04:09FromDiscord<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:52FromDiscord<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:56FromDiscord<arkanoid> I find the tendency to keep most of the community on chats instead of stackoverflow/forum is a big downside
11:07:04FromDiscord<Andreas> (edit) "guranteed" => "guaranteed"
11:07:11FromDiscord<Phil> I find it understandable though because the feedback cycle is measured in minutes typically, not days.
11:07:23FromDiscord<Phil> (edit) "minutes" => "minutes/seconds"
11:08:04FromDiscord<arkanoid> but the persistence of information is lost in hours
11:08:21FromDiscord<arkanoid> and not separated in topics
11:08:27FromDiscord<Phil> Yeah but a lot of times the questions you're asking aren't really worth persisting
11:08:39FromDiscord<arkanoid> true
11:08:49FromDiscord<Phil> you as in you generally.↵A lot of the discussions I fire up here aren't worth being googleable
11:09:21FromDiscord<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:46FromDiscord<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:23FromDiscord<Andreas> some better means of integrating valuable chat-threads, related playground-code within the forum would be nice..
11:13:42FromDiscord<Andreas> which would require some sort of API for discord/matrix..
11:27:38FromDiscord<System64 ~ Flandre Scarlet> In Nim, is it possible to do something like C#'s properties?
11:29:18FromDiscord<System64 ~ Flandre Scarlet> like↵var aPalette = myObject.Palette↵and↵myObject.Palette = anotherPalette
11:30:32NimEventerNew thread by krakengore: Problems compiling objc code including <UIKit/UIKit.h> on osx, see https://forum.nim-lang.org/t/10371
11:30:32FromDiscord<System64 ~ Flandre Scarlet> sent a code paste, see https://play.nim-lang.org/#ix=4Cem
11:33:50FromDiscord<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:58FromDiscord<ratogbm> (edit) "What, can" => "Can"
11:34:42FromDiscord<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:38FromDiscord<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:52FromDiscord<ieltan> sent a code paste, see https://play.nim-lang.org/#ix=4Cer
11:36:36FromDiscord<ieltan> (edit) "https://play.nim-lang.org/#ix=4Cer" => "https://play.nim-lang.org/#ix=4Ces"
11:38:11FromDiscord<System64 ~ Flandre Scarlet> Oh wait↵Seems Nim allows that
11:39:19FromDiscord<System64 ~ Flandre Scarlet> sent a code paste, see https://play.nim-lang.org/#ix=4Ceu
11:39:48FromDiscord<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:22FromDiscord<ieltan> sent a code paste, see https://play.nim-lang.org/#ix=4Cev
11:40:38FromDiscord<ratogbm> In reply to @ieltan "Nim has style-insensitivity, `hello_world`": tnks
11:40:42FromDiscord<System64 ~ Flandre Scarlet> In reply to @ieltan "this is syntax to": Oh neat! So you can mimic C#'s properties!
11:40:59FromDiscord<System64 ~ Flandre Scarlet> so you can create fake fields
11:41:23FromDiscord<ieltan> C# properties means nothing to me since I don't know what it means 😅
11:41:51FromDiscord<ieltan> Don't know what fake fields are either
11:42:39FromDiscord<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:15arkanoidwhat'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:54arkanoidWith python I'd do "from pathlib import Path" "Path("/home/arkanoid/foo")"
11:45:44FromDiscord<ieltan> Ok, I've googled what C# properties are
11:47:43FromDiscord<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:32FromDiscord<ieltan> In this case you don't need custom assignment, its a more advanced feature
11:51:12FromDiscord<System64 ~ Flandre Scarlet> sent a code paste, see https://play.nim-lang.org/#ix=4Cey
11:58:18FromDiscord<ieltan> sent a code paste, see https://play.nim-lang.org/#ix=4CeA
11:58:39*jjido joined #nim
12:00:24FromDiscord<ieltan> sent a code paste, see https://paste.rs/JmOjS
12:00:39FromDiscord<ieltan> (edit) "https://play.nim-lang.org/#ix=4CeE" => "https://play.nim-lang.org/#ix=4CeD"
12:01:33FromDiscord<ieltan> Obviously adapt it to your code
12:02:23FromDiscord<System64 ~ Flandre Scarlet> Oh alright
12:03:34FromDiscord<System64 ~ Flandre Scarlet> sent a code paste, see https://play.nim-lang.org/#ix=4CeG
12:08:10FromDiscord<ieltan> Nope since you're too low level, what you can do is make it more high level
12:08:52FromDiscord<System64 ~ Flandre Scarlet> ideally, I want to do something like↵bitmap[x, y] = myColor
12:09:17FromDiscord<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:45FromDiscord<System64 ~ Flandre Scarlet> the getDataImpl is private↵the one I use is getData
12:09:55FromDiscord<ieltan> In reply to @sys64 "ideally, I want to": Yup, you can just define `[]=`
12:10:10FromDiscord<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:39FromDiscord<ieltan> sent a code paste, see https://play.nim-lang.org/#ix=4CeM
12:21:17FromDiscord<ieltan> sent a code paste, see https://play.nim-lang.org/#ix=4CeO
12:21:41FromDiscord<System64 ~ Flandre Scarlet> and what is the 0 for?
12:23:55FromDiscord<ieltan> sent a code paste, see https://play.nim-lang.org/#ix=4CeU
12:24:33FromDiscord<ieltan> In reply to @sys64 "and what is the": the index of the UncheckedArray
12:25:32FromDiscord<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:48FromDiscord<System64 ~ Flandre Scarlet> Oh alright! Thanks!
12:26:40FromDiscord<ieltan> sent a code paste, see https://play.nim-lang.org/#ix=4CeV
12:26:56FromDiscord<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:36FromDiscord<System64 ~ Flandre Scarlet> sent a code paste, see https://play.nim-lang.org/#ix=4CeW
12:38:51FromDiscord<ieltan> In reply to @ieltan "So this would be": @System64 ~ Flandre Scarlet edited this message since it was incorrect code
12:40:08FromDiscord<System64 ~ Flandre Scarlet> Oh alright
13:01:17FromDiscord<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:15FromDiscord<ieltan> For TUIs I would really like to have something like this for Nim↵https://github.com/charmbracelet/bubbletea
13:05:44FromDiscord<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:20FromDiscord<Chronos [She/Her]> sent a code paste, see https://play.nim-lang.org/#ix=4Cf5
13:08:26FromDiscord<Chronos [She/Her]> Stupid idea but it would be kinda neat
13:09:06FromDiscord<Chronos [She/Her]> In reply to @ieltan "For TUIs I would": Definitely looks interesting
13:12:44FromDiscord<ratogbm> How can I check if a variable has been assigned anything or not?
13:15:14FromDiscord<ratogbm> sent a code paste, see https://play.nim-lang.org/#ix=4Cf7
13:17:11FromDiscord<ratogbm> (edit) "https://play.nim-lang.org/#ix=4Cf7" => "https://play.nim-lang.org/#ix=4Cf8"
13:18:03FromDiscord<ratogbm> It's `isNil()` right?
13:37:46FromDiscord<.kanaxa> Currently reading the Jester tutorial in Nim in Action
13:37:58FromDiscord<.kanaxa> Is Jester the most widely used framework right now for Nim?
13:38:12FromDiscord<.kanaxa> Or are there more recent popular and competing alternatives
13:38:23FromDiscord<.kanaxa> I can see there are some, but I'm not sure which one is the most popular right now
13:38:34FromDiscord<ieltan> I think this would be Karax but I'm not sure
13:38:42FromDiscord<.kanaxa> The book was published in 2017, that was 6 years ago, a lot has changed
13:39:13FromDiscord<ieltan> https://github.com/karaxnim/karax
13:40:15FromDiscord<ieltan> If I'm not senile, this is the framework that Nitter use
13:45:04FromDiscord<ratogbm> `list.delete(len(list)-1)` or is there a better way?
13:48:04*ajunior joined #nim
13:58:21FromDiscord<leetnewb> In reply to @arkanoid "agree! or at least": Looks like it does - https://nimble.directory/packages.xml
14:01:55FromDiscord<onekrissh> https://discord.gg/fRQsFa5u↵<a:FPS_vibe:1112990361233670174> <a:FPS_vibe:1105950639768477798>
14:04:29*lucasta joined #nim
14:06:56FromDiscord<ratogbm> In reply to @onekrissh "https://discord.gg/fRQsFa5u <a:FPS_vibe:11129903612": hacked?
14:07:20FromDiscord<ratogbm> In reply to @onekrissh "https://discord.gg/fRQsFa5u <a:FPS_vibe:11129903612": <@&371760044473319454>
14:07:33FromDiscord<ratogbm> (edit) "In reply to @onekrissh "https://discord.gg/fRQsFa5u <a:FPS_vibe:11129903612": <@&371760044473319454> ... " added "Spammer"
14:07:45FromDiscord<ratogbm> (edit) "Spammer" => "Spammer, joined 1 minute ago"
14:09:05FromDiscord<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:25FromDiscord<Phil> @onekrissh Explicit first warning, this is a channel to discuss nim coding, not to promote discord servers
14:11:44FromDiscord<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:02FromDiscord<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:05FromDiscord<ratogbm> In reply to @auxym "So the nim v2": I was complaining earlier
14:12:28FromDiscord<Phil> It's also the case that prologue has explicit middleware support and better docs including docs to deploy such an application.
14:12:52FromDiscord<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:59FromDiscord<Phil> (edit) "framework" => "framework/server"
14:13:19FromDiscord<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:29FromDiscord<Chronos [She/Her]> Anyone know if there's a better way to use Nim on termux rather than relying on the repos?
14:25:32FromDiscord<.kanaxa> In reply to @isofruit "Yes-ish ? In general": I see, thank you!
14:25:44FromDiscord<.kanaxa> I really would love it if there were a framework with the sort of documentation consistency like Django's
14:26:06FromDiscord<.kanaxa> I prioritize documentation over performance as I'm not doing anything that needs to be crazy scalable
14:27:04FromDiscord<leetnewb> Not exactly comparable, but this project had some ambitions: https://github.com/jfilby/Nexus
14:46:33FromDiscord<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:27FromDiscord<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:46FromDiscord<Phil> (edit) "http://ix.io/4CfC" => "http://ix.io/4CfD"
14:50:31FromDiscord<Phil> There are other choices for ORMs of course, Gatabase for example, I just liked norm since I used sqlite
14:51:21FromDiscord<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:03FromDiscord<.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:52FromDiscord<Phil> Ah check.↵I think that is the kind of quality work I'd start investing in once money is involved
14:54:56FromDiscord<.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:00FromDiscord<Phil> That or some tooling that is trivial
14:55:04FromDiscord<Phil> (edit) "is" => "makes it"
14:55:30FromDiscord<Phil> Like, that is effort
14:55:32FromDiscord<.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:45FromDiscord<Phil> And that is coming from somebody who has basically all their packages highly documented
14:56:16FromDiscord<.kanaxa> In reply to @isofruit "Like, that is **effort**": Agreed, definitely
14:57:09FromDiscord<.kanaxa> I'm definitely looking into Norm as a potential counterparty in the absence of Django's ORM or SQLAlchemy
14:58:06FromDiscord<.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:44FromDiscord<Phil> In reply to @.kanaxa "I can write raw": Personally I want to write raw SQL, but only for the complex stuff
14:58:49FromDiscord<Phil> For simple queries give me procs
14:58:55FromDiscord<.kanaxa> Yeah
15:00:03FromDiscord<.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:21FromDiscord<.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:23FromDiscord<Phil> Welcome to the jungle, literally done the same
15:00:43FromDiscord<Phil> Migrated a Django application over to Prologue to see how fast I could make requests
15:02:57FromDiscord<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:26FromDiscord<Phil> I ended up creating a signalling system myself ~~with blackjack etc.~~
15:03:49FromDiscord<.kanaxa> That's pretty interesting, I never had a real need for django's signaling yet
15:03:54FromDiscord<.kanaxa> (edit) "django's" => "Django's"
15:04:05FromDiscord<.kanaxa> What was that for, intervening during delete transactions?
15:04:19FromDiscord<Phil> Nah, mirroring all the data in my DB to the FTS5 tables
15:04:25FromDiscord<.kanaxa> That was the only real use I ever used it before
15:04:27FromDiscord<Phil> It was a DB of articles
15:04:29FromDiscord<.kanaxa> Ahh, replication
15:04:45FromDiscord<Phil> Many different kinds of articles
15:06:46FromDiscord<Phil> FTS5 tables had this silly limitation that you could only search for prefixes, not suffixes
15:07:23FromDiscord<.kanaxa> Oh yeah, I recall
15:07:24FromDiscord<Phil> So I basically wrote myself a signalling system so that every db entry gets written twice into FTS5
15:07:30FromDiscord<.kanaxa> I can't remember how I got around that
15:07:37FromDiscord<.kanaxa> Maybe I used the trigram tokenizer or something
15:08:02FromDiscord<.kanaxa> In reply to @isofruit "So I basically wrote": Hmm? How does that work, won't that create duplicate IDs?
15:08:08FromDiscord<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:10FromDiscord<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:40FromDiscord<.kanaxa> In reply to @isofruit "I brute forced it,": Then that's smart, performance isn't even hurt at such small sizes
15:13:56FromDiscord<Phil> sent a long message, see http://ix.io/4CfN
15:14:57FromDiscord<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:32FromDiscord<jaar23> i tried with nim c -r main.nim, and it able to run successfully, only nimble run is not successful
15:15:58FromDiscord<spotlightkid> Just nimle install your project again for Nim 2.0.
15:16:17FromDiscord<.kanaxa> In reply to @isofruit "Wait no, other way": For the BM25 ranking you mean?
15:16:25FromDiscord<Phil> Yeah
15:22:06FromDiscord<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:37FromDiscord<.kanaxa> @Phil What's your GUI situation with Nim? Are you using any of the packages
15:22:50FromDiscord<.kanaxa> And has anyone written full programs with Qt and Nim?
15:23:22FromDiscord<.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:28FromDiscord<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:50FromDiscord<Phil> For QT I only tried around with nimqml, which was nice, but learning a JS abstraction over C++ seemed like work
15:24:05FromDiscord<.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:07FromDiscord<.kanaxa> That would be great
15:24:22FromDiscord<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:34FromDiscord<Phil> owlkettle is GTK though mind you
15:25:06FromDiscord<Phil> As for existing QT wrappers, I'm way too much of a native GUI noob to jump into that rabbit hole
15:25:28FromDiscord<.kanaxa> Yeah I was considering owlkettle but it's GTK
15:25:35FromDiscord<.kanaxa> I like GTK but I'd like something more cross-platform
15:25:56FromDiscord<.kanaxa> The beauty of Nim is the binary is cross-platform, it's the GUI part that's stumbling me
15:26:29FromDiscord<.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:30FromDiscord<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:43FromDiscord<.kanaxa> In reply to @isofruit "Might have better luck": Fair enough
15:27:31FromDiscord<Phil> Though again, I did find that the nimqml package worked pretty well
15:27:39FromDiscord<Phil> Learning QML was just a bit too big of a barrier of entry for me
15:30:43FromDiscord<.kanaxa> As a webdev what drew you to Nim?
15:30:47FromDiscord<.kanaxa> I'm curious
15:35:23FromDiscord<Phil> sent a long message, see http://ix.io/4CfZ
15:37:52FromDiscord<Chronos [She/Her]> In reply to @.kanaxa "I totally dig Tkinter/Tk": Iirc there's a basic wrapper for tcl in Nim
15:39:33FromDiscord<Phil> sent a long message, see http://ix.io/4Cg0
15:40:02FromDiscord<Phil> (edit) "http://ix.io/4Cg0" => "http://ix.io/4Cg1"
15:40:20FromDiscord<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:00FromDiscord<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:11FromDiscord<Phil> It doesn't heart that I find nim to be increadibly readable.
15:41:13FromDiscord<Chronos [She/Her]> It's what I'm kinda using as a role model for my ideal language now lol
15:41:19FromDiscord<Phil> (edit) "heart" => "hurt"
15:41:51FromDiscord<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:39NimEventerNew Nimble package! voicepeaky4gpt - Voicepeak Server With GPT, see https://github.com/solaoi/voicepeaky4gpt
15:44:57FromDiscord<.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:04FromDiscord<.kanaxa> Difficulty-wise I could probably wrap my head around it, but I'm not a masochist
15:45:30FromDiscord<.kanaxa> Especially when I'm not working in a team and have limited time what with my legal practice to run
15:45:51FromDiscord<.kanaxa> I find Nim highly readable, and consistent, which I really like
15:46:07FromDiscord<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:15FromDiscord<.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:24FromDiscord<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:31FromDiscord<.kanaxa> In reply to @isofruit "That makes you better": And I find the Rust folks quite... evangelical
15:46:47FromDiscord<.kanaxa> It's sort of like the programming language version of "I use Arch too, BTW"
15:47:07FromDiscord<.kanaxa> It's a bit of a turn off for me
15:47:08FromDiscord<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:13FromDiscord<Phil> In reply to @.kanaxa "It's sort of like": Thanks for the reminder
15:47:16FromDiscord<Phil> I use Arch btw
15:47:19FromDiscord<.kanaxa> Hahahahaha
15:47:27FromDiscord<.kanaxa> I use POP OS, and I'm really happy with it
15:47:28FromDiscord<Phil> Almost missed my daily quota
15:47:47FromDiscord<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:48FromDiscord<.kanaxa> And it's simple, and I dislike unnecessary complexity
15:48:01FromDiscord<.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:42FromDiscord<.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:44FromDiscord<Phil> It's the entire "opt-in" philosophy that I sense
15:48:55FromDiscord<Phil> (edit) "It's the entire "opt-in" philosophy that I sense ... " added "everywhere and that I value"
15:49:00FromDiscord<.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:36FromDiscord<.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:16FromDiscord<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:22FromDiscord<.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:53FromDiscord<.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:55FromDiscord<.kanaxa> I found this quote hilarious
15:51:55FromDiscord<double_spiral> In reply to @.kanaxa "I sometimes have this": FR
15:52:00FromDiscord<Phil> sent a long message, see http://ix.io/4Cg6
15:52:10FromDiscord<.kanaxa> (edit) ""...Why" => ""...Why" | "programmers."" => "programmers.""
15:52:20FromDiscord<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:49FromDiscord<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:58FromDiscord<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:00FromDiscord<.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:11FromDiscord<.kanaxa> (edit) "Tcl" => "Tk" | removed "actually"
15:56:20FromDiscord<.kanaxa> (edit) "calls?" => "calls directly?"
15:58:02FromDiscord<Chronos [She/Her]> In reply to @.kanaxa "How does that wrapper": Not sure exactly, I can find a link hold on
15:58:45FromDiscord<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:05FromDiscord<jaar23> do i need to explicitly define package that i install from nimble?
15:59:20FromDiscord<Chronos [She/Her]> Official bindings which seem to just be commands: https://github.com/nim-lang/tcl
16:00:21FromDiscord<Chronos [She/Her]> https://github.com/thindil/steamsky/blob/master/nim/src/tk.nim this also seems to be just commands
16:00:24FromDiscord<.kanaxa> Which means that I'd need to actually learn Tcl itself just to use the GUI I guess
16:00:40FromDiscord<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:08FromDiscord<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:54FromDiscord<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:08FromDiscord<Phil> And it will use only the dependencies defined in that scope
16:02:52FromDiscord<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:12FromDiscord<.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:37FromDiscord<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:44FromDiscord<.kanaxa> (edit) "reaading" => "reading"
16:05:30FromDiscord<Phil> sent a code paste, see https://paste.rs/veFRL
16:05:35FromDiscord<.kanaxa> As in the module that actually draws the widgets by calling on Tcl
16:05:58FromDiscord<.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:57FromDiscord<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:29FromDiscord<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:43FromDiscord<Phil> So if you got nothing in there then it won't install any packages if you need them
16:35:05FromDiscord<Phil> Basically the nimble file is king, nobody writes to the nimble file except for you, the human user
16:35:13FromDiscord<Phil> ~~Unless you're a very clever AI like ElegantBeef~~
16:35:48Amun-Ra:P
16:36:20FromDiscord<Phil> Or Amun-Ra, can't forget about the AI faction from IRC
16:36:37Amun-Rahehe
16:39:50FromDiscord<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:48FromDiscord<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:09FromDiscord<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:22FromDiscord<Phil> (edit) "http://ix.io/4Cgq" => "http://ix.io/4Cgr"
16:42:57FromDiscord<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:17FromDiscord<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:24FromDiscord<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:55FromDiscord<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:15FromDiscord<Phil> nimble run for example is project specific
16:53:01FromDiscord<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:47FromDiscord<Festive> sent a code paste, see https://play.nim-lang.org/#ix=4Cgw
16:57:28FromDiscord<Phil> I'm out there, I have never coded with anything windows related and stay away from the platform
16:57:53FromDiscord<Phil> (edit) "there," => "as a convo partner for that topic,"
16:58:27FromDiscord<.kanaxa> Just wondering if you use Nimscript?
16:58:35FromDiscord<.kanaxa> I'm wondering if that's a viable replacement for Bash or Python
16:58:44FromDiscord<.kanaxa> Or if there's any advantage to it over Python
16:58:45FromDiscord<Phil> I do a fair bit for build scripts
17:00:20FromDiscord<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:12FromDiscord<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:49FromDiscord<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:43FromDiscord<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:25FromDiscord<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:00FromDiscord<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:49FromDiscord<.kanaxa> In reply to @isofruit "I basically have nimble": Beautiful
17:23:42FromDiscord<.kanaxa> So it’s like automated setup in a container, like an Ansible Playbook but with Nimscript?
17:23:57FromDiscord<Phil> Pretty much
17:24:03FromDiscord<.kanaxa> I love it
17:24:12FromDiscord<Phil> Basically the second I find myself doing something a lot I write a nimble task to take it away
17:25:04FromDiscord<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:16FromDiscord<.kanaxa> I haven’t yet researched Nimble tasks but I’m looking into it
17:25:49FromDiscord<.kanaxa> I’ve a lot of Bash scripts but I’m thinking of moving them into Nimscript
17:25:56FromDiscord<Phil> It's something I'd start worrying about once I have a project and now how to build/deploy it
17:26:29FromDiscord<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:37FromDiscord<.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:09FromDiscord<.kanaxa> At least with Nim I can isolate my scripts yet still have a programming language backing them
17:27:19FromDiscord<.kanaxa> Just not a fan of Bash syntax personally
17:27:26FromDiscord<.kanaxa> Unless I have to
17:27:47FromDiscord<Phil> sent a code paste, see https://play.nim-lang.org/#ix=4CgU
17:28:00FromDiscord<.kanaxa> Hell that’s still more readable than Bash
17:28:12FromDiscord<Phil> the echo makes it so the results of those commands get printed to the terminal
17:28:16FromDiscord<.kanaxa> And it wins for the ability to use string interpolation alone
17:28:28FromDiscord<Phil> I don't really care for the docker build steps so I don't echo those
17:29:19FromDiscord<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:28FromDiscord<Phil> For the rare occassions you actually need if statements
17:29:36FromDiscord<Phil> (edit) "For the rare occassions ... you" added "where"
17:29:45FromDiscord<.kanaxa> Oh man I find Bash if statements so… ugly
17:29:58FromDiscord<.kanaxa> If and fi
17:30:01FromDiscord<.kanaxa> Seriously what
17:30:26FromDiscord<.kanaxa> And the string interpolation and equality operators
17:30:31FromDiscord<.kanaxa> Just not my cup of tea
17:31:01FromDiscord<leetnewb> kanaxa, curious how you found nim?
17:32:29FromDiscord<.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:40FromDiscord<.kanaxa> I looked at rust, swift and Nim
17:33:08FromDiscord<Phil> I respect your drive to still want to try out C
17:33:36FromDiscord<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:47FromDiscord<.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:54FromDiscord<.kanaxa> Rust really put me off
17:34:20FromDiscord<.kanaxa> I personally find the syntax to be unreadable and ugly
17:34:43FromDiscord<leetnewb> there used to be a python -> go pipeline, but maybe go lost some of its shine
17:34:44FromDiscord<.kanaxa> Swift is much more beautiful in comparison despite not being indentation based like Python
17:35:04FromDiscord<.kanaxa> Essentially I formulate my decisions first and foremost on the readability of language, then it’s ecosystem
17:35:08FromDiscord<.kanaxa> Then my goals
17:35:23FromDiscord<.kanaxa> So I’m still learning swift right since I want to get into mobile development
17:35:49FromDiscord<.kanaxa> Nim I want as a general tooling language that I can build down to executables and Python is for everything else
17:35:56FromDiscord<.kanaxa> C is just pure intellectual capacity
17:36:07FromDiscord<.kanaxa> (edit) "C is just ... purecuriosity" added "out of" | "capacity" => "curiosity"
17:36:27FromDiscord<.kanaxa> And since it’s such a slow-moving language, which I think is really nice
17:36:36FromDiscord<Phil> I'd start learning zig before I start learning C
17:36:48FromDiscord<Phil> (edit) "C" => "C, I'll be honest"
17:38:20FromDiscord<.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:41FromDiscord<.kanaxa> In reply to @isofruit "I'd start learning zig": What attracts you to Zig
17:39:18FromDiscord<.kanaxa> I considered it but for me I don’t see its advantage over Nim or Swift for me
17:39:46FromDiscord<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:18FromDiscord<.kanaxa> I take that to be C’s wild charm, haha
17:40:38FromDiscord<Phil> In reply to @.kanaxa "I take that to": You sir/maam have interesting ideas of charming 😛
17:41:02FromDiscord<.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:13FromDiscord<.kanaxa> (edit) "‘e" => "me"
17:41:56FromDiscord<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:17FromDiscord<.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:26FromDiscord<.kanaxa> Just curiosity
17:42:42FromDiscord<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:53FromDiscord<.kanaxa> True that
17:43:16FromDiscord<.kanaxa> Again some people have a very…tribalistic affinity for a language
17:43:25FromDiscord<.kanaxa> I have no such affinity
17:43:33FromDiscord<.kanaxa> I just go for what’s practical for me and what looks nice
17:43:57FromDiscord<.kanaxa> So Nim and Python it is for me first, then anything else (eg Swift and C)
17:44:26FromDiscord<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:34FromDiscord<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:09FromDiscord<Phil> (edit) "code," => "code (though I've arrived at the standpoint that OO just does not lead to readable code),"
17:47:55FromDiscord<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:39FromDiscord<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:51FromDiscord<Phil> (edit) removed "looking at"
17:52:56FromDiscord<.kanaxa> Have you tried HTMX before? It’s wonderful
17:53:02FromDiscord<.kanaxa> I’ve never done any reactive programming
17:53:07FromDiscord<.kanaxa> I wonder how different it is
17:53:12FromDiscord<Phil> Can't say I have
17:53:45FromDiscord<michaelb.eth> like "functional", "reactive" requires some defining of terms else it can mean a number of different things
17:54:27FromDiscord<.kanaxa> I think he means the view in the DOM reacts to the change of state
17:54:38FromDiscord<.kanaxa> Or at least that’s what I understand it does
17:54:46FromDiscord<.kanaxa> But SPAs are not my thing
17:54:51FromDiscord<.kanaxa> I’m just a Django guy
17:55:05FromDiscord<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:08FromDiscord<michaelb.eth> sure, that's not an uncommon context in which to speak of "reactive"
17:55:14FromDiscord<Phil> sent a long message, see http://ix.io/4Ch4
17:55:49FromDiscord<.kanaxa> In reply to @leetnewb "You've probably seen this:": Oh I haven’t! Thanks for sharing, gonna read it
17:56:18FromDiscord<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:31FromDiscord<Phil> (edit) "http://ix.io/4Ch4" => "http://ix.io/4Ch6"
17:56:46FromDiscord<michaelb.eth> sometimes those kinds of pipeline libs or DSLs are called "functional reactive"
17:56:56FromDiscord<Phil> I mean, the entire DOM updating and central store etc. is typically achieved via rxjs in my eyes
17:57:04FromDiscord<Phil> It's based on observables through and through imo
17:57:09FromDiscord<michaelb.eth> it can be, sure
17:58:41FromDiscord<griffith1deadly> Are there any good reactive libraries for Nim with C backend?
17:58:59FromDiscord<Phil> No clue, I haven't written async nim code in any meaningful capacity
17:59:41FromDiscord<Phil> https://nimble.directory/pkg/chronos↵Chronos is often mentioned as a quality package I think
18:00:26FromDiscord<griffith1deadly> In reply to @isofruit "https://nimble.directory/pkg/chronos Chronos is oft": as I recall, it assumes single-threaded programming
18:00:55FromDiscord<michaelb.eth> well it's one event loop per thread, but you can start other threads and chronos event loops on them
18:01:01FromDiscord<Phil> In reply to @griffith1deadly "as I recall, it": WIth that you already know more than me about the package 😅
18:01:29FromDiscord<Phil> Wait, conceptually... is "one event-loop across threads" even possible?
18:02:12FromDiscord<griffith1deadly> In reply to @isofruit "Wait, conceptually... is "one": in other languages like jvm lang's yes
18:05:32FromDiscord<michaelb.eth> the main challenge with chronos and multi-threading is figuring out how to coordinate between the threads
18:05:58FromDiscord<michaelb.eth> the problem isn't unique to chronos, of course
18:06:23FromDiscord<Phil> The entire space seems as a general concept challenging already
18:07:19FromDiscord<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:27FromDiscord<michaelb.eth> I've been meaning to take a look, seems promising
18:07:36FromDiscord<michaelb.eth> (edit) "I've been meaning to take a ... look," added "closer"
18:08:20FromDiscord<michaelb.eth> v
18:08:23FromDiscord<michaelb.eth> https://github.com/status-im/nim-chronos/pull/406
18:08:35FromDiscord<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:26FromDiscord<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:47FromDiscord<Phil> But typically it's about having interactive concurrency in some manner where it becomes challenging
18:10:14FromDiscord<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:15FromDiscord<Phil> Or have the thread's execution result somehow return to the main thread
18:10:50FromDiscord<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:23FromDiscord<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:59FromDiscord<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:08FromDiscord<Phil> I'm too much of a novice in multithreaded applications
18:12:39FromDiscord<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:45FromDiscord<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:10FromDiscord<Phil> (edit) "sth" => "sth↵After that it gets iffy"
18:13:44FromDiscord<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:09FromDiscord<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:42FromDiscord<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:23FromDiscord<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:49FromDiscord<nervecenter> Very Lisp-like in that regard
18:54:07FromDiscord<nervecenter> There are very few massive all-encompassing libraries
18:54:15FromDiscord<nervecenter> (edit) "very few" => "almost no"
18:54:29FromDiscord<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:45FromDiscord<enthus1ast> ugh nimble develop is so broken, idk how you guys can work with this
20:13:05FromDiscord<enthus1ast> or nimble in general idk
20:15:16FromDiscord<enthus1ast> when i try to install a fork of a package that i've just edited, it does not get picked up
20:15:16FromDiscord<enthus1ast> and why tf do we have dozents of json and lock and places where an entry could be?
20:15:26FromDiscord<enthus1ast> my GUESS is i tried both nimble develop and nimble develop -g
20:15:52FromDiscord<enthus1ast> but i usually do not create nimble packages for my quick and dirty scripts or experiments
20:17:38FromDiscord<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:18FromDiscord<enthus1ast> but there is now a reference somewhere in some file
20:19:26FromDiscord<enthus1ast> what i currently do, i fight with nimble every time i develop a local package and this is annoying af
20:21:01FromDiscord<Elegantbeef> Nimble 0.14 is just awful ime
20:21:01FromDiscord<Elegantbeef> I'd suggest checking if atlas makes your life any better
20:21:15FromDiscord<enthus1ast> can it also read nimble files for requires?
20:21:21FromDiscord<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:33FromDiscord<Chronos [She/Her]> Gonna be using Mummy for making an account system now
20:46:52FromDiscord<Chronos [She/Her]> Wondering how many threads I should really use in a production environment though
20:47:26FromDiscord<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:30FromDiscord<Chronos [She/Her]> But... Websockets?
20:49:16FromDiscord<bung8954> depends on how many concurent requests you can imaging
20:52:07FromDiscord<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:59FromDiscord<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:22FromDiscord<Chronos [She/Her]> Makes sense, I'd probably use something like Oracle VPS so not great for threads
20:56:28FromDiscord<Chronos [She/Her]> Ig Prologue should be fine then?
20:56:54FromDiscord<Phil> Pretty much, if you're bound by a single-threaded environment, async is your only chance of getting faster
20:57:26FromDiscord<Phil> But then again, if it's a web-application your webserver is not going to be the speed-limitting step
20:57:45FromDiscord<Phil> Your database and how well you optimize your interactions and workflows with it via buffers, caches etc. will be
20:59:22FromDiscord<Phil> That and how well you can avoid N+1 problems
21:12:29*pbsds quit (Ping timeout: 260 seconds)
21:18:12FromDiscord<Chronos [She/Her]> In reply to @isofruit "Your database and how": Fair
21:18:54FromDiscord<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:03FromDiscord<Chronos [She/Her]> (This is a cry for help)
21:19:07FromDiscord<Phil> webdev is fascinating in that you can save a ton of performance literally independent of your actual language and framework
21:20:21FromDiscord<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:21FromDiscord<Chronos [She/Her]> Fair, I just want my app to work honestly
21:21:49FromDiscord<Phil> Yeah but invalid database states!
21:22:22FromDiscord<Phil> Only you can protect your future self from debugging stupid shit
21:22:32FromDiscord<Phil> Use protection! use constraints!
21:22:33FromDiscord<.matrixagent> why is the IDE support for nim so poor
21:23:37FromDiscord<Chronos [She/Her]> In reply to @isofruit "Use protection! use constraints!": 😭
21:24:07FromDiscord<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:10FromDiscord<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:17FromDiscord<Chronos [She/Her]> In reply to @.matrixagent "why is the IDE": No-one invests time into it really
21:24:46FromDiscord<.matrixagent> In reply to @isofruit "Because parsing nim code": im just trying to use the offical jetbrains nim plugin
21:24:53FromDiscord<Phil> That and I think only nimsaem ever invested a decent amount of time to work around those limitations.
21:25:35FromDiscord<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:26FromDiscord<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:34FromDiscord<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:57FromDiscord<Phil> nisane can deal with the parsing of your query result into nim types
21:27:04FromDiscord<Phil> And you can deal ORM independent with the rest
21:27:21FromDiscord<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:49FromDiscord<Elegantbeef> I use CSV for all my database needs!
21:27:58FromDiscord<.matrixagent> In reply to @isofruit "Also don't go raw": raw dogging?
21:28:01FromDiscord<.matrixagent> ayo
21:28:06FromDiscord<Phil> Beef with the absolute monstrous take
21:29:03FromDiscord<.matrixagent> i wonder why inteliji is using 3 gb of memory
21:29:06FromDiscord<.matrixagent> jesus
21:29:27FromDiscord<Phil> Imagine me splitting my hands in a half circle and a rainbow appearing
21:29:28FromDiscord<Phil> "Java"
21:29:29FromDiscord<Elegantbeef> Written in a JVM language
21:30:01FromDiscord<Phil> Heard many good things about Kotlin, I'd love to try it out
21:30:10FromDiscord<.matrixagent> In reply to @isofruit "Heard many good things": im using it right now
21:30:20FromDiscord<.matrixagent> honestly is slept on for a lot of things
21:30:45FromDiscord<.matrixagent> the whole jvm ecosystem is slept on i think people have forgotten how good the java ecosystem is
21:30:57FromDiscord<Elegantbeef> Too bad the JVM is atrocious
21:30:59FromDiscord<Phil> More functional, less null, less "I will murder you with unnecessarily long lines of code until you actually die"
21:31:28FromDiscord<.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:40FromDiscord<.matrixagent> to avoid pauses
21:32:14FromDiscord<.matrixagent> i would definitely not run java on any of my servers with less than 2 gb of memory
21:32:31FromDiscord<Elegantbeef> There's the difference between you and I 😄
21:32:40FromDiscord<Elegantbeef> 2Gb
21:32:59FromDiscord<.matrixagent> i would actually like to compile llvm ir to java bytecode
21:33:04FromDiscord<.matrixagent> i know its a war crime to do so
21:33:09FromDiscord<Phil> Given I don't even have a full gig of memory for my miniature server that's oof
21:33:12FromDiscord<.matrixagent> but the ecosystem is nice
21:33:26FromDiscord<.matrixagent> In reply to @isofruit "Given I don't even": 512?
21:33:30FromDiscord<Elegantbeef> I'm primarily someone that cares about gamedev, so the JVM is just a joke to me
21:33:33FromDiscord<Phil> 965M
21:33:52FromDiscord<.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:55FromDiscord<.matrixagent> its been great
21:34:29FromDiscord<.matrixagent> In reply to @Elegantbeef "I'm primarily someone that": project zomboid has proven this
21:34:37FromDiscord<.matrixagent> the lag spikes are insane
21:34:59FromDiscord<.matrixagent> and they're using a pimped out LLVM jit for their jvm and it didnt help much
21:35:32FromDiscord<Elegantbeef> When you cannot have user defined value types you either have awful written code, or awful performance
21:36:21FromDiscord<.matrixagent> and also why doesnt nim just compile to llvm ir
21:36:23FromDiscord<.matrixagent> why C?
21:36:31FromDiscord<Elegantbeef> It's more portable than llvmir
21:36:46FromDiscord<.matrixagent> how
21:36:59FromDiscord<.matrixagent> llvm ir runs on nearly every backend llvm had
21:37:05FromDiscord<Elegantbeef> you also get all the tooling for C pretty much out of the box
21:37:05FromDiscord<.matrixagent> (edit) "had" => "has"
21:37:06FromDiscord<Elegantbeef> There is a C compiler for pretty much everything
21:37:40FromDiscord<.matrixagent> i see
21:37:51FromDiscord<.matrixagent> so its possible to compile nim for esp32?
21:37:56FromDiscord<Elegantbeef> Yes
21:37:57FromDiscord<Chronos [She/Her]> In reply to @isofruit "Honestly if you don't": Nisane? Neat
21:38:08FromDiscord<Chronos [She/Her]> In reply to @isofruit "Also don't go raw": Oh yeah I know that for sure
21:38:12FromDiscord<Elegantbeef> And you have access to all the tooling that exists since you're generating C
21:38:27FromDiscord<Elegantbeef> another benefit is that it gives you a very readable IR
21:38:56FromDiscord<Elegantbeef> Not supremely readable, but you can read the C and aside from optimisations know what's going on
21:39:01FromDiscord<.matrixagent> and also how does java beat nim here wtf↵https://programming-language-benchmarks.vercel.app/nim-vs-java
21:39:04FromDiscord<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:05FromDiscord<Phil> A toaster
21:39:12FromDiscord<Elegantbeef> Programming language benchmarks a joke
21:39:19FromDiscord<Elegantbeef> They have a plan↵(@Phil)
21:39:23FromDiscord<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:51FromDiscord<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:10FromDiscord<.matrixagent> lol
21:40:41FromDiscord<Elegantbeef> There are simd vs non simd examples for Nim vs. Rust on that website
21:40:58FromDiscord<Elegantbeef> It's a fucking pointless endeavour
21:41:11FromDiscord<.matrixagent> so pretty much the benchmarks are rigged
21:41:20FromDiscord<Phil> sent a long message, see http://ix.io/4Cif
21:41:35FromDiscord<Elegantbeef> Not rigged, but pointless
21:41:42FromDiscord<.matrixagent> In reply to @isofruit "I've stopped actually looking": i can swap the allocator in nim>
21:41:44FromDiscord<.matrixagent> (edit) "nim>" => "nim?"
21:41:47FromDiscord<Elegantbeef> Yes
21:42:01FromDiscord<Elegantbeef> It uses a global allocator so it's not like Zig/Odin, but you can replace it globally
21:42:09FromDiscord<Phil> So basically if you just compile that program with the right flag to use the most insane allocator you just win
21:42:12FromDiscord<Elegantbeef> https://github.com/Yardanico/mimalloc_nim is an example of how
21:42:17FromDiscord<Phil> So what's your point then, what have you proven?
21:42:24FromDiscord<.matrixagent> so i can use TLSF?
21:42:38FromDiscord<Elegantbeef> Nim's allocator is TLSF inspired
21:42:38FromDiscord<Elegantbeef> So why would you want to
21:42:55FromDiscord<.matrixagent> oh alright
21:43:05FromDiscord<.matrixagent> In reply to @Elegantbeef "So why would you": thought i was some other allocator
21:43:33FromDiscord<.matrixagent> and also does the nim boehm gc straight up just add the header and use `GC_malloc`?
21:43:57FromDiscord<Elegantbeef> https://github.com/nim-lang/Nim/blob/devel/lib/system/mm/boehm.nim check for oyurself
21:44:25FromDiscord<Elegantbeef> https://github.com/nim-lang/Nim/blob/devel/lib/system/alloc.nim nim's alloc is here
21:44:51FromDiscord<Chronos [She/Her]> My question is why is Go's GC supported?
21:44:55FromDiscord<Chronos [She/Her]> For Go interop?
21:45:00FromDiscord<Chronos [She/Her]> Because I can't think of any other reason
21:45:00FromDiscord<.matrixagent> In reply to @yu.vitaqua.fer.chronos "For Go interop?": yes
21:45:01FromDiscord<Elegantbeef> That was the point
21:45:14FromDiscord<Chronos [She/Her]> Does anyone even use Go with Nim?
21:45:18FromDiscord<Elegantbeef> The idea was seemlessly sharing Go objects across the FFI barrier
21:45:21FromDiscord<.matrixagent> probably not
21:45:31FromDiscord<Elegantbeef> I think whoever added Go's GC did but not any longer
21:45:45FromDiscord<Elegantbeef> Similar thing with Nim's objc backend
21:46:06FromDiscord<.matrixagent> i think its safe to say nim is as fast as C++
21:46:27FromDiscord<Elegantbeef> It's as fast as the programmer
21:46:33FromDiscord<.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:41FromDiscord<.matrixagent> In reply to @Elegantbeef "It's as fast as": damn didnt know nim was slow
21:46:53FromDiscord<Elegantbeef> With macros and inline assembly it's really the programmer slowing it down
21:47:20FromDiscord<.matrixagent> speaking about inlining what are the rules to get my function to be inlinable?
21:47:21FromDiscord<Phil> Basically nim allows you to be as fast as you're willing to invest time
21:47:42FromDiscord<Elegantbeef> Annotate it `{.inline.}` and it'll likely be inlined
21:47:45FromDiscord<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:50FromDiscord<Elegantbeef> It uses C to inline it
21:47:51FromDiscord<.matrixagent> In reply to @Elegantbeef "Annotate it `{.inline.}` and": that means nothing
21:48:07FromDiscord<.matrixagent> it just hints to compiler "i think it should be inlined"
21:48:12FromDiscord<Elegantbeef> I mean if you want to guaranteed inline you use a template
21:48:13FromDiscord<Phil> But that will require effort as opposed to just chugging down business logic
21:48:24FromDiscord<Elegantbeef> Generally trusting the compiler and compiling with `-d:lto` suffices
21:48:42FromDiscord<.matrixagent> damn i can just use `-d:lto` all this time
21:48:51FromDiscord<Phil> note: only do -d:lto for release builds
21:48:53FromDiscord<.matrixagent> i was passing it as a C compiler linker flag
21:49:13FromDiscord<Phil> It's not worth waiting the time the linker takes with its flipping single-threaded process when you're just debugging
21:49:30FromDiscord<.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:30FromDiscord<Elegantbeef> Well I think `-d:lto` is iffy with clang on mac
21:49:33FromDiscord<Elegantbeef> Phil it's a bit funny hearing you say "Do not do optimised debug builds"
21:49:35FromDiscord<.matrixagent> since i can pass march native
21:49:57FromDiscord<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:17FromDiscord<Elegantbeef> I stopped reading at docker
21:50:32FromDiscord<.matrixagent> lol
21:50:50FromDiscord<.matrixagent> i wonder if docker increases latency in an app
21:50:53FromDiscord<Phil> ~~you stopped reading in general a while ago ;-P~~
21:51:05FromDiscord<.matrixagent> since if im running a vps and running docker thats 2 vms
21:51:08FromDiscord<Phil> for web applications? Not in a manner that matters
21:51:14FromDiscord<Elegantbeef> I generally just avoid any message that has a blue 'Phil' before it
21:51:33FromDiscord<.matrixagent> In reply to @isofruit "for web applications? Not": in websockets probably
21:51:35FromDiscord<Phil> Beef starting beef , it is that time of the night
21:51:44FromDiscord<.matrixagent> i never use docker anyways i just use `nohup` lol
21:51:50FromDiscord<Elegantbeef> Oh you know I'm joking, I hope
21:52:00FromDiscord<Phil> In reply to @Elegantbeef "Oh you know I'm": I am german, what is humour?
21:52:06FromDiscord<Elegantbeef> I tried docker once but it was such a pain I gave up
21:52:16FromDiscord<.matrixagent> i wonder how does this even work https://media.discordapp.net/attachments/371759389889003532/1136778590411829379/image.png
21:52:27FromDiscord<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:37FromDiscord<Elegantbeef> How does what work?
21:52:41FromDiscord<.matrixagent> In reply to @isofruit "Unless your server is": acceptable
21:52:46FromDiscord<.matrixagent> In reply to @Elegantbeef "How does what work?": look at the versions
21:52:56FromDiscord<.matrixagent> it wont work on my ide but it says its supported
21:53:01FromDiscord<Phil> In reply to @.matrixagent "acceptable": Mind you a decently fast optimized prologue handler will execute request to response in like 2ms
21:53:11FromDiscord<Phil> It does not matter how much more effort you put into your server at that point
21:53:27FromDiscord<Phil> Your network latency is what's eating your response time by 80%+
21:53:39FromDiscord<.matrixagent> In reply to @.matrixagent "i wonder how does": oh inteliji 2022
21:53:45FromDiscord<.matrixagent> nice abandonded plugin
21:53:52FromDiscord<Elegantbeef> Just don't do web dev, problem solved
21:53:59FromDiscord<.matrixagent> +1
21:54:00FromDiscord<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:10FromDiscord<.matrixagent> In reply to @isofruit "It might matter if": a day?
21:54:13FromDiscord<.matrixagent> try a second
21:54:42FromDiscord<.matrixagent> the mummy websocket server im running is handling 200k ish requests a second on regular days
21:54:44FromDiscord<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:03FromDiscord<.matrixagent> yeah
21:55:09FromDiscord<Elegantbeef> As hard as I try I cannot read that as more than a 100 users
21:55:16FromDiscord<.matrixagent> i just dont understand the hyper in docker
21:55:21FromDiscord<.matrixagent> (edit) "hyper" => "hype"
21:55:25FromDiscord<Phil> In reply to @.matrixagent "i just dont understand": It trivializes setup
21:55:27FromDiscord<.matrixagent> it solves pretty much nothing
21:55:40FromDiscord<.matrixagent> In reply to @isofruit "It trivializes setup": because your lazy to run a .sh script to install everything
21:55:53FromDiscord<Phil> In reply to @.matrixagent "because your lazy to": No, the docker file literally is the .sh script
21:56:00FromDiscord<.matrixagent> it adds latency tho
21:56:03FromDiscord<.matrixagent> its a vm
21:56:06FromDiscord<.matrixagent> inside a vm
21:56:15FromDiscord<Phil> It adds less than the ms area
21:56:26FromDiscord<Phil> That is literally not worth talking about unless you're doing fintech
21:56:36FromDiscord<Elegantbeef> is docker even a VM, isnt it visualised like LXD?
21:56:46FromDiscord<Elegantbeef> virtualisation\
21:57:02FromDiscord<.matrixagent> its a vm
21:57:06FromDiscord<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:15FromDiscord<.matrixagent> but its still there
21:57:18FromDiscord<.matrixagent> which i dont like
21:57:22FromDiscord<Phil> Again
21:57:29FromDiscord<Phil> You're talking about less than 0.5% optimization
21:57:37FromDiscord<.matrixagent> In reply to @isofruit "You're talking about less": bro i write C++
21:57:39FromDiscord<Phil> In exchange for trivialized deployments after an initial setup
21:57:44FromDiscord<.matrixagent> 0.5% optimization is everything lol
21:57:45FromDiscord<Elegantbeef> I'm a simpleton I prefer LXD as it was capable of doing what I wanted
21:58:07FromDiscord<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:18FromDiscord<.matrixagent> premature is the source of all good
21:58:32FromDiscord<Phil> premature is the source of "I'll smack your PR down until its readable again"
21:58:34FromDiscord<.matrixagent> if you dont do premature optimization you end up with an app like discord
21:58:42FromDiscord<.matrixagent> bloated and a memory hog and slow
21:59:12FromDiscord<.matrixagent> and the state of discord on linux is just a joke
21:59:30FromDiscord<Elegantbeef> Imagine being named "matrixagent" insulting discord's client but still actively using it when you could be using matrix
21:59:40FromDiscord<.matrixagent> matrix sucks
21:59:47FromDiscord<Elegantbeef> mmmk
21:59:59FromDiscord<.matrixagent> i like the idea but the execution is horrible
22:00:07FromDiscord<.matrixagent> just add servers man then i'll use matrix
22:00:11FromDiscord<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:48FromDiscord<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:00FromDiscord<Phil> (edit) "Like, Electron is a freighter, you can throw individual flecks of sand ... over" added "for optimization"
22:01:06FromDiscord<.matrixagent> i think electron isnt the problem
22:01:16FromDiscord<.matrixagent> just the discord engineers made it poorly
22:01:27FromDiscord<.matrixagent> vscode is an electron app and its good since they care about speed
22:02:29FromDiscord<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:42FromDiscord<Phil> And mind you I don't mean overloaded in any positive sense
22:03:24FromDiscord<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:27FromDiscord<.matrixagent> im running 50+ plugins in vscode and the performance is same as -
22:03:29FromDiscord<.matrixagent> (edit) "-" => "0"
22:03:56FromDiscord<.matrixagent> In reply to @isofruit "Half the stuff on": discord was fine couple of years back
22:04:09FromDiscord<.matrixagent> but they keep adding more garbage to it which is making the performance bad
22:04:28FromDiscord<Phil> In reply to @.matrixagent "im running 50+ plugins": I'd disagree on that one, having had a vastly different experience
22:05:18FromDiscord<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:29FromDiscord<.matrixagent> @elegantbeef and also the offical matrix client is electron
22:05:40FromDiscord<Elegantbeef> Well 'official'
22:05:51FromDiscord<.matrixagent> In reply to @isofruit "It's what caused me": depends on what your running
22:06:00FromDiscord<.matrixagent> all of my extentions are just lsp's
22:07:00FromDiscord<Phil> I'm actually surprised overall discrod isn't increasing the pressures ever since interest rates started going up
22:07:10FromDiscord<Phil> (edit) "pressures" => "pressure"
22:07:20FromDiscord<Phil> (edit) "discrod" => "discord"
22:07:41FromDiscord<.matrixagent> and also the thing thats keeping me on discord is webhooks
22:07:47FromDiscord<.matrixagent> i use it for server monitoring
22:21:11FromDiscord<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:38FromDiscord<spotlightkid> The one matrix client lib I found for Nim seems unmaintained.
22:22:12FromDiscord<Elegantbeef> Yea, i've been meaning to contribute to it, but I only have so much motivation 😄
22:25:15FromDiscord<.matrixagent> In reply to @spotlightkid "The matrix API is": whats the rate limit looking like>
22:25:18FromDiscord<.matrixagent> (edit) "like>" => "like?"
22:27:02FromDiscord<.matrixagent> also i wonder what OS @elegantbeef is on
22:27:06FromDiscord<.matrixagent> probably gentoo
22:27:13FromDiscord<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:13FromDiscord<Elegantbeef> Linux
22:27:14FromDiscord<Elegantbeef> Endeavour
22:27:39FromDiscord<.matrixagent> why not...arch?
22:27:47FromDiscord<.matrixagent> endavour is just arch + installer
22:27:55FromDiscord<Elegantbeef> Exactly
22:28:04FromDiscord<.matrixagent> wait until you here about archinstall
22:28:09FromDiscord<.matrixagent> (edit) "here" => "hear"
22:28:14FromDiscord<Elegantbeef> I know about it
22:28:42FromDiscord<.matrixagent> i really dont get the hype about arch
22:29:00FromDiscord<Elegantbeef> I wanted something more rolling than debian sid
22:29:09FromDiscord<.matrixagent> but why rolling?
22:29:14FromDiscord<.matrixagent> because of packages?
22:29:37FromDiscord<Elegantbeef> Cause I like having programs that are updated without having to manually build them, or fetch an appimager
22:30:05FromDiscord<.matrixagent> yeah if only linux mint was rolling
22:30:10FromDiscord<Elegantbeef> I also have grown to like the shear number of accessible packages on the AUR
22:30:31FromDiscord<.matrixagent> debian and ubuntu by far have the most packages across any distro
22:30:46FromDiscord<.matrixagent> things like google chrome and steam only build deb packages
22:32:14FromDiscord<Elegantbeef> That might be the case, but there are way more packages on arch + AUR
22:32:29FromDiscord<huantian> hey nixpkgs technically has more packages
22:32:41FromDiscord<Elegantbeef> A vast majority of time I can just install using yay and I get what I want
22:32:46FromDiscord<.matrixagent> and also arch + nvidia is so slow for me
22:32:50FromDiscord<.matrixagent> thats why i use linux mint
22:32:54FromDiscord<spotlightkid> I don't really know. I have my (or rather a friend has his) own Matrix server.↵(@.matrixagent)
22:33:27FromDiscord<Elegantbeef> Actual federation on matrix, impossible! 😄
22:33:36FromDiscord<huantian> wow are the cool kids talking on matrix
22:33:51FromDiscord<Elegantbeef> They were, now the cool kids a dullard
22:33:56FromDiscord<Elegantbeef> and a\
22:34:14FromDiscord<Elegantbeef> Now who looks like a dullard. Making incorrect sentences
22:35:45FromDiscord<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:22FromDiscord<Elegantbeef> Yea I do not suggest arch to anyone that wants a stable system, not that I've had any major issues
22:36:24FromDiscord<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:34FromDiscord<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:46FromDiscord<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:59FromDiscord<Elegantbeef> It's annoying when something is not updated
22:37:12FromDiscord<spotlightkid> Plenty of aweful PKGBUILDs on the AUR, yes.
22:37:17FromDiscord<Elegantbeef> Looking at knossos 😄
22:37:39FromDiscord<Elegantbeef> I just wanted to play freespace2, but no it was a ballache
22:38:06FromDiscord<spotlightkid> I maintain 100+ PKGBUILDs and I had to learn best practices whiel makeing the first 50 or so ;)
22:38:31FromDiscord<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:56FromDiscord<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:28FromDiscord<Elegantbeef> eg it's easier\?
22:39:46FromDiscord<spotlightkid> Yeah, thatswhy the Arch folks preach building in a chroot. Not so easy, though, if you're on Manjaro 🤪
22:40:24FromDiscord<Elegantbeef> Was going to say it seems like LXD or similar
22:40:28FromDiscord<huantian> Yeah that probably makes more sense, I was going for “it’s harder to make the same mistake”
22:41:42FromDiscord<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:50FromDiscord<leetnewb> lxd got forked - https://github.com/cyphar/incus
22:42:06FromDiscord<spotlightkid> And I can point people to them if I want to show how a project can be built in practice.
22:42:36FromDiscord<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:37FromDiscord<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:24FromDiscord<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:59FromDiscord<Elegantbeef> The most I've touched this stuff is when I was unsuccessful in attempting to build postmarketos for my phone
22:48:59FromDiscord<leetnewb> It's a nice option for splitting up services on a vps without learning docker
22:49:24FromDiscord<Elegantbeef> Right, I dont have a VPS 😄
22:49:55FromDiscord<.matrixagent> In reply to @leetnewb "It's a nice option": just use nohup
22:50:21FromDiscord<leetnewb> That is much less fun
22:50:49FromDiscord<leetnewb> also why nohup vs a service file?
22:51:29FromDiscord<.matrixagent> also is this the extention you guys use https://media.discordapp.net/attachments/371759389889003532/1136793491503071292/image.png
22:51:33FromDiscord<.matrixagent> or the first one?
22:51:40FromDiscord<Elegantbeef> saem's is better
22:51:43FromDiscord<.matrixagent> In reply to @leetnewb "also why nohup vs": dont mean
22:51:53FromDiscord<.matrixagent> (edit) "In reply to @leetnewb "also why nohup vs": ... dontunderstand" added "i" | "mean" => "understand"
22:52:14FromDiscord<.matrixagent> In reply to @Elegantbeef "saem's is better": alright
22:52:43FromDiscord<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:48FromDiscord<leetnewb> (edit) "sessoin?" => "session?"
22:53:09FromDiscord<.matrixagent> In reply to @leetnewb "containers provide isolation. what": nothing
22:53:16FromDiscord<.matrixagent> why do i want anything to be isolated anyways
22:53:29FromDiscord<.matrixagent> i just use 1 service per vps
22:54:27FromDiscord<leetnewb> that works too
22:56:07*ajunior joined #nim
22:57:22FromDiscord<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:32FromDiscord<etra> (edit) "since orc (and iirc move semantics are better ... in" added "figured out"
22:58:10FromDiscord<Elegantbeef> https://github.com/nim-works/cps is akin to what you're asking about
22:58:31FromDiscord<Elegantbeef> Maybe, maybe not, I don't know
22:59:03FromDiscord<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:57FromDiscord<.matrixagent> In reply to @treeform "I just run into": did you report in github?
23:00:02FromDiscord<Elegantbeef> You likely need to delete your `.nimble/pkgs` `.nimble/pkgs2` and `.nimble/links`
23:00:26FromDiscord<treeform> In reply to @.matrixagent "did you report in": I can't figure this new nimble out? It might be intended behavior?
23:00:50FromDiscord<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:19FromDiscord<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:55FromDiscord<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:00FromDiscord<treeform> still nothing
23:02:10FromDiscord<Elegantbeef> you're supposed to do `nimble develop package` and it'll clone it local to the project afaik
23:03:04FromDiscord<treeform> I don't want that? I want `nimble develop` behavior.
23:03:20FromDiscord<treeform> were it just left my folders alone and linked them
23:03:42FromDiscord<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:50FromDiscord<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:05FromDiscord<Elegantbeef> Comically enough I somehow have it linking my repos without any link files now that I think about it
23:07:34FromDiscord<treeform> I am just confused by this new nimble
23:07:57FromDiscord<treeform> Nimble for the most part was working
23:07:57FromDiscord<Elegantbeef> It's what happens when you let status write software without considering existent users
23:08:26FromDiscord<treeform> Why change if it was not badly broken?
23:09:12FromDiscord<Elegantbeef> Cause it caused them internal issues where someone was using local code and pushed their code supposedly
23:09:32FromDiscord<Elegantbeef> https://github.com/nim-lang/nimble/issues/1124 2 weeks and no response
23:10:11FromDiscord<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:42FromDiscord<treeform> How is it supposed to work? How do I make it work?
23:11:07FromDiscord<Elegantbeef> Status doesnt use `nimble develop -g` so they wouldnt run into this issue 😄
23:11:29FromDiscord<treeform> > It seems the (actual) old behavior is either broken, or not supported any more.
23:11:45FromDiscord<treeform> His conclusion feels bad?
23:11:54FromDiscord<treeform> But I just got setup with atlas? So who knows...
23:11:54FromDiscord<Elegantbeef> I concur
23:12:44FromDiscord<Elegantbeef> https://github.com/nim-lang/nimble/issues/948 if you havent seen
23:15:59FromDiscord<Elegantbeef> Anyway atlas is likely more intuitive to use and even faster to compile
23:16:54FromDiscord<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:12FromDiscord<treeform> I never used `nimble build`
23:17:20FromDiscord<treeform> So yeah atlas appears to be winnin here.
23:17:29FromDiscord<treeform> (edit) "winnin" => "winnig"
23:17:58FromDiscord<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:53FromDiscord<Elegantbeef> I've had a few issues with reproducible builds due to using `nim c` with multiple versions of a package installed
23:22:28FromDiscord<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:31FromDiscord<Elegantbeef> Eh it could, but it was generally fine in my experience
23:23:38FromDiscord<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:50FromDiscord<Festive> How can I use anonymous files in nim