<< 23-02-2023 >>

00:48:43FromDiscord<Void> sent a code paste, see https://play.nim-lang.org/#ix=4oWc
00:48:55FromDiscord<Void> (edit) "https://play.nim-lang.org/#ix=4oWc" => "https://play.nim-lang.org/#ix=4oWd"
00:57:35FromDiscord<sOkam!> In reply to @Void "I was watching a": araq is beyond smart. really hard to grasp what he does and how he explain things, unless you are at his level or similar enough
01:02:09FromDiscord<sOkam!> sent a long message, see http://ix.io/4oWf
01:03:17FromDiscord<sOkam!> filtering is done with the foldl template, which seems to use another lambda with iterators↵its super complex code, so probably someone else knows how to explain it better. but thats the simplest overview
01:04:07FromDiscord<Void> This guy must be a legit genius. Such a cool guy.
01:04:17FromDiscord<sOkam!> he is legit genius, definitely
01:04:34FromDiscord<Void> I mean he did create a programming language after all
01:05:13FromDiscord<sOkam!> he created a -good- language. creating one is actually not too hard, surprisingly. but a good one, and as fully featured as nim... that's something else
01:05:43FromDiscord<sOkam!> (edit) "language. creating one" => "language↵creating a lang" | "surprisingly. but" => "surprisingly↵but"
01:07:14FromDiscord<Void> can we ping someone whos an expert?
01:07:31FromDiscord<Void> now im really curious
01:12:46FromDiscord<auxym> wait what? The code is pretty straightforward. foldl/filter/map are defined and documented in `std/sequtils`
01:13:55FromDiscord<auxym> oh but those use vargargs... still, same principle. They are fundamental building blocks in functional languages
01:14:19FromDiscord<Void> In reply to @auxym "oh but those use": okay but what does it do
01:16:50FromDiscord<Void> I new to nim so cut me some slack
01:16:50FromDiscord<auxym> take numbers 1, 2, 3, 4, 5 -> square them -> keep only the even numbers -> (I'm not sure what take is doing here, is that implementation correct?)
01:17:32FromDiscord<Void> In reply to @auxym "take numbers 1, 2,": I dont know araq wrote it. It was from a tutorial like video he was doing
01:17:37FromDiscord<auxym> `proc(x) = len(xs) - n < len(xs)` this looks like a bug, the `x` argument is never used, plus it would always return `true`
01:17:55FromDiscord<Void> In reply to @auxym "`proc(x) = len(xs) -": why would araq write a bug lol what
01:18:01FromDiscord<sOkam!> 🙈
01:18:17FromDiscord<auxym> well can you link the video with timestamp?
01:18:31FromDiscord<auxym> maybe it's a transcriber error 🙂
01:20:16FromDiscord<Void> how do I find live streams
01:24:50FromDiscord<mrgaturus> type inference is kinda annoying https://media.discordapp.net/attachments/371759389889003532/1078125245262725180/image.png
01:26:02FromDiscord<mrgaturus> if i put .cint to every tuple attribute the error is gone
01:27:51FromDiscord<Diogenes of Toronto> You could create a cint vararg function that allows you to process any tuple and then you could just call it on the return
01:28:33FromDiscord<Diogenes of Toronto> If you don't have type inference you are forced to declare all your types so I prefer type inference
01:30:06FromDiscord<Elegantbeef> I do not even know if i'd call this a type inference related issue 😄
01:30:12FromDiscord<mrgaturus> well, i did a workaround https://media.discordapp.net/attachments/371759389889003532/1078126596365488178/image.png
01:30:34FromDiscord<Elegantbeef> Like yes it could be inferred to the result
01:31:01FromDiscord<Elegantbeef> But should a `(int, int, int, int)` implicitly convert to `(cint, cint, cint, cint)`
01:31:15FromDiscord<mrgaturus> type inference only benefits int
01:33:06FromDiscord<mrgaturus> the same thing goes to an array of constants, but at least you need explicit convert one item to infer other items
01:33:18FromDiscord<mrgaturus> (edit) "one" => "first"
01:33:33FromDiscord<Elegantbeef> I'd argue that using a cint tuple is a bit odd
01:34:58FromDiscord<mrgaturus> i'm using opengl
01:36:01FromDiscord<Elegantbeef> Yea but why is a tuple better than array or an object here
01:36:08FromDiscord<Elegantbeef> It's not like you're calling something that uses it
01:40:02FromDiscord<Elegantbeef> Just disregard me though I'm pointlessly talking here 😄
01:40:42FromDiscord<Hourglass [She/Her]> Zippy has different compression levels but I have no clue why there's negatives here, couldn't they of just made it start from 0? https://media.discordapp.net/attachments/371759389889003532/1078129238139486288/Screenshot_2023-02-23-01-35-26-511_com.android.chrome.jpg
01:42:14FromDiscord<mrgaturus> In reply to @Elegantbeef "It's not like you're": that is used only here and other map proc, so i don't need it public https://media.discordapp.net/attachments/371759389889003532/1078129624694923376/image.png
01:43:56FromDiscord<Elegantbeef> Yea i more mean it's used internally and equally as fine to be an array or an object
01:44:13FromDiscord<Elegantbeef> I do not believe in using a tuple as anything but a return type so disregard me like i said
01:46:53FromDiscord<Elegantbeef> cint is just a int32 so you could do `10i32` instead afaik
01:48:24FromDiscord<mrgaturus> is not an error using object type https://media.discordapp.net/attachments/371759389889003532/1078131180043517972/image.png
01:48:40FromDiscord<Elegantbeef> Of course not cause it is locally inferred
01:48:48FromDiscord<Elegantbeef> Return type inference means it goes "this is a int tuple"
01:49:49FromDiscord<Elegantbeef> It sees `(int, int, int, int)` and then tries to convert it to `(cint, cint, cint, cint)` which is a static error
01:51:42FromDiscord<Elegantbeef> Object construction goes "Hey this has to fit a cint, so see if it's valid for that"
01:52:07FromDiscord<mrgaturus> even using (x: 0, y: 0, w: 256, h: 256) on that tuple is still a (int, int, int, int) and not (cint, cint, cint, cint)
01:53:08FromDiscord<Elegantbeef> What?
01:53:17FromDiscord<Elegantbeef> Of course it is cause it doesnt have the type information
01:54:15FromDiscord<Elegantbeef> This works fine
01:54:17FromDiscord<Elegantbeef> sent a code paste, see https://play.nim-lang.org/#ix=4oWq
02:05:51*estiquelapice_ quit (Ping timeout: 248 seconds)
02:06:34*estiquelapice joined #nim
02:11:13FromDiscord<Dudugz> In reply to @Hourglass, When the Hour Strikes "Zippy has different compression": It's a zlib thing, default compression is -1
02:11:47FromDiscord<Dudugz> Interestingly I also used zlib today using zippy to compress some data with header
02:11:52FromDiscord<Hourglass [She/Her]> In reply to @Dudugz "It's a zlib thing,": Fair, it just threw me off
02:12:07FromDiscord<Hourglass [She/Her]> In reply to @Dudugz "Interestingly I also used": I'm using it to handle compression in the Minecraft protocol aha
02:12:38FromDiscord<Dudugz> I'm using it to compress bytes of a captcha system that I use here
02:13:42FromDiscord<Dudugz> I would even use the standard zlib but I would end up having to install zip just to get the dll
02:15:02FromDiscord<Hourglass [She/Her]> Yeah that's fair
02:18:00FromDiscord<auxym> In reply to @Dudugz "Interestingly I also used": isn't zippy pure nim? ie not relying on zlib
02:19:04FromDiscord<Dudugz> Yes that's why I used zippy, it offers zlib compression, if I used std/zip for compression I would have to install zip on the pc to get the zip.dll file
02:22:17FromDiscord<auxym> oh
02:22:51FromDiscord<Hourglass [She/Her]> Ugh, the packets reuse IDs quite a bit, like 3 different formats share the same ID
02:23:07FromDiscord<Dudugz> It was pure luck, if I hadn't found zippy I would have converted the module I have to Lua, I have a LibDeflate made in pure Lua
02:23:47FromDiscord<Hourglass [She/Her]> I don't know how to store this in a way that makes serialisation and deserialisation easy
02:23:50FromDiscord<Dudugz> In reply to @Hourglass, When the Hour Strikes "Ugh, the packets reuse": Hm, is this bad in your case? Generally I like to create servers with simple and direct packets
02:25:35FromDiscord<Hourglass [She/Her]> In reply to @Dudugz "Hm, is this bad": https://wiki.vg/Protocol#:~:text=the%20first%20packet.-,Serverbound,This%20causes,-the%20server%20to↵ https://wiki.vg/Protocol#:~:text=follows%20this%20packet.-,Status,Status%20Response,-Packet%20ID↵↵https://wiki.vg/Protocol#:~:text=the%20handshake%2C%20before,no%20fields
02:25:54FromDiscord<Hourglass [She/Her]> Means I can't use an enum and have clearcut procs for handling each type of packet
02:26:24FromDiscord<Dudugz> Ugh
02:26:49FromDiscord<Dudugz> I hate Java, just remembering the days trying to create mods for mc...
02:27:06FromDiscord<Hourglass [She/Her]> Part of the reason I wanted to work on this xD
02:27:08FromDiscord<Dudugz> But yeah, I understand your pain regarding packets
02:27:27FromDiscord<Hourglass [She/Her]> Would pave the way to some fun ideas i could tinker with in a language I'm comfortable with
02:27:41FromDiscord<Hourglass [She/Her]> In reply to @Dudugz "But yeah, I understand": Yeahhh, not sure how I'm supposed to parse this cleanly really
02:28:48FromDiscord<Hourglass [She/Her]> I could have a proc for each ID specifically and then use the context to figure stuff out?
02:29:58FromDiscord<Hourglass [She/Her]> Still annoying but somewhat manageable
02:30:58FromDiscord<Dudugz> sent a code paste, see https://play.nim-lang.org/#ix=4oWt
02:31:02FromDiscord<Hourglass [She/Her]> Ngl, I'm not sure how I'm gonna handle multiple clients at once without causing stutters/lag, I am using the async module and it is an asynchronous environment but it'll be pain
02:31:36FromDiscord<Hourglass [She/Her]> Would be nice if MC was that clear cut
02:31:45FromDiscord<Dudugz> Yea
02:32:09FromDiscord<Dudugz> Here I get the category and the sub category so it's easy to work with related things
02:33:11FromDiscord<Hourglass [She/Her]> That's fair
02:33:19FromDiscord<Hourglass [She/Her]> Welp, time to suffer... Yay.
02:33:30FromDiscord<Dudugz> good luck lol
02:34:20FromDiscord<Hourglass [She/Her]> Maybe I should take a break from this, I've made a lot of progress and doing it on my phone isn't exactly fun :p
02:34:34FromDiscord<Hourglass [She/Her]> No access to my pc until the weekend, probably after thoug
02:34:37FromDiscord<Hourglass [She/Her]> Though
02:36:22FromDiscord<Dudugz> :/ That's sad, I also don't like it when I travel and I can't program and to make matters worse I discover the solution to something in the middle of the trip. I'm dying to go home.
02:53:53FromDiscord<Hourglass [She/Her]> Yepp, it sucks but it is what it is really
03:38:10*arkurious quit (Quit: Leaving)
04:28:27*sagax quit (Excess Flood)
04:35:59FromDiscord<ringabout> After const evaluation, the evaluated expression loses its type or its conversion relation. Is it reasonable to reconstruct the conversion relation, especially distinct relations? https://media.discordapp.net/attachments/371759389889003532/1078173349940830218/image.png
04:36:17FromDiscord<ringabout> https://media.discordapp.net/attachments/371759389889003532/1078173427585781770/image.png
04:37:43FromDiscord<Arathanis> are there docs for nimble tasks?
04:37:56FromDiscord<Elegantbeef> It also loses it's static-ness @ringabout
04:39:02FromDiscord<Elegantbeef> sent a code paste, see https://play.nim-lang.org/#ix=4oWF
04:44:44FromDiscord<amadan> In reply to @Arathanis "are there docs for": Theres some here https://nim-lang.org/docs/nimscript.html#task.t%2Cuntyped%2Cstring%2Cuntyped
04:45:39FromDiscord<Arathanis> appreciate it
04:46:15FromDiscord<Arathanis> im hoping somewhere out there exists exhaustive docs about it
04:49:19FromDiscord<ringabout> In reply to @Elegantbeef "It also loses it's": I agree.
04:49:42FromDiscord<ajusa> Nimscripter is pretty neat and very useful
04:50:40FromDiscord<ajusa> Using it to basically hot reload templating languages in Nim
04:57:29*azimut quit (Ping timeout: 255 seconds)
05:04:11*xet7 quit (Ping timeout: 268 seconds)
05:06:23FromDiscord<mrgaturus> sent a code paste, see https://play.nim-lang.org/#ix=4oWJ
05:06:43FromDiscord<Elegantbeef> Like i said this is sem'd as a `(int, int)`
05:06:57FromDiscord<Elegantbeef> it then attempts to convert it to a `(cint, cint)` which is an error
05:07:43FromDiscord<Elegantbeef> sent a code paste, see https://play.nim-lang.org/#ix=4oWL
05:08:18FromDiscord<huantian> Type inference when 😛
05:08:22FromDiscord<Elegantbeef> sent a code paste, see https://play.nim-lang.org/#ix=4oWM
05:10:50FromDiscord<Haze System (they/them)> is there no good way to debug nim code in VSCode?
05:11:28FromDiscord<Elegantbeef> https://github.com/saem/vscode-nim#debugging
05:12:02FromDiscord<huantian> Well that’s a passable way to debug code
05:12:06FromDiscord<huantian> Not a good way
05:12:18FromDiscord<Elegantbeef> the good way is echo 😛
05:12:28FromDiscord<huantian> Or even better print
05:13:29FromDiscord<Haze System (they/them)> In reply to @huantian "Well that’s a passable": what are the problems with it?
05:17:25*xet7 joined #nim
05:26:56FromDiscord<Haze System (they/them)> sent a code paste, see https://play.nim-lang.org/#ix=4oWO
05:32:40FromDiscord<ajusa> sent a code paste, see https://play.nim-lang.org/#ix=4oWS
05:32:54FromDiscord<ajusa> ` Error: 'export' is only allowed at top level`
05:33:10FromDiscord<huantian> You’d have to call the template at the top level
05:33:13FromDiscord<huantian> Like it says
05:33:20FromDiscord<huantian> Since templates are basically copy pasting code
05:33:45FromDiscord<ajusa> 🤦‍♂️
05:34:02FromDiscord<ajusa> I was running it in a unit test, which creates a new block by default. thanks!
05:36:04*Guest84 joined #nim
05:39:40*Guest84 quit (Client Quit)
05:45:47*cnx joined #nim
05:51:57*ltriant quit (Ping timeout: 255 seconds)
05:55:23FromDiscord<Arathanis> when using testament is there a way to name the tests?
07:01:22*kenran joined #nim
07:01:27*kenran quit (Remote host closed the connection)
07:06:00*advesperacit joined #nim
07:09:13NimEventerNew thread by takekikuchi: How to destroy the global dispatcher(gDisp) in asyncdispatch on RTOS ?, see https://forum.nim-lang.org/t/9930
07:56:19FromDiscord<ringabout> In reply to @Elegantbeef "It also loses it's": It seems that consts do what I thought of. https://media.discordapp.net/attachments/371759389889003532/1078223768775831573/image.png
08:00:13*PMunch joined #nim
08:10:14*Notxor joined #nim
08:43:22FromDiscord<Coachonko> In reply to @Hourglass, When the Hour Strikes "Examples?": `:` for types is fine, but control flow also uses it
08:47:18FromDiscord<Elegantbeef> Oh noes not control flow!
08:49:32FromDiscord<Coachonko> Bruh
08:57:04FromDiscord<Phil> In reply to @Elegantbeef "Oh noes not control": Control flow is overrated, we should all be coding without control flow
08:57:11FromDiscord<Phil> !1111
08:57:21FromDiscord<Elegantbeef> Trye
08:57:22FromDiscord<Elegantbeef> True even
09:01:18FromDiscord<Phil> I wonder if there's a language that heavily focusses on functional with obvious control flow
09:01:46FromDiscord<Elegantbeef> Those are dichotomies
09:02:11FromDiscord<SpiderDave> is there an easy way to add a program icon when making an .exe in nim?
09:04:19FromDiscord<Elegantbeef> There isnt a "easy" way but you just do the same thing you do for C/C++
09:07:38FromDiscord<Phil> In reply to @Elegantbeef "Those are dichotomies": I have no experience with languages that focus on functional, so I wouldn't know, but is functional detrimental to control flow?
09:08:05FromDiscord<Phil> I know OO can be due to control flow obfuscation that you get via inheritance
09:08:30FromDiscord<Elegantbeef> Functional is all about writing chaining logic that doesnt use explicit flow control
09:09:05PMunchSeems like you "just" need to set some fields in a structure: https://learn.microsoft.com/en-us/previous-versions/ms997538(v=msdn.10)?redirectedfrom=MSDN
09:15:08FromDiscord<Phil> In reply to @Elegantbeef "Functional is all about": Hmm I don't quite see how yet, I'll keep that in mind for when I one day play around with a functional language
09:22:33FromDiscord<Coachonko> sent a code paste, see https://play.nim-lang.org/#ix=4oXt
09:22:43FromDiscord<Coachonko> Guessing
09:35:18FromDiscord<Phil> That... 😖
09:48:35*ltriant joined #nim
09:49:47FromDiscord<Coachonko> It results in cleaner and streamlined code but you must read every implementation
09:58:43FromDiscord<Phil> I feel like the intent is less clear
09:59:58FromDiscord<Phil> The intent of `doThis(isInStateX())` looks like doThis should always run, but needs the output from isInStateX to decide what to do next.↵It does not convey "This should only run if thing isInStateX"
10:01:57FromDiscord<I have 50GB of nothing on my PC> funny, my process executing a command over ssh dies to pkill unless I use poParentStreams
10:02:38FromDiscord<I have 50GB of nothing on my PC> In reply to @Isofruit "The intent of `doThis(isInStateX())`": check a == b, "foo" is convenient though
10:08:47FromDiscord<I have 50GB of nothing on my PC> is there an obvious way to get output into a string when using poParentStreams?
10:10:18FromDiscord<Coachonko> In reply to @Isofruit "I feel like the": I think once you get used to it, it is clear but not from the top level
10:10:41FromDiscord<Coachonko> As long as you understand every function being called it is very clear
10:12:04FromDiscord<Phil> That really does sound like you must've coded functionally before.↵Because that last line paraphrased is basically "If you understand your code, then your code is very clear!" 😛
10:12:11FromDiscord<Phil> (edit) "before.↵Because" => "before to "get" it.↵Because"
10:12:17FromDiscord<Coachonko> Yup
10:13:29FromDiscord<Coachonko> It sounds like that but the ide shows the return type of every function call on hover, generally. So even if you don't fully understand the implementation, but the function called is properly named, the tooling gives you the return type
10:13:52FromDiscord<Coachonko> And good practice with comments
10:14:19FromDiscord<Coachonko> Lot of assumptions yes
10:15:05FromDiscord<Phil> I mean, ideally I always want guarantees.↵I want "wrong" usages of a function to result in compiler errors.↵I want names to promise me what it does so I don't have to read and understand it, that's why I'm capsuling logic in functions to begin with.↵But that's with my current mindset, so eh
10:15:23FromDiscord<Coachonko> I dropped out of university when professor of functional programming decided not to do lectures and just give us google links while complaining about covid shutting down labs
10:15:41FromDiscord<Coachonko> So I am not that confident in my understanding
10:22:02FromDiscord<I have 50GB of nothing on my PC> ahem, should I use selectors to read the main process's output? am I stupid?
11:15:31FromDiscord<I have 50GB of nothing on my PC> did anyone have problems with their std/osproc processes getting instakilled by os
11:55:17FromDiscord<enthus1ast> Check the path to the process↵(@I have 50GB of nothing on my PC)
12:44:09*jmdaemon quit (Ping timeout: 255 seconds)
12:45:36*azimut joined #nim
13:15:04FromDiscord<jtv> In reply to @Haze System "getting this error... ": You can do generic debugger installs and get gdb or lldb working. I have a friend using VSCode w/ a working debugger, I can figure out which plugin he's using if needed.
13:26:04*pbsds quit (Ping timeout: 246 seconds)
13:34:42*onetwo quit (Changing host)
13:34:42*onetwo joined #nim
13:37:00*Notxor quit (Remote host closed the connection)
13:38:15FromDiscord<Hourglass [She/Her]> Honestly not sure how I'm supposed to structure the handshake with the client
13:38:26FromDiscord<Hourglass [She/Her]> I've probably hit a roadblock tbh
13:38:34FromDiscord<Hourglass [She/Her]> Need a computer to actually do stuff now
13:39:16FromDiscord<enthus1ast> minecraft server?
13:43:44FromDiscord<Hourglass [She/Her]> In reply to @enthus1ast "minecraft server?": Yep, writing my own implementation
13:45:48FromDiscord<enthus1ast> whats the issue?
13:47:08FromDiscord<Hourglass [She/Her]> I'm just unsure how to structure the handshake with the client tbh
13:48:03FromDiscord<Hourglass [She/Her]> Because I need to obviously make it follow it all in sequence
13:48:04FromDiscord<enthus1ast> in such way the client can understand it \:)
13:48:18FromDiscord<enthus1ast> do you use async or sync network?
13:48:37FromDiscord<Hourglass [She/Her]> I'm using asyncnet aha
13:49:12FromDiscord<enthus1ast> then you send stuff the client expects, then read stuff the client sends,↵awaiting everything
13:49:47FromDiscord<Nerve> Using `var` for a proc parameter essentially means passing a mutable reference to a stack value, is that right? And are non-`ref` `object` types stack-allocated?
13:49:47FromDiscord<enthus1ast> on connect you spawn a clientHandler proc with async check
13:49:57FromDiscord<enthus1ast> asyncCheck
13:50:06FromDiscord<enthus1ast> in the handler proc you speak the protocol
13:50:40FromDiscord<Hourglass [She/Her]> Hm alright then
13:51:06FromDiscord<enthus1ast> i know nothing about the minecreaft client protocol so i cannot really help here
13:51:15FromDiscord<Hourglass [She/Her]> I'm hoping that `AsyncSocket`s are ref objects :p
13:51:29FromDiscord<Hourglass [She/Her]> Since I'm passing them between a shared library and the application
13:51:40FromDiscord<Hourglass [She/Her]> I think they are, probably should double check the docs
13:51:42FromDiscord<Nerve> (edit) "Using" => "Is it right that using" | "value, is that right?" => "value?"
13:52:15FromDiscord<Dudugz> I think they're, on my server i passed AsyncSocket to another handle object and it worked without issue
13:52:37FromDiscord<Hourglass [She/Her]> Sweet
13:54:26FromDiscord<enthus1ast> the reason i mentioned that you start with a proxy server, is that you can work on parsing the protocol, with a simple network server setup
13:55:18FromDiscord<enthus1ast> then on (sucessfull) connect, you store the clients in a table
13:56:29FromDiscord<enthus1ast> sometimes, i wrote a hash proc that could hash AsyncSocket, so the socket is was the key, sometimes i used an incrementing number, maybe the minecraft protocol does have a notion about a "client id" that you could use for the key
13:56:52FromDiscord<Rika> In reply to @Nerve "Is it right that": if the value you're passing is already a stack value, yeah↵non-`ref object` types are stack allocated if they are not contained within a ref(-style) type
13:58:45FromDiscord<Hourglass [She/Her]> In reply to @enthus1ast "sometimes, i wrote a": My idea was to just check the initial handshake packet and then pass it off to the plugins for each version, and I have a connection object to wrap the socket
13:59:02FromDiscord<enthus1ast> but you also need to store all the clients
13:59:14FromDiscord<Hourglass [She/Her]> Yep I already do that with a list
13:59:15FromDiscord<enthus1ast> since you must later fan out stuff to all clients
13:59:53FromDiscord<demotomohiro> @Nerve If I understand correctly, `var` proc parameter is a pointer that can points to stack, heap or static storage.↵About how non-ref object is allocated: https://internet-of-tomohiro.netlify.app/nim/faq.en.html#type-when-to-use-ref-object-vs-plain-object-qmark
13:59:59FromDiscord<enthus1ast> ok a list, how to you handle disconnects?
14:00:12FromDiscord<enthus1ast> so, do the clients have a unique id?
14:00:34FromDiscord<Hourglass [She/Her]> The clients will have UUIDs yeah, that's what I'm gonna use
14:07:03FromDiscord<Nerve> In reply to @demotomohiro "<@143177514385145856> If I understand": Thanks, I'll read this
14:08:19FromDiscord<Dudugz> In reply to @enthus1ast "ok a list, how": In my case I use socket.isClosed() to check and the response from recv() since recv returns empty string when socket is disconnected
14:19:11FromDiscord<Dudugz> sent a code paste, see https://play.nim-lang.org/#ix=4oYD
14:32:07FromDiscord<Gumbercules> In reply to @Dudugz "What is the packet": huh? isn't that a question best posed for the Minecraft discord / community / whatever?
14:32:20FromDiscord<Gumbercules> Not sure anyone here is going to know about Minecraft
14:32:28FromDiscord<Gumbercules> (edit) "Minecraft" => "Minecraft's protocol"
14:32:38*pbsds joined #nim
14:32:48FromDiscord<Dudugz> actually I was asking Hourglass since she's dealing with it
14:32:54FromDiscord<Gumbercules> ah gotcha
14:34:18FromDiscord<Gumbercules> would be need to see more Nim related Minecraft stuff - might draw more interest to the language
14:34:54FromDiscord<enthus1ast> either look at a protocol documentation somewhere, or read the server code
14:35:02FromDiscord<enthus1ast> server / client code
14:35:09FromDiscord<enthus1ast> java is good to decompile
14:35:22FromDiscord<enthus1ast> you get quite good code out of a decompiler
14:42:22NimEventerNew thread by yalexr: How do I declare a proc as returning a (JavaScript) Promise with no return value?, see https://forum.nim-lang.org/t/9931
14:44:52*PMunch quit (Quit: Leaving)
14:49:00FromDiscord<Hourglass [She/Her]> In reply to @Dudugz "What is the packet": For the uncompressed format, it's: `Length` + `Packet ID` + `Data`↵For the compressed format, it's: `Compressed Length` + `Uncompressed Length` + `Packet ID` + `Data`
14:49:17FromDiscord<Hourglass [She/Her]> I'm using a stream to read and write data
14:49:37FromDiscord<Hourglass [She/Her]> In reply to @Gumbercules "would be need to": Yeah I'm attempting to make a somewhat modular server aha
14:49:49FromDiscord<Hourglass [She/Her]> In reply to @enthus1ast "either look at a": Wiki.vg is my saviour for this lol
14:50:00FromDiscord<Dudugz> Hmm mine is way more simple, ``TokenC`` + ``TokenCC`` + ``Dynamic Data``
14:50:25FromDiscord<Hourglass [She/Her]> It's just Minecraft being a hell hole lol
14:50:30FromDiscord<Dudugz> Yea lol
14:53:26FromDiscord<Rika> what does tokenc and cc mean?
14:59:20FromDiscord<Hourglass [She/Her]> How am I supposed to listen to websockets for incoming packets?
14:59:49FromDiscord<Hourglass [She/Her]> Socket not websocket
14:59:56FromDiscord<Hourglass [She/Her]> I keep mixing it up out of habit
15:00:41FromDiscord<Dudugz> sent a long message, see https://paste.rs/rpv
15:01:01FromDiscord<Dudugz> In reply to @Hourglass, When the Hour Strikes "I keep mixing it": Your socket must have the parameter ``buffered=false`` and you can use ``socket.recv(length)``
15:01:04FromDiscord<Rika> In reply to @Hourglass, When the Hour Strikes "How am I supposed": it depends whether you're using tcp or udp
15:01:27FromDiscord<Rika> i dont know which minecraft server uses
15:03:37FromDiscord<Hourglass [She/Her]> In reply to @Rika "it depends whether you're": Using TCP for Java edition via the asyncnet module, I'm not sure how I'm supposed to actually constantly listen to them
15:03:54FromDiscord<Hourglass [She/Her]> In reply to @Dudugz "Your socket must have": Buffering is pretty important though? Otherwise I'd miss packets
15:04:24FromDiscord<Hourglass [She/Her]> I think I have a rough idea on what to do
15:04:37FromDiscord<Hourglass [She/Her]> But I can't put it into words
15:04:54FromDiscord<Hourglass [She/Her]> Pseudocode time
15:06:56FromDiscord<Dudugz> Hm, idk i don't have packet loss without buffering
15:07:17FromDiscord<Dudugz> Do you mean to have multiple clients? I made a simple helper for my server
15:09:05FromDiscord<Hourglass [She/Her]> sent a code paste, see https://play.nim-lang.org/#ix=4oZ6
15:09:29FromDiscord<Dudugz> Yea then u can use asyncCheck to call clientHandler
15:09:45FromDiscord<Hourglass [She/Her]> Alright, sweet! Thanks!
15:10:15FromDiscord<Dudugz> don't mind the horror :p it's my first time with Nim https://media.discordapp.net/attachments/371759389889003532/1078332969602781184/image.png https://media.discordapp.net/attachments/371759389889003532/1078332970059972618/image.png
15:11:54FromDiscord<Hourglass [She/Her]> Semicolons are optional and i think they're typically discouraged fyi xD
15:12:04FromDiscord<Hourglass [She/Her]> But i still think that code is alright really
15:12:16FromDiscord<Dudugz> Yea but I'm used to them
15:12:29FromDiscord<Hourglass [She/Her]> Yeah that's fair
15:12:59FromDiscord<Dudugz> I programmed a lot of C and JavaScript so I kind of got used to it, and I think it's better to discern where an expression starts and ends
15:13:24FromDiscord<Hourglass [She/Her]> That's fair enough, it does give some clarity to it to be fair
15:14:13FromDiscord<Dudugz> the self.servers thing is because i have multiple ports bound
15:25:27FromDiscord<Hourglass [She/Her]> That's fair, I only need one lol
15:30:18FromDiscord<Coachonko> In reply to @Hourglass, When the Hour Strikes "Yep, writing my own": Dayum that's a challenge
16:00:50FromDiscord<Hourglass [She/Her]> In reply to @Coachonko "Dayum that's a challenge": Yeah xD
16:01:29FromDiscord<Hourglass [She/Her]> I've done this in the past but the only thing that actually worked was the server list ping, I just wasn't knowledgeable enough to deal with it
16:12:25*arkurious joined #nim
16:14:58NimEventerNew thread by yalexr: Casting AudioWorkletNode to GainNode, or alternatives, see https://forum.nim-lang.org/t/9932
16:21:07FromDiscord<Dudugz> In reply to @Hourglass, When the Hour Strikes "I've done this in": I would honestly give up at the first moment lol, I find the Minecraft server very complicated
16:21:53FromDiscord<Hourglass [She/Her]> In reply to @Dudugz "I would honestly give": It's complicated but imagine the possibilities :)
16:22:01FromDiscord<Hourglass [She/Her]> ...not that many honestly, but still xD
16:23:30FromDiscord<Hourglass [She/Her]> Would be fun to work on implementing multiple ways to make plugins
16:27:04FromDiscord<eyes> is it possible for a type to have a cleanup method that it runs whenever it falls out of scope
16:27:18FromDiscord<eyes> (edit) "is it possible for a type to have a cleanup method that it runs whenever ... it" added "instances of"
16:27:57FromDiscord<enthus1ast> `=destroy`
16:27:58FromDiscord<enthus1ast> https://nim-lang.org/docs/destructors.html
16:28:04FromDiscord<eyes> ah destructor
16:28:10FromDiscord<eyes> yeah sorry i fogor the word
16:28:18FromDiscord<eyes> thank you
16:34:45FromDiscord<Dudugz> In reply to @Hourglass, When the Hour Strikes "Would be fun to": Yea, or implementing support for fabric/forge mods
16:35:32FromDiscord<Dudugz> In reply to @enthus1ast "`=destroy`": I would eventually need this so thanks. Does this also work in case of outputs like CTRL+C?
16:35:41FromDiscord<Raynei486> sent a code paste, see https://play.nim-lang.org/#ix=4oZA
16:35:44FromDiscord<Dudugz> (edit) "outputs" => "process exit"
16:36:40FromDiscord<enthus1ast> this idk, but you'll see different timings with arc/orc or refc↵(@Dudugz)
16:36:54FromDiscord<Dudugz> Sure
16:37:28FromDiscord<enthus1ast> arc/orc call the destructur quite soon (imho as soon as it gets out of scope) but refc will call it when it collects
16:39:04FromDiscord<Raynei486> In reply to @Raynei486 "how do you "construct": nvm you must name the fields like `foo(x: 2, : 4)`
16:39:13FromDiscord<Raynei486> (edit) ":" => "y:"
16:39:29FromDiscord<Hourglass [She/Her]> In reply to @Dudugz "Yea, or implementing support": That's completely possible too! Though Forge would be much more annoying
16:40:19FromDiscord<Hourglass [She/Her]> Also Quilt > Fabric any day aha
16:40:30FromDiscord<Dudugz> It's because I don't want to overload the database so when a state updates the database will only be updated in cases of extreme need or when the connection closes. In case the process is closed then the states must be updated before the process ends.
16:40:53FromDiscord<Hourglass [She/Her]> (Quilt's community is just much more friendly, and since most mods don't touch Fabric loader internals, which you shouldn't be doing anyway, nearly all mods work)
16:41:05FromDiscord<Dudugz> Yea
16:41:10FromDiscord<Dudugz> I agree
16:41:53FromDiscord<Dudugz> Honestly they should make a universal mod loader, it would be much better, there are fabric mods that I want to test together with forge mods but it's impossible :/
16:41:59FromDiscord<Hourglass [She/Her]> I really want to work on my Nim JVM compiler again but I have no energy for it rip
16:42:48FromDiscord<Hourglass [She/Her]> In reply to @Dudugz "Honestly they should make": PatchworkMC will be worked on for Forge mods on Quilt, previously they used Fabric but, Quilt is adding 'loader plugins' which would allow Forge mods to be loaded 'natively'
16:43:05FromDiscord<Dudugz> Hmm that's interesting
16:43:11FromDiscord<Hourglass [She/Her]> So development halted in favour of waiting for Quilt loader plugins to reach maturity
16:43:45FromDiscord<Hourglass [She/Her]> Not maturity, usability?
16:43:48FromDiscord<Hourglass [She/Her]> Not sure about the word
16:43:56FromDiscord<Dudugz> The only mc mod I find interesting at the moment is the Wizardry Mod (not electrobobs)
16:44:14FromDiscord<Dudugz> You mean until the plugin loader is stable?
16:44:19FromDiscord<Hourglass [She/Her]> Never used it before aha, Create is cool tho
16:44:27FromDiscord<Hourglass [She/Her]> In reply to @Dudugz "You mean until the": The loader plugin loader yeah
16:44:55FromDiscord<Hourglass [She/Her]> Mods can be loaded already and have been for a while now, they're still improving it too which is nice
16:45:59*Guest56 joined #nim
16:51:15*Guest71 joined #nim
16:51:48*Guest71 quit (Client Quit)
16:52:07*Guest56 quit (Quit: Client closed)
17:08:42FromDiscord<I have 50GB of nothing on my PC> me when i start thinking another niche language is better https://media.discordapp.net/attachments/371759389889003532/1078362778517131374/image.png
17:43:05FromDiscord<Haze System (they/them)> In reply to @jtv "You can do ": what do you mean "generic debugger installs"? ye if you could ask how he did it that would be helpful :) i can live without it but having a visual debugger is handy
17:45:34FromDiscord<enthus1ast> please, does someone has a clue how to use the devel nimble develop?
17:45:57FromDiscord<enthus1ast> that it just uses my local folder?
17:46:02FromDiscord<enthus1ast> this is annoying af
17:47:33FromDiscord<enthus1ast> sent a long message, see http://ix.io/4p07
17:47:39FromDiscord<enthus1ast> but this is completely useless
18:10:39FromDiscord<eyes> wahooo
18:10:46NimEventerNew thread by enthus1ast: How to use the new nimble develop?, see https://forum.nim-lang.org/t/9933
18:11:58FromDiscord<eyes> In reply to @enthus1ast "`=destroy`": sorry, I know youre literally asking another question rn, but it seems that with ``orc`` (use by my nim version) destructors are already added, so I get an error: ``cannot bind another '=destroy'``
18:12:08FromDiscord<eyes> i can switch to refc
18:12:27FromDiscord<eyes> but it seems dumb that i simply cannot assign destructors when using orc
18:12:28FromDiscord<enthus1ast> this means
18:12:54FromDiscord<enthus1ast> you must place the destructor before you use it in you code
18:13:00FromDiscord<eyes> ahh
18:13:01FromDiscord<enthus1ast> so on another line in your file
18:27:27FromDiscord<eyes> it works, thank you
18:27:41FromDiscord<eyes> sadly ``nimlsp`` still reads that error in as a diagnostic 😔
18:27:53FromDiscord<eyes> all my files with destructors have nasty red x's on them
18:28:02FromDiscord<eyes> gonna have to look into lsp settings i guess
18:30:16FromDiscord<Dudugz> What are the recommended extensions to use Nim in VSCode? I installed 2 here but all I got was syntax highlighting and in a matter of errors sometimes the IDE alerts and sometimes I need to use nimble run for the IDE to alert
18:31:04FromDiscord<Dudugz> It also doesn't give information about procs imported from external packages.
18:34:12FromDiscord<Phil> nimsaem one↵The other one is not maintained
18:34:26FromDiscord<Dudugz> Sure i'll take a look
18:55:47*junaid_ joined #nim
19:00:01FromDiscord<Arathanis> nimsaem's works pretty well
19:00:08FromDiscord<Arathanis> it has quirks
19:00:17FromDiscord<Arathanis> autocomplete can be dicey at times
19:00:27FromDiscord<Arathanis> seems dicey more often than not tbh
19:00:32FromDiscord<Arathanis> but it works well enough
19:01:27FromDiscord<Phil> My understanding that regardless of what you're doing, nimsuggest is the end all be all behind it all
19:01:31FromDiscord<Phil> And nimsuggest is just slow
19:01:37FromDiscord<Phil> (edit) "And nimsuggest is just slow ... " added "(?)"
19:01:56FromDiscord<Arathanis> in my experience its not just slow, it straight up misses things often
19:02:02FromDiscord<Arathanis> especially stdlib imports
19:02:04FromDiscord<Phil> (edit) "My understanding ... that" added "is"
19:02:18FromDiscord<Arathanis> it hasn't suggested anything in the stdlib while importing for me in quite a while
19:02:22FromDiscord<Phil> Man, having auto-imports would be so sick
19:02:48FromDiscord<Arathanis> maybe that is the fault of nimsuggest, I do not know but it is annoying haha
19:02:53FromDiscord<Arathanis> In reply to @Isofruit "Man, having auto-imports would": agreed!
19:22:08FromDiscord<jtv> In reply to @Haze System "what do you mean": They said the "Native Debug" plugin by WebFreak. I'm sure you'll also need to compile nim with --debuger:native (e.g., switch("debugger", "native") in config.nims)
19:29:57*Notxor joined #nim
19:44:18FromDiscord<Haze System (they/them)> compile nim itself? eh sounds like too much work..
19:45:14FromDiscord<Haze System (they/them)> (edit) "work.." => "work (with having no idea if itd even work since i tried native debug already and it didnt work)"
19:54:10FromDiscord<jtv> @Haze System (they/them) No, just any programs you build with it
19:54:31FromDiscord<Haze System (they/them)> ah okay
19:55:02FromDiscord<jtv> It's probably what you were not doing that was leading to it not working. Add that switch to your config.nims and test from the command line first 🙂
19:55:45*azimut quit (Remote host closed the connection)
19:56:34*azimut joined #nim
19:59:59FromDiscord<Haze System (they/them)> sent a code paste, see https://play.nim-lang.org/#ix=4p0J
20:00:37FromDiscord<jtv> Yeah IDK, I'm on a mac and my friend is on a Linux machine. I did install VSCode to test it, and got it working w/ lldb.
20:00:55FromDiscord<Haze System (they/them)> bleh. fucking windows
20:01:19FromDiscord<jtv> Yeah, tho I'm sure someone here would be able to help on getting the native debugger working, that's just not me, sorry :/
20:01:43FromDiscord<Haze System (they/them)> no worries, thanks for trying :)
20:10:06FromDiscord<Coachonko> Only reason I use windows lately is for adobe software and ableton live
20:10:51FromDiscord<Coachonko> But I realize my nim apps wouldn't run on windows
20:13:17FromDiscord<Haze System (they/them)> only reason i do is cuz i have a gaming laptop which is impossible to run Linux well on ;_;
20:23:30*jmdaemon joined #nim
20:24:08FromDiscord<4zv4l> is there a `freestanding` flag for the compiler ?
20:40:09FromDiscord<demotomohiro> What is `freestanding` flag?
20:40:25FromDiscord<4zv4l> `-os:standalone` was the one I was looking for
20:41:34FromDiscord<Elegantbeef> Think you want `--os:any` now
20:41:44FromDiscord<4zv4l> still trying to understand why those syscalls happen before the `write/exit` ones https://media.discordapp.net/attachments/371759389889003532/1078416389666246757/image.png
20:43:16FromDiscord<4zv4l> sent a code paste, see https://play.nim-lang.org/#ix=4p0T
20:45:58FromDiscord<Phil> And here I thought it meant compiling on a laptop, standing outside in the cold, leaning on nothing!
20:46:06FromDiscord<Phil> (edit) "it" => "freestanding"
20:46:10FromDiscord<4zv4l> nice one !
20:46:11FromDiscord<4zv4l> xD
20:59:36FromDiscord<Elegantbeef> No freestanding is when you mount your PC using tensegrity
21:01:09FromDiscord<Phil> because you're feeling like you're in freefall doing so but in fact haven't moved at all?
21:21:00FromDiscord<auxym> `mount -t tensegrity`
21:22:13FromDiscord<m4ul3r> In reply to @Coachonko "Only reason I use": ableton the one reason i dual boot. i tried to use wine and it was too janky
21:44:23*junaid__ joined #nim
21:45:21*junaid___ joined #nim
21:45:29*junaid__ quit (Remote host closed the connection)
21:45:29*junaid___ quit (Remote host closed the connection)
21:45:29*junaid_ quit (Remote host closed the connection)
21:47:17*azimut quit (Ping timeout: 255 seconds)
21:48:56*azimut joined #nim
21:59:26*azimut quit (Ping timeout: 255 seconds)
22:01:43*azimut joined #nim
22:07:20*nyeaa49284230 quit (Quit: Ping timeout (120 seconds))
22:08:40*nyeaa49284230 joined #nim
22:15:58FromDiscord<Hourglass [She/Her]> In reply to @Haze System "only reason i do": WSL should run well on it in that case?
22:19:00*azimut quit (Quit: ZNC - https://znc.in)
22:19:11FromDiscord<sOkam!> sent a code paste, see https://play.nim-lang.org/#ix=4p1e
22:19:31*azimut joined #nim
22:19:35FromDiscord<Hourglass [She/Her]> In reply to @m4ul3r "ableton the one reason": Honestly, I don't touch Windows unless absolutely necessary, and even then I'd use it in a VM, either way I use a Linux alternative or Wine, and as a last resort I'd use a VM
22:19:43FromDiscord<sOkam!> (edit) "https://play.nim-lang.org/#ix=4p1e" => "https://play.nim-lang.org/#ix=4p1f"
22:20:14FromDiscord<Hourglass [She/Her]> sent a code paste, see https://play.nim-lang.org/#ix=4p1g
22:20:44FromDiscord<Hourglass [She/Her]> Not sure about the exact reason why it works this way, but it should be mentioned in the docs
22:21:34FromDiscord<sOkam!> if i change to fmt it goes back to the EOF error
22:22:49FromDiscord<Haze System (they/them)> In reply to @Hourglass, When the Hour Strikes "WSL should run well": the problem is i wanna use gui stuff too, which i haven't been able to get working well. and windows is just a pain compiling things for in general
22:22:56FromDiscord<sOkam!> sent a code paste, see https://play.nim-lang.org/#ix=4p1h
22:23:55FromDiscord<Hourglass [She/Her]> In reply to @sOkam! "if i change to": Hm, might not be escapable
22:24:19FromDiscord<Hourglass [She/Her]> Could do`&"{'{'} {x: .4f}, "`?
22:24:24FromDiscord<Hourglass [She/Her]> Messier but should work
22:24:43FromDiscord<Elegantbeef> The hell are you doing
22:24:52FromDiscord<sOkam!> thats entering bash territory syntax 🤢
22:24:55FromDiscord<Hourglass [She/Her]> In reply to @Haze System "the problem is i": Aah, what compiler are you using?
22:25:01FromDiscord<Hourglass [She/Her]> In reply to @sOkam! "thats entering bash territory": Lmao yep
22:25:29FromDiscord<Hourglass [She/Her]> sent a code paste, see https://play.nim-lang.org/#ix=4p1i
22:25:46FromDiscord<Elegantbeef> sent a code paste, see https://play.nim-lang.org/#ix=4p1j
22:25:56FromDiscord<Elegantbeef> rtfming is literally free
22:26:25FromDiscord<Haze System (they/them)> In reply to @Hourglass, When the Hour Strikes "Aah, what compiler are": uh, mingw for things in general. but the problem i was having earlier with vscode seems more easily solvable with a Linux distro
22:27:13FromDiscord<Elegantbeef> https://nim-lang.org/docs/strformat.html#implementation-details
22:28:36FromDiscord<sOkam!> ty beef, that worked ✍️
22:29:23FromDiscord<sOkam!> I was reading exactly that, but nothing I tried was working for only one instance of {
22:35:53*azimut quit (Ping timeout: 255 seconds)
22:36:56*azimut joined #nim
22:43:47*advesperacit quit ()
22:46:42FromDiscord<sOkam!> @ElegantBeef I take back what I said about the new error formatting in devel. It looked promising in simple cases, but it gets ugly real fast 😔
22:46:56FromDiscord<Elegantbeef> Yay!
22:47:12FromDiscord<sOkam!> for functions with not many parameters, its super good. but... big functions are really bad to follow
23:43:58*Notxor quit (Remote host closed the connection)