<< 11-06-2024 >>

01:06:22FromDiscord<double_spiral> Nim I think is the most stubborn language I've used
01:07:08FromDiscord<double_spiral> It makes it very unwieldy for bigger projects cause if you don't know what tf you're doing (me) 3/4 of the challenge is fighting the compiler
01:11:34FromDiscord<double_spiral> I will say that it is the perfect amount of low and high level programming though, that is extremely convenient when it comes in handy
01:20:17FromDiscord<ElegantBeef> In reply to @double_spiral "It makes it very": I disagree, what are you running into?
01:20:31FromDiscord<wannabelokesh> Hi everyone ↵where do I start learning?↵Do I need paid course/book or I can learn from the free ones?
01:20:57FromDiscord<double_spiral> In reply to @wannabelokesh "Hi everyone where": I've been using nimbyexample.com
01:21:32FromDiscord<demotomohiro> I think C++ is more stubborn than Nim :p
01:22:15FromDiscord<double_spiral> In reply to @elegantbeef "I disagree, what are": I'm trying to create my own little UI library for the raylib bindings, I think I'm pushing my java knowledge on to it a little too much and I need to drop the inheritance stuff I'm doing
01:22:32FromDiscord<demotomohiro> In reply to @wannabelokesh "Hi everyone where": Here is official tutorial: https://nim-lang.org/docs/tut1.html
01:22:36FromDiscord<ElegantBeef> You can use inheritance and methods just fine to use Java style oop
01:22:42*beholders_eye quit (Ping timeout: 268 seconds)
01:22:45FromDiscord<ElegantBeef> But yes avoid OOP
01:23:06FromDiscord<double_spiral> Not sure how else I'd go about ui
01:23:13FromDiscord<double_spiral> A button being a class just makes so much sense
01:23:19FromDiscord<ElegantBeef> Yea UI is one of the few places that OOP works well
01:23:34FromDiscord<ElegantBeef> I do avoid any runtime dispatch for my UI frame thingy
01:23:44FromDiscord<ElegantBeef> But it's a mess of generics and concepts
01:24:23FromDiscord<double_spiral> Tomorrow I'm gonna delete the parent class and just deal with the restating properties and procs
01:24:28FromDiscord<ElegantBeef> Why?
01:25:00FromDiscord<ElegantBeef> Using inheritance and methods is the easiest method of getting UI off the ground
01:25:11FromDiscord<double_spiral> I believe that's where my issues are stemming from
01:25:20FromDiscord<ElegantBeef> What's your issue?
01:26:16FromDiscord<double_spiral> I have a seq of refs to my UI objects and it's been very tedious trying to figure out what the compilers wants from basically
01:26:34FromDiscord<ElegantBeef> Well learn how OOP works 😄
01:26:55FromDiscord<double_spiral> That's kinda disrespectful
01:27:10FromDiscord<ElegantBeef> I mean you're saying the compiler is fighting you which means you do not know how OOP works in Nim
01:27:28FromDiscord<double_spiral> Well then make better fucking docs then
01:27:32FromDiscord<ElegantBeef> Present the actual problem and I can provide assistance
01:27:37FromDiscord<ElegantBeef> I mean I didn't make the docs
01:27:40FromDiscord<double_spiral> Fuck you
01:27:47FromDiscord<ElegantBeef> Why so hostile?
01:28:12FromDiscord<ElegantBeef> https://nim-lang.org/docs/manual.html#methods does explain how to use methods
01:32:45FromDiscord<double_spiral> Your worst characteristic is that you don't even know what you did wrong so you'll never learn
01:34:21FromDiscord<ElegantBeef> Sorry about that
02:01:27FromDiscord<albassort> sent a code paste, see https://play.nim-lang.org/#pasty=bIRuimaV
02:01:32FromDiscord<albassort> (edit) "https://play.nim-lang.org/#pasty=JUIoZked" => "https://play.nim-lang.org/#pasty=lqRFdmpK"
02:01:42FromDiscord<albassort> what do you guys think of this
02:02:23FromDiscord<albassort> i think its easier on the eyes than making the values they are bound to be right next to them, because it forms columns
02:02:48FromDiscord<ElegantBeef> Well I dislike horizontally aligned code, and also those numbers are pointless
02:03:03FromDiscord<albassort> they make me happy
02:03:23FromDiscord<albassort> they also NEED to be 8 bit and if they aren't that will make my code break because it goes into c
02:03:30FromDiscord<ElegantBeef> Excep they don't make it 8bit
02:03:46FromDiscord<albassort> this makes me angry
02:03:52FromDiscord<albassort> i haven't tested it yet
02:03:54FromDiscord<ElegantBeef> `sizeof(MyEnum)` is always the size required for elements
02:04:00FromDiscord<ElegantBeef> So you can drop that and it works just the same
02:04:51FromDiscord<albassort> destroyed by facts and logic
02:05:57FromDiscord<demotomohiro> sent a code paste, see https://play.nim-lang.org/#pasty=RnNCOGwO
02:06:25FromDiscord<albassort> i did a brief google on "how to convert nim enum to c" and nothing notable came up so i figured it wasn'
02:06:27FromDiscord<albassort> (edit) "wasn'" => "wasn't important"
02:06:33FromDiscord<albassort> but yes, this is what i need
02:06:35FromDiscord<albassort> thank you
02:07:24FromDiscord<ElegantBeef> sent a code paste, see https://play.nim-lang.org/#pasty=wHcaCGNT
02:07:29FromDiscord<ElegantBeef> Worth noting size forces nothing
02:07:38FromDiscord<ElegantBeef> just do `static: assert sizeof(MyEnum) == 1`
02:08:05FromDiscord<albassort> if i did size: 2 and had only 4 values would it be of size2
02:08:06FromDiscord<albassort> (edit) "size2" => "size 2"
02:08:56FromDiscord<albassort> you can fit 4 values in 2 bits :)
02:09:15FromDiscord<ElegantBeef> sent a code paste, see https://play.nim-lang.org/#pasty=YbzsqYPw
02:09:35FromDiscord<ElegantBeef> `size` is also not bitsize but byte size
02:12:20FromDiscord<ElegantBeef> sent a code paste, see https://play.nim-lang.org/#pasty=YoyCoNQi
02:14:50FromDiscord<ElegantBeef> sent a code paste, see https://play.nim-lang.org/#pasty=IoZOCLXL
02:14:55FromDiscord<ElegantBeef> Enum aliases in Nim, we did it!
02:33:58*krux02_ quit (Remote host closed the connection)
02:37:15FromDiscord<basilajith> Is there any way to stream parse a large Excel file, without converting it to CSV?
03:00:43FromDiscord<ElegantBeef> Probably https://xlsx.nim.wiki/utils.html#lines.i%2Cstring%2Cstring
04:15:11FromDiscord<gokr> In reply to @saiplayz1138 "anyone know how to": A really nice way to deploy a Nim container is Koyeb.com - I just pointed it to Github and it even builds the Docker container for you.
05:13:28*rockcavera quit (Remote host closed the connection)
05:38:10FromDiscord<saiplayz1138> In reply to @gokr "A really nice way": i figured out how to do it myself. i managed to deploy my project on railway but thanks anyways though!
06:16:42*PMunch joined #nim
06:24:22FromDiscord<sent44> i am concern about this https://media.discordapp.net/attachments/371759389889003532/1249972473827692545/0rZJwq2KGhNo.png?ex=66693f15&is=6667ed95&hm=2aa07d1fcf25ade1a38cf0e7b7d308e65d67458b3ec4b3ec1b41a5ecb24b9703&
06:35:07FromDiscord<odexine> I think you need the std prefix
06:54:39Amun-Rawith? why writing 2 lines of code when you can import with and write 4… ;)
06:55:26FromDiscord<sent44> wow strange import behavior
07:00:04PMunchWith is github.com/zevv/with
07:01:44PMunchTo import std/with you need `import std/with`
07:02:17PMunchThis works fine: https://play.nim-lang.org/#pasty=EwpiOnef @sent44
07:11:40*Lord_Nightmare quit (Quit: ZNC - http://znc.in)
07:14:31*Lord_Nightmare joined #nim
07:21:21FromDiscord<sent44> i just not expected that nim can search internet for module too↵i used to use std to only clarify which is std module on big project
07:21:30FromDiscord<ElegantBeef> I mean this is unrelated to Nim
07:21:40FromDiscord<ElegantBeef> Well it's slightly related
07:21:58FromDiscord<ElegantBeef> But it's just the way Nim works you can do `--nimblePath: ...` and then import them
07:22:20FromDiscord<ElegantBeef> Nim does not pull from the web, it's just the playground has some preinstalled libraries
07:22:33FromDiscord<ElegantBeef> Pmunch I broke and did start writing that toy allocator 😄
07:23:04FromDiscord<ElegantBeef> If you prefer `pkg/...` and `std/...` your import confusion goes away quite nicely
07:24:04PMunch@sent44, as @ElegantBeef pointed out its just that the playground has some pre-installed packages. This list to be specific: https://github.com/PMunch/nim-playground/blob/master/docker/packages.nimble
07:24:26PMunchAnd @ElegantBeef hooray! Looking forward to see what comes of it
07:25:02FromDiscord<ElegantBeef> Still a minor point of contention that I have 0 idea how to nicely say "we're operating on X" without pipes or some other IPC
07:25:48FromDiscord<sent44> In reply to @elegantbeef "Nim does not pull": i was replicated result from computer to sandbox to check if sandbox has same error↵on pc somehow also require std to fix
07:26:57FromDiscord<ElegantBeef> You have `with` installed
07:27:21FromDiscord<ElegantBeef> When you compile with `nim` without `nimble build` it accesses all globally installed libraries
07:27:41FromDiscord<ElegantBeef> `with` in the stdlib requires being imported with `std`
07:29:24FromDiscord<ElegantBeef> You can also do `--noNimblePath` iirc to clear the nimble path
07:29:30FromDiscord<sent44> strange, i guess nimlanguageserver package has with as dependency as i do not install other package
07:29:53FromDiscord<ElegantBeef> Well `nimble uninstall with` will show what depnds on it
07:30:08FromDiscord<sent44> i will test
07:32:58FromDiscord<ElegantBeef> Pmunch for your current usage of the IPC how are you invoking things across the barrier?
07:34:39FromDiscord<sent44> ipc?
07:34:56*__________ quit (*.net *.split)
07:34:56*FromDiscord quit (*.net *.split)
07:34:56*attah quit (*.net *.split)
07:34:57*void09 quit (*.net *.split)
07:35:13*void09 joined #nim
07:35:17*FromDiscord joined #nim
07:35:17*attah joined #nim
07:35:17*_________ joined #nim
07:35:34FromDiscord<ElegantBeef> Inter process communication
07:39:20FromDiscord<sent44> In reply to @elegantbeef "Well `nimble uninstall with`": i check it and nothing is depend on it↵i just freshly install nim without choosenim on the new pc in morning and after run finish.exe i add 2 path variable then i install nimlanguageserver and that is it
07:39:47*PMunch quit (Remote host closed the connection)
07:40:22FromDiscord<sent44> (edit) "In reply to @elegantbeef "Well `nimble uninstall with`": i check it and nothing is depend on it↵i just freshly install nim without choosenim on the new pc in morning and after run finish.exe i add 2 path variable ... then" added "that require in installation page"
07:42:14*derpydoo joined #nim
07:46:30*syl joined #nim
07:47:49FromDiscord<sent44> so nimlanguageserver is really depend on with↵why it is say nothing when uninstall https://media.discordapp.net/attachments/371759389889003532/1249993475412332585/Screenshot_20240611_144615_GitHub.jpg?ex=666952a4&is=66680124&hm=5c087ea10fcbd9bc3874e298b22ebe5fb93c2d9fdcd2d885b07cf7c897dcbdc6&
07:48:01FromDiscord<ElegantBeef> Cause it's a binary
07:48:08FromDiscord<ElegantBeef> It's needed to build but not to run
07:48:14FromDiscord<sent44> oh
07:50:52*PMunch joined #nim
07:51:41*redj quit (Ping timeout: 240 seconds)
07:52:22*redj joined #nim
07:52:25FromDiscord<albassort> alright beef↵i have a strut which has a UncheckedArray[T] in it.↵ I construct that struct, into an array of UncheckedArray[T] but, for each member of that array, the c array is dealloced
07:53:48FromDiscord<albassort> e.g an c array of a struct which have a c array as property, results in the c array being garbage data in C and being read from nil in nim
07:54:11FromDiscord<ElegantBeef> Well without the C -> Nim translation you're doing i cannot say much
07:55:08FromDiscord<albassort> its nim -> c
07:55:23FromDiscord<albassort> im getting issues in both nim -> nim and nim -> c
07:55:30FromDiscord<ElegantBeef> Well without code...
07:56:14FromDiscord<albassort> sent a code paste, see https://play.nim-lang.org/#pasty=MXaFHyCj
07:56:20FromDiscord<pmunch> In reply to @elegantbeef "Still a minor point": Locks?
07:56:29FromDiscord<albassort> the last line results in segfault
07:56:30FromDiscord<ElegantBeef> No I mean calling the code pmunch
07:57:01FromDiscord<ElegantBeef> God this code is so poorly formatted 😄
07:57:04FromDiscord<pmunch> In reply to @elegantbeef "Pmunch for your current": Ah, well I don't. Basically the producer just puts things into the ring buffer, and the consumer checks to see if there are new elements.
07:57:21FromDiscord<pmunch> So all calling is just implicit
07:57:24FromDiscord<ElegantBeef> Ah
07:58:29FromDiscord<ElegantBeef> `sizeof(KeyType) len(a)` is wrong
07:58:58FromDiscord<ElegantBeef> that should be `cast[ptr UncheckedArray[KeyTypes]](create(KeyTypes, len(a)))`
07:59:09FromDiscord<albassort> In reply to @elegantbeef "God this code is": most of my code is in rust so im just doodling in nim to test it
07:59:26FromDiscord<ElegantBeef> Right, I just ran nph over it so I could read it
07:59:33FromDiscord<ElegantBeef> `a : b` is inheritly unreadable
07:59:35FromDiscord<ElegantBeef> Fite me
07:59:53FromDiscord<albassort> yeah and you think using return is unreadable
07:59:59FromDiscord<ElegantBeef> No I just think it's silly
08:00:06FromDiscord<ElegantBeef> As it removes the benefit of implicit returns
08:00:21FromDiscord<albassort> you probably prefer C returns where you put put pointers as parameters and set them in the function
08:00:24FromDiscord<ElegantBeef> If you have an expression, have an expression
08:00:31FromDiscord<ElegantBeef> No cause Nim has NVRO
08:00:43FromDiscord<albassort> i meant in abstract not in nim
08:00:56FromDiscord<ElegantBeef> I don't write C
08:01:00PMunchI guess if I wanted calling across the IPC then I'd set up a dispatcher. It would come with a small memory region that has a semaphore and some extra space. To call a function you would put your arguments in the extra space, along with the function you'd want to call, and then signal the semaphore. The dispatcher would just be locked on the semaphore and when triggered construct a call.
08:01:03FromDiscord<ElegantBeef> Checkmate
08:01:20PMunchI guess you could also use a signal handler instead of a semaphore
08:02:20FromDiscord<albassort> In reply to @elegantbeef "that should be `cast[ptr": yeah switching out those creates works now, why though?
08:02:20PMunch@albassort, result is awesome. So nice to be able to track which thing is going to be returned from a function
08:02:40FromDiscord<ElegantBeef> In reply to @albassort "yeah switching out those": Cause you are giving the space for each element
08:02:54FromDiscord<ElegantBeef> `sizeof(UncheckedArray[T]) == 0`
08:03:18FromDiscord<ElegantBeef> `UncheckedArray[T]` is a non existent type that can only exist inside of an allocation block
08:03:28FromDiscord<ElegantBeef> Which means it's a `ref` or `ptr` abstraction only
08:03:29FromDiscord<albassort> i see
08:03:42FromDiscord<albassort> so i wasn't allocating anything really
08:04:07FromDiscord<albassort> i wonder how it was working before lol
08:04:20FromDiscord<ElegantBeef> https://media.discordapp.net/attachments/371759389889003532/1249997630814289950/image.png?ex=66695683&is=66680503&hm=51dc4f3467b26c499ad58f79d6b554824a65424ee970c88427b171fba133487b&
08:04:20FromDiscord<ElegantBeef> Correct
08:05:46FromDiscord<albassort> i guess it was working before out of sheer luck
08:06:07FromDiscord<albassort> i wasn't making it into an array
08:06:11FromDiscord<albassort> it was just 1 struct
08:06:18FromDiscord<ElegantBeef> I'm amazed the allocator does not explode when you do `alloc(0)`
08:08:44FromDiscord<pmunch> I mean that's just an easy days work for the allocator
08:08:56FromDiscord<pmunch> You want zero bytes you say? No problemo!
08:08:59FromDiscord<ElegantBeef> Playing around with that allocator did make me learn that 2.0.4 now wraps `NimMain` with `attribute(constructor)` so no need to manually call `NimMain` in dlls
08:09:12FromDiscord<ElegantBeef> Right, but it's a pointless operation that makes a unusable block
08:09:27PMunchThat's been the case for a little while I think
08:10:29FromDiscord<ElegantBeef> I could've sworn it was required
08:11:15FromDiscord<ElegantBeef> Maybe something was buggy when I last played with it
08:11:17FromDiscord<ElegantBeef> Who knows
08:11:43PMunchIt seems to have been the case back in February 23 at least: https://github.com/nim-lang/Nim/issues/21403
08:12:41PMunchAt least I thought it was the case back then :P
08:34:44*gst joined #nim
08:35:20*gst is now known as xtr00
09:38:46FromDiscord<Phil> Out of curiosity, is it even possible for a thread to know all thead variables it has?↵This discussion made me think for a second of the entire "Threads that quit don't clean up their thread variables" thing
09:40:49FromDiscord<Phil> Because off-the-cuff I couldn't think of a single way to pull that off, given that a codebase may have code that runs on multiple threads, so you can't really know which thread has which threadvar from that codebase
09:41:49FromDiscord<Phil> Maybe a thread can somehow know at runtime which memory it owns and iterate over that or sth? I really can't think of anything given the shared heap
09:48:09FromDiscord<albassort> Hey so, I'm debating if i should release this sequoria binder
09:48:55FromDiscord<albassort> I wanna build sqlite support for storage, but I think releasing that with it is too far maybe?
09:49:03FromDiscord<albassort> (edit) "I wanna build sqlite ... support" added "in"
09:49:12FromDiscord<albassort> (edit) "build" => "put" | removed "in"
09:49:41FromDiscord<albassort> also how would i put something on nimble with cargo as a dependency?
09:50:54FromDiscord<albassort> i guess i can release a static .a file built with musl that would get statically linked
10:23:29FromDiscord<demotomohiro> In reply to @albassort "Hey so, I'm debating": I think writing "Install library X manually before using my library" in README.md is better and safer than automatically install prebuilt binary file.
10:24:24FromDiscord<albassort> In reply to @demotomohiro "I think writing "Install": well, i wrote the binder using the approach of making the code high level in rust first then binding that to nim
10:24:42FromDiscord<albassort> so the library is only like 500 lines and its the same project
10:24:47FromDiscord<albassort> that doesn't make much tense to m
10:24:48FromDiscord<albassort> (edit) "m" => "me"
10:56:25*derpydoo quit (Ping timeout: 272 seconds)
11:10:13*beholders_eye joined #nim
11:34:30FromDiscord<Robyn [She/Her]> With taskpools how would I force the shutdown of a thread that's running a web server?
11:39:04*syl quit (Ping timeout: 246 seconds)
11:44:34*syl joined #nim
12:19:43*beholders_eye quit (Ping timeout: 260 seconds)
12:21:38*beholders_eye joined #nim
12:36:05FromDiscord<pmunch> You can't IIRC
12:36:24FromDiscord<Robyn [She/Her]> Ah...
12:36:26FromDiscord<Robyn [She/Her]> Oh well
12:37:10PMunchYou basically need the thread to listen for a kill command somehow
12:46:45FromDiscord<Robyn [She/Her]> Not sure how I'm supposed to do that when Mummy takes over the thread it's started in
13:17:18PMunchWhy do you want to kill a thread to begin with?
13:18:25PMunchIt seems you can call `server.close()` in Mummy to close it down
13:18:32PMunchThis can be done from another thread
13:23:55*xtr00 quit (Quit: Client closed)
13:40:52FromDiscord<Robyn [She/Her]> In reply to @PMunch "This can be done": But how would I pass the server instance to another thread? I don't understand that
13:41:17FromDiscord<Robyn [She/Her]> In reply to @PMunch "Why do you want": I'm writing tests for my API so I'm simply running the server in another thread
13:49:32PMunchKeep it as a global variable?
13:50:22FromDiscord<double_spiral> how do i get the length of a tuple
13:50:31PMunchTuples don't have length
13:51:14FromDiscord<double_spiral> linked list it is
13:51:25PMunchWhy not a sequence?
13:51:46FromDiscord<double_spiral> Because they things have different types
13:51:54PMunchVariant object?
13:52:09FromDiscord<double_spiral> whazzat
13:52:28PMunchhttps://nim-lang.org/docs/tut2.html#object-oriented-programming-object-variants
13:54:06FromDiscord<Robyn [She/Her]> In reply to @PMunch "Keep it as a": I'll try that once I get back to my PC
13:58:58FromDiscord<double_spiral> Why bother trying to comprehend whatever the hell this is when this is so much easier to understand https://media.discordapp.net/attachments/371759389889003532/1250086881169772667/image.png?ex=6669a9a1&is=66685821&hm=32a73933ac3dd164a82db1f29d3c90f85b20e09b176b0fcd8c5d62ef11bd0006& https://media.discordapp.net/attachments/371759389889003532/1250086881497186304/image.png?ex=6669a9a2&is=66685822&hm=d239ba8066f6b259da3faa3d90bd5cfaf397
13:59:31PMunchWell in that case you only have int data..
13:59:39PMunchThen you could just do `seq[int]`
13:59:50PMunchOtherwise its for speed, safety, and ergonomics
14:00:08PMunchA seqence of variant objects will win on all three over a linked list
14:00:35PMunchAnd they're not exactly complicated, it's just a tagged union..
14:01:20FromDiscord<double_spiral> im struggling to put my thoughts into words in a productive and non offensive manner
14:01:33FromDiscord<double_spiral> nim documentation sucks
14:01:35PMunchHow did you plan on putting different kinds of data in a linked list anyways? You'd need some kind of variant object to store the values
14:01:53PMunch> nim documentation sucks
14:01:57PMunchI can see that you struggle..
14:02:05FromDiscord<kots> Let's hear the unproductive and offensive one, I'm interested
14:02:11FromDiscord<double_spiral> id get banned
14:02:33PMunchI mean if "nim documentation sucks" is the productive and unoffensive one I'm not sure I want to hear the alternative
14:02:42FromDiscord<double_spiral> exactly
14:02:43PMunchWhat are you actually trying to do?
14:04:04FromDiscord<Robyn [She/Her]> Documentation can be lacking but what's the exact issue? Why does it suck?
14:04:48FromDiscord<Robyn [She/Her]> In reply to @double_spiral "Why bother trying to": Also these seem to be nodes for unrelated things, one is for an AST and the other is for a linked list
14:05:26FromDiscord<Robyn [She/Her]> In reply to @PMunch "And they're not exactly": And yeah what PMunch said here is true
14:05:36FromDiscord<double_spiral> In reply to @PMunch "What are you actually": Im trying to make a little UI api(?) for the naylib bindings↵The apraoch i settled on was having objects for the different ui elements which would be contained in some sort of list/array/seq/whatever so that i could iterate over it and call a draw method/function on them
14:06:08FromDiscord<double_spiral> In reply to @chronos.vitaqua "Documentation can be lacking": well first of all the search, for some reason it puts the results all the way at the top of the page and i have to scroll all the way back up
14:06:18FromDiscord<double_spiral> then theres the side bad, that should be on the right, not the left
14:07:20FromDiscord<double_spiral> to be clear all the info is there
14:07:36PMunchWhy would you want the sidebar on the right?
14:07:56FromDiscord<Robyn [She/Her]> In reply to @double_spiral "then theres the side": That sounds like purely a preference thing
14:08:03FromDiscord<double_spiral> Its just the way everything is styled makes it incredibly difficult to comprehend and digest
14:08:25FromDiscord<Robyn [She/Her]> In reply to @double_spiral "well first of all": That can be annoying yeah, it should at least autoscroll for you
14:08:39FromDiscord<double_spiral> In reply to @PMunch "Why would you want": the docs will never be a primary window for the programmer so having it on the left (where every IDE has their side bar) makes the space between the code needlessly larger and asymmetrical
14:08:44FromDiscord<Robyn [She/Her]> I use ctrl+f though so it's never bothered me
14:09:18PMunchAnyways, sounds like you either need a variant object, or some inheritance and dynamic dispatch
14:09:31FromDiscord<Robyn [She/Her]> In reply to @double_spiral "the docs will never": Again that sounds like a preference thing, making it configurable is a good idea though
14:09:57PMunch@double_spiral, what? I open the docs in my browser, so it's my primary window..
14:09:57FromDiscord<double_spiral> i think the biggest issue is the way the data is laid out
14:10:13PMunchAnd I'm pretty sure I still count as a developer..
14:10:42FromDiscord<double_spiral> in what universe does someone not have a split window with their code on the left and the docs on the right
14:10:49PMunchNot saying the docs are perfect or anything, but these are some really strange critiques :P
14:10:58PMunchUhm, in this one?
14:11:12FromDiscord<double_spiral> In reply to @PMunch "Not saying the docs": ong it makes sense in my ocd brain
14:11:14PMunchI have Vim open full-screen in one workspace, and another workspace with Firefox open
14:11:21PMunchKeybinding to switch between them
14:11:33PMunchOr I have them side by side, but both still in separate windows
14:11:49FromDiscord<double_spiral> In reply to @PMunch "I have Vim open": then you have to switch workspaces and needlessly remember what youre trying to do
14:12:22FromDiscord<nnsee> In reply to @double_spiral "in what universe does": i always open docs on the left
14:12:29PMunchI wouldn't call it needless to remember what I'm doing when I go to read docs :P
14:12:47PMunchAnd if I do a lot of back and forth I have two windows side by side
14:12:59FromDiscord<double_spiral> needless like thats an extra step that doesnt have to be taken not needless like its not important
14:13:15FromDiscord<double_spiral> In reply to @nnsee "i always open docs": crazy person ^
14:13:18PMunchWhich side my code is one varies
14:13:45PMunchFor me it depends on which window I opened first
14:14:06PMunchOr if I moved my editor into the same workspace as the docs or vice-versa
14:14:13FromDiscord<double_spiral> (edit) "In reply to @nnsee "i always open docs": crazy person ^ ... " added "↵On num pad keyboards youre gonna naturally focus on the left side which should be your main window, not secondary"
14:14:43PMunchWhat? How does the keyboard factor into this?
14:15:16PMunchIt just sits in front of me on the desk, right now for example I'm looking about 50 degrees to the left to see the monitor I'm typing this on
14:15:28FromDiscord<double_spiral> This is exactly why the docs are so bad, because programmers dont take into account the dynamics of the developer, just the dynamics of the docs
14:15:28FromDiscord<Robyn [She/Her]> In reply to @double_spiral "in what universe does": Me because my monitor is too small lol
14:16:05PMunch@double_spiral, well, apart from the fact that two other developers just told you that they have completely different dynamics to what you have
14:16:14PMunchKinda hard to make something that works for everyone
14:16:16FromDiscord<double_spiral> In reply to @PMunch "What? How does the": On the right a numpad takes up like 20% of space that is used less than the rest
14:16:24PMunchI did have some plans to create a more dynamic docs page though..
14:16:44PMunchAnd? I just push my keyboard 20% further to the right
14:16:58FromDiscord<double_spiral> I have a laptop 💀
14:17:09PMunchWith a num-pad? Heathen
14:17:25FromDiscord<double_spiral> its useful when its useful
14:18:01FromDiscord<double_spiral> In reply to @PMunch "Kinda hard to make": intuitive modular docs sounds like a fun challenge to me
14:18:05FromDiscord<nnsee> i don't have a keyboard with a numpad
14:18:12FromDiscord<double_spiral> I just dont want to use the current ones to understand how to build it 💀
14:18:44FromDiscord<nnsee> just use an userscript to change the location of the sidebar
14:18:48PMunch`nim jsondoc` and just figure it out from there
14:19:01FromDiscord<nnsee> hell, if you use ublock, you already have a css stylesheet editor built in
14:19:08FromDiscord<nnsee> just make a rule that moves the sidebar to the right
14:19:33FromDiscord<double_spiral> Thats a solution to the sied bar problem yeah
14:20:11FromDiscord<double_spiral> Heres another issue, the coloring of the formatting, it should be obvious where sections start and end and a convenient way to do this is coloring
14:20:25FromDiscord<double_spiral> Right now everything sort of just blends together
14:20:42PMunchAgain something which could be fixed by a custom CSS
14:21:01FromDiscord<double_spiral> And also each page is too long which furthers the issue of search results appearing at the top
14:21:02PMunchAnd aren't the headers obvious enough?
14:21:12FromDiscord<double_spiral> In reply to @PMunch "Again something which could": it should not be on the user to make the language useable
14:21:18FromDiscord<double_spiral> this is not javascript
14:21:25PMunchOh yeah, I don't use the built in search. I just Ctrl+f or / to find stuff
14:21:52FromDiscord<double_spiral> I use them too but thats another reason to not have super long pages
14:21:53PMunchThe language is useable, you're just complaining about styling the docs to _your_ preference
14:22:04FromDiscord<double_spiral> then i have to click through a million things to find the thing im actually looking for
14:22:29FromDiscord<double_spiral> In reply to @PMunch "The language is useable,": im complaining about styling the docs to what i think an average user would find more intuitive
14:22:46PMunchBut to be fair the long page thing is one of the main things I wanted to solve with dynamic docs
14:23:32FromDiscord<odexine> i dont think you're an average user.
14:23:58PMunchYou could always fix the CSS and build the docs locally, could even PR your changes if they work well
14:24:16FromDiscord<double_spiral> In reply to @odexine "i dont think you're": Well yeah i wouldnt put everything i suggest into something i would be building for the average user
14:24:25FromDiscord<double_spiral> I dont think the left side bar would make it past that
14:24:34PMunchBut yeah, considering I've never heard any of your complaints about style (the long page and weird search not included) I don't think you're the average
14:24:52FromDiscord<double_spiral> But intuitive coloring and not having super long pages should be what a lot of people would want
14:25:23PMunchI wonder if editors like the one you're using sets some kind of media query or other mechanism to identify themselves
14:25:35FromDiscord<double_spiral> (edit) "should be" => "is what i think"
14:25:41PMunchIf that's the case the sidebar could be moved to the right if it detects that it is in this environment
14:26:11PMunchI'm curious about this colouring idea of yours. If you end up custom styling the docs please share a screen shot
14:26:15PMunchBut I'm off now
14:26:16*PMunch quit (Quit: Leaving)
14:27:01FromDiscord<double_spiral> In reply to @PMunch "I'm curious about this": I can sketch up a rough draft but its very unlikely id actually build them
14:32:09*ntat joined #nim
14:35:51NimEventerNew thread by Qtless: What Araq thinks about HappyX?, see https://forum.nim-lang.org/t/11747
14:43:39FromDiscord<solitudesf> this discussion gives me flashbacks to `& is unreachable`
14:56:00FromDiscord<Robyn [She/Her]> In reply to @PMunch "I did have some": Oh? Via the JSON output for docs?
15:06:24*lucasta joined #nim
15:12:11*krux02 joined #nim
15:13:12FromDiscord<pmunch> In reply to @chronos.vitaqua "Oh? Via the JSON": Yup, that's why I improved it in the first place 😋
15:40:57FromDiscord<pmunch> My basic idea to improve it further is to rip the HTML generation out of the compiler and only have the JSON output there. Then have a separate tool which does JSON -> HTML. This tool would be the default to call when `nim doc` is invoked, but you could specify a different one.
15:41:46FromDiscord<pmunch> Would make it easy for people who want to tweak the HTML output, and ensure that the JSON output always contains the relevant information
15:43:48FromDiscord<pmunch> My goal was to basically ingest the jsondoc output into a database and then be able to search across versions and modules. Would also be possible to search by signature, first type, or return type for example. And it would make it possible to create user sourced docs like e.g. Clojure has
15:46:56FromDiscord<double_spiral> Thank you 🙏
15:50:46strogon14The search results placement is annoying. And also the horizontal size restriction of the sidebar and that it scrolls down with the content, scrolling the search field out of the viewport.
15:51:18strogon14But https://devdocs.io/nim/ exists.
15:54:05FromDiscord<double_spiral> It shouldn't have to though
15:55:01strogon14`nim doc` has a bad smell of NIH syndrom to it, when mature solutions like sphinx, mkdocs etc. exist.
15:55:02FromDiscord<double_spiral> If developers are using 3rd party tools for documentation on the language that should be really embarrassing for it and push it to make better documentation
15:56:15strogon14At least the JSON/Markdown + templates -> doctree part.
15:57:03strogon14(that was re my previous msg, not double_spiral's)
15:59:06FromDiscord<pmunch> In reply to @double_spiral "If developers are using": Again, different people different preferences
16:01:08FromDiscord<pmunch> Hmm, is there a way to get a stable hash of a type in Nim?
16:07:11FromDiscord<pmunch> Like if program A and program B both defined the same type the hash would be the same
16:08:00strogon14Regardless of architecture?
16:09:43FromDiscord<pmunch> Well yeah, if the types match
16:10:36FromDiscord<pmunch> So `hash(int)` would be different between 64 and 32 bit architectures. But `hash(uint8)` would stay the same
16:11:01*def- quit (Quit: -)
16:11:10FromDiscord<pmunch> There is signatureHash in macros, but that takes into account the module it's defined in
16:15:59FromDiscord<nnsee> In reply to @double_spiral "If developers are using": i'm guessing python, elixir and rust should be "embarrassed" as well https://devdocs.io/python/ https://devdocs.io/elixir/ https://devdocs.io/rust/
16:16:17FromDiscord<nnsee> in fact you'd be hard pressed finding something _not_ on devdocs
16:16:47FromDiscord<Phil> Generally if you can avoid doing double work that's preferrable
16:29:19*def- joined #nim
16:37:21FromDiscord<pmunch> Hmm, this is the kind of thing I end up programming myself, only to have someone go "why didn't you just use X to calculate your hash instead?"
16:43:31FromDiscord<odexine> In reply to @nnsee "i'm guessing python, elixir": i mean i think most elixir programmers use the main elixir docs so idk
16:47:54FromDiscord<double_spiral> In reply to @nnsee "in fact you'd be": I think the difference is whether or not people actually use it
16:48:14FromDiscord<double_spiral> When I have a python problem I can just duckduckgo it cause it's a popular language
16:48:30FromDiscord<double_spiral> But Nim is considerably smaller and depends more on docs
16:51:27*lucasta quit (Remote host closed the connection)
16:54:49FromDiscord<exelotl> I've invested quite a lot of time into using Sphinx for my nim library docs - https://natu.exelo.tl
16:55:30FromDiscord<exelotl> solution is a mess that's not really usable by other people at the moment (and has some limitations like not supporting symbols generated by macros etc.)
16:55:38FromDiscord<exelotl> but overall I'm fairly happy with it
16:57:27FromDiscord<exelotl> it lets me structure things how I want (e.g. by topic instead of by symbol type + alphabetical order), and have prose mixed in with API docs
17:21:21FromDiscord<nervecenter> In reply to @double_spiral "When I have a": I came from years of deep Python use and adapted to Nim just fine with official docs. I also have a bit of C background. C documentation across the board is known for being genuinely awful and typically fragmented across everything from bad websites to header file comments. Compared to that, Nim's docs are genuinely quite good.
17:21:33FromDiscord<nervecenter> (edit) "that," => "that (and certain Python docs I will not name),"
17:24:26FromDiscord<double_spiral> You shouldn't need to be an expert with years of experience to navigate docs
17:24:35FromDiscord<nervecenter> It's also a fairly consistent rule that most people here are coming from a lower-level systems world (C and C++) and are not only used to bad docs, but are used to crawling sources and verifying behavior themselves. This modern idea of a first-class "onboarding experience" doesn't even register.
17:24:39FromDiscord<double_spiral> They should be intuitive for everyone with more advanced options if needed
17:24:53FromDiscord<double_spiral> As a beginner I find them very difficult to navigate and read
17:25:14*rockcavera joined #nim
17:25:28FromDiscord<nervecenter> What are you trying to use Nim for?
17:26:22FromDiscord<double_spiral> In reply to @nervecenter "It's also a fairly": Boomer speak, what's the point in being a language if it's going to be gate kept by an experience barrier
17:26:45FromDiscord<double_spiral> In reply to @nervecenter "What are you trying": I'm making a clone for a game
17:26:50FromDiscord<double_spiral> (edit) "In reply to @nervecenter "What are you trying": I'm making a clone for a game ... " added "I like"
17:26:52FromDiscord<nervecenter> Programming languages, especially those with small teams, are not obligated to cater to absolutely everyone.
17:27:15FromDiscord<double_spiral> They should want to if they desire growth
17:27:22FromDiscord<double_spiral> But yeah I agree they aren't obligated
17:27:29FromDiscord<nervecenter> Growth of what?
17:27:37FromDiscord<double_spiral> Oh their ecosystem and community
17:27:43FromDiscord<double_spiral> (edit) "Oh" => "Of"
17:27:50FromDiscord<egomind> I'm honestly not sure if growth should really be a top priority, unless it's commercial
17:27:54FromDiscord<double_spiral> The language is only 1/3 the battle
17:28:22FromDiscord<double_spiral> In reply to @egomind "I'm honestly not sure": What's the point of being a language of its not gonna be used
17:28:29FromDiscord<egomind> It is being used
17:28:29FromDiscord<nervecenter> Yeah "growth" is a priority for languages that want to be everything to all people.
17:28:41FromDiscord<egomind> It just isn't being used by everyone
17:29:57FromDiscord<egomind> Anyway, what exactly do you think the docs lack?
17:30:14FromDiscord<egomind> Or do you think it's more so an issue with a lack of community resources
17:30:24FromDiscord<double_spiral> They don't lack anything, they're just impossible to easily navigate and read
17:30:35FromDiscord<nervecenter> Hard disagree there
17:30:42FromDiscord<egomind> What's an example of easy to navigate docs to you
17:31:12FromDiscord<double_spiral> Ok impossible was an exaggeration, but you shouldn't need docs on docs to navigate docs is my point
17:31:32FromDiscord<nervecenter> You're still being very vague and unclear
17:31:38FromDiscord<nervecenter> Link something you don't like
17:31:50FromDiscord<egomind> Yeah, it would be good to have something actionable
17:32:12FromDiscord<double_spiral> In reply to @nervecenter "You're still being very": I apologize I'm kind of doing 2 things at once and if you would like more indepth explanations you can scroll up
17:32:24FromDiscord<double_spiral> It boils down to the layout and readability
17:32:49FromDiscord<double_spiral> It's all like 2 colors which makes it difficult to skim which is something you'd do if you were looking for quick answers
17:34:33FromDiscord<double_spiral> Which in most cases you would be, unless you're trying to optimize a final draft instead of just get some working code out
17:34:52FromDiscord<nervecenter> I apologize but color theme complaints strike me as pedantry
17:35:06FromDiscord<nervecenter> Maybe I'm not the right person to be talking to you
17:36:03FromDiscord<double_spiral> In reply to @nervecenter "I apologize but color": It genuinely makes it very easy to skim, you learn what certain background colors mean and when scrolling you can quickly identify what section is what which greatly speeds up the process
17:36:20FromDiscord<double_spiral> It's not an aesthetic thing oml
17:36:28FromDiscord<double_spiral> (edit) "It's not ... an" added "just"
17:38:01FromDiscord<double_spiral> And for the record I'm not just using nim for the sake of using nim, it genuinely provides me a niche use case being both low and high level
17:38:36FromDiscord<egomind> Never really struck me as hugely problematic, but that might just be a matter of experience/workflow
17:39:15FromDiscord<egomind> Would you like to contribute to the project by improving the layout and colors of the docs?
17:39:22FromDiscord<double_spiral> 100%
17:39:26FromDiscord<egomind> I can see how it would be useful to some people
17:40:03FromDiscord<double_spiral> But I've only been using for like a week total + I've never contributed to a big project before so there are gonna be some learning curves before I can get to work on anything
17:40:23FromDiscord<double_spiral> Learning curves that would be easier to overcome if the docs were better
17:42:06FromDiscord<egomind> I typically fare well by just looking for what I want using page search (ctrl+f), but not sure if that will work for you
17:42:34FromDiscord<double_spiral> I have used this but there's another issue with the sections of the doc being far far to long
17:42:55FromDiscord<double_spiral> There are a million results which are difficult to parse, especially if I don't know exactly what I'm looking for
17:50:53*beholders_eye quit (Ping timeout: 240 seconds)
17:57:44FromDiscord<Robyn [She/Her]> In reply to @pmunch "Yup, that's why I": Hm fair enough
17:58:08FromDiscord<Robyn [She/Her]> In reply to @pmunch "My goal was to": Idk what that means aha
18:00:28FromDiscord<double_spiral> I think it's developer for making a better interface with more flexible searching
18:06:00FromDiscord<Robyn [She/Her]> I don't get what he meant by searching the database through versions and modules though tbh
18:28:38*coldfeet joined #nim
18:41:54FromDiscord<nnsee> In reply to @odexine "i mean i think": i would bet money that most people writing nim are using the official nim docs
18:42:40FromDiscord<nnsee> nim has _better_ automatic documentation (actually built into the toolchain) than most other programming languages i've used
18:43:13FromDiscord<nnsee> calling them "impossible to navigate" is a stretch and a half
18:45:31FromDiscord<nnsee> and i very much prefer the long form documents, instead of having to navigate through a maze of pages to get to the one bit i'm interested in
18:45:53FromDiscord<nnsee> ... and then having to do that every time i need to see that one bit of information again
18:46:00FromDiscord<double_spiral> I was thinking of moving the current docs to a https://old.
18:46:10FromDiscord<double_spiral> But you know with the actual link
18:46:27FromDiscord<double_spiral> Because I realize that some people do like the current ones
18:47:03FromDiscord<nnsee> why move anything?
18:47:36FromDiscord<double_spiral> This was in the case that new docs are actually made
18:48:24FromDiscord<nnsee> what do you even mean by "new" docs?
18:48:49FromDiscord<nnsee> the (code) documentation is automatically generated
18:48:55FromDiscord<double_spiral> With all due respect I'm not reexplaining my position a million times
18:49:00FromDiscord<double_spiral> If you care you can scroll up
18:49:51FromDiscord<nnsee> I've been following the conversation and all I've been seeing is your personal preference, and nothing that is inherently wrong with the docs we have
18:49:56FromDiscord<nnsee> with all due respect
18:50:58FromDiscord<double_spiral> I guess I don't understand why everyone is so against it
18:52:53FromDiscord<nnsee> against what? changing the colours and layout to suit your preferences better? criticism is fine when it's constructive. when the criticism is "well, I don't like the colours and the side bar on the left", that's not exactly constructive
18:53:50FromDiscord<double_spiral> I think there's a miscommunication here but I'm not exactly sure where
18:54:27FromDiscord<double_spiral> I don't care about the colors because "oohhh pretty colors" I care about colors because when they're used right I think they can make things more readable
18:55:08FromDiscord<double_spiral> The side bar on the left is admittedly more of a personal preference but I believe changing the colors, the search and the lengthy pages would be an overall positive
18:56:48FromDiscord<double_spiral> The content is all there but the layout is lacking
18:57:01FromDiscord<double_spiral> (edit) "is" => "and style are"
18:58:32FromDiscord<threefour> sent a long message, see https://pasty.ee/HaftiwDv
18:59:07FromDiscord<threefour> (edit) "https://pasty.ee/ZvybEfzt" => "https://pasty.ee/dGxALYGq"
18:59:08FromDiscord<Phil> In reply to @double_spiral "It's all like 2": I can see the point here. I'd disagree with how much weight you're putting behind this because typically you don't want to rely on information being conveyed through color for the colorblind, but it is generally good design to also encode information in color
18:59:38FromDiscord<Phil> And I agree it would improve the docs if the color palette choices were better and more stringently applied, though I wouldn't say it'd make a massive difference
19:00:23FromDiscord<nnsee> i honestly don't get the colour gripe (maybe because i'm actually colourblind) - maybe i would need to see an actual example with different colours to understand what you mean
19:00:41FromDiscord<double_spiral> In reply to @isofruit "I can see the": I'm not exactly sure how color blindness works but I was thinking of it being a mono hue palette with only the luminance changing in it
19:00:53FromDiscord<nnsee> oh no
19:00:55FromDiscord<nnsee> oh no no no
19:01:06FromDiscord<nnsee> respectively, hell no
19:01:47*beholders_eye joined #nim
19:01:58FromDiscord<Phil> In reply to @double_spiral "I'm not exactly sure": By being like 20 different versions of color blindness 😄↵The one way to combat this is basically having themes, a default one for the normal sighted and specifically colored ones for the major cases of color blindness. At least one of which should be able to deal with just entirely no color vision
19:02:58FromDiscord<Phil> However that is effort, like a lot
19:03:28FromDiscord<double_spiral> I have no idea how it might be formatted for no color vision but the themes idea is a given for something like fhis
19:03:34FromDiscord<double_spiral> (edit) "fhis" => "this"
19:04:43FromDiscord<double_spiral> Seeing how much objection my idea has it'd be easier just to make something for myself then to try and change the official docs
19:08:03FromDiscord<threefour> Personally, I've never cared to optimize for maximum accessibility in my projects (if you can use em great – if not, sorry). For a programming language, maybe a color scheme selector for the docs is a good idea 🤷‍♂️ I just figure it'll add non-negligible complexity to the existing code.
19:09:48FromDiscord<Phil> In reply to @threefour "Personally, I've never cared": The code likely already exists given light an dark theme
19:10:05FromDiscord<Phil> It just takes a designer with a lot of time to set up a couple more themes properly and slot them into the dropdown
19:20:57*ntat quit (Quit: Leaving)
20:08:52*coldfeet quit (Remote host closed the connection)
20:50:41*jjido joined #nim
21:14:58FromDiscord<riku5543> sent a long message, see https://pasty.ee/gnFKsPgo
21:37:49NimEventerNew thread by TKD: How to write the Nim version of a C function pointer and pass it as argument to C function, see https://forum.nim-lang.org/t/11748
21:49:58FromDiscord<double_spiral> I'm glad I'm not the only one who manually types addresses in the url bar
22:14:29*jjido quit (Quit: My laptop has gone to sleep. ZZZzzz…)
23:29:01*beholders_eye quit (Read error: Connection reset by peer)
23:34:30*beholders_eye joined #nim