<< 21-04-2020 >>

00:00:04FromDiscord<Elegant Beef> Lol
00:00:38FromDiscord<Rika> i would say "and discord isnt battle tested?" but we all know that it fucking isnt
00:00:53FromDiscord<Elegant Beef> Inb4 you take a 19th century naval ship into modern combat, "Hey it's lasted this long it can last longer!"
00:01:45FromDiscord<Elegant Beef> I really want a good alternative to discord, but it requires everyone also moving over, so sadly im pretty much locked to discord, cause of their third party client limitations
00:02:13FromDiscord<Rika> lol they actually dont give a shit
00:02:24FromDiscord<Elegant Beef> I mean they dont actually, but it's in the TOS, im a good boy!
00:02:29FromDiscord<Rika> sure
00:02:54FromDiscord<Yardanico> But did you read Nim's copy of the MIT License?!
00:03:15FromDiscord<Rika> but its the MIT licens
00:03:17FromDiscord<Rika> e
00:03:39FromDiscord<Yardanico> Yes, that's what I meant
00:04:04FromDiscord<Elegant Beef> *What's his point?*
00:04:30FromDiscord<Rika> yes
00:04:38FromDiscord<Yardanico> Ok now I'm going to sleep for real
00:04:44FromDiscord<Elegant Beef> ok buh bye
00:04:49FromDiscord<Rika> its 8 am and i havent slept yet either
00:04:51FromDiscord<Elegant Beef> Dont let the proprietary demons bite
00:05:10FromDiscord<Rika> dont let the affero demons bite
00:09:05FromGitter<sealmove> Is there no documention for imGui?
00:10:16FromGitter<sealmove> Also it seems overly focused on game development
00:11:16FromDiscord<Elegant Beef> It can be used anywhere
00:11:20FromDiscord<Elegant Beef> There isnt much documentation for it
00:11:27FromDiscord<Elegant Beef> The github issues are rather helpful
00:11:42FromDiscord<Elegant Beef> also the imgui method names in imgui.nim are pretty good
00:12:09FromDiscord<Elegant Beef> That console was my first usage of imgui, it's not too bad use imo
00:13:54FromGitter<sealmove> I see... It looks very powerful so it's sad there is no documentation.
00:15:11FromDiscord<Elegant Beef> The imgui documentation and cimgui examples still apply
00:15:39FromDiscord<Elegant Beef> https://github.com/ocornut/imgui#how-it-works
00:16:14FromDiscord<Elegant Beef> Suppose this is better
00:16:14FromDiscord<Elegant Beef> https://github.com/ocornut/imgui/wiki
00:17:17FromGitter<sealmove> This is probably the closest to a real documentation there is: https://github.com/ocornut/imgui/blob/master/docs/FAQ.md#qa-usage
00:18:27skrylar[m]@sealmove immediate mode guis are more or less the exclusive domain of games
00:20:13FromDiscord<Elegant Beef> Shadered is one of the programs that isnt a game that bases it's entire UI in imgui, although it's a 3D shader sandbox so...
00:21:05skrylar[m]when i did deep reads on them its mostly single developers that like immguis and usually for debug consoles, their popularity rolls off sharply when more than one person touches the code or if you have useless concerns like "usability" or "a UI designer" :wink:
00:21:25FromGitter<sealmove> hmm, so why did Yardanico recommend it? https://ide.kaitai.io/ weirdly falls into this category?
00:21:56skrylar[m]kaitai structs are neat though
00:22:38FromGitter<sealmove> Yes it's really nice.
00:22:57skrylar[m]i'm not sure what their ide has to do with immgui though?
00:23:53FromGitter<sealmove> Me neither, I know nothing about GUI devel and I am trying to make a clone of what you see but as desktop app so it can support editing (this one is just a viewer)
00:25:36skrylar[m]well immediate mode guis in general have to do with forsaking retained mode (scene graphs, separation of model drawing and logic) so they do things like immediately check if the mouse is in a hot region and then issue drawcalls to react to that, rather than the old PAC/MVC thing of control code deals with reading inputs and then throwing them down event pipelines
00:26:23skrylar[m]so the code reads things like `if (some condition) { draw this box }` instead of a spoderweb of "register this callback to this sensor, then this callback controls the alpha level of that box"
00:27:27FromGitter<sealmove> I see. Then it's not ideal for my use case.
00:27:53skrylar[m]it is possible to do a lot of cache finagling to make this more efficient so you don't ex. knuth-plass an entire block of text every frame because the immgui doesn't have state
00:31:11skrylar[m]over on the browser side with [p]react and vue or riotjs there's a bit more of hooking up dataflow triggers so you just change some relevant variables and a backend handles sending the updates to the retained mode graph (the DOM)
00:33:45FromGitter<sealmove> which one of: ⏎ https://github.com/yglukhov/nimx ⏎ https://github.com/StefanSalewski/gintro ⏎ https://github.com/nim-lang/ui [https://gitter.im/nim-lang/Nim?at=5e9e3f680480c128efd5b938]
00:34:00*rockcavera quit (Ping timeout: 265 seconds)
00:34:17skrylar[m]only one of those i have used is libui which does work, but is quite limited
00:38:37FromGitter<sealmove> this seems to hard :| maybe it's not work it
00:39:16FromGitter<sealmove> contributing to an existing hex editor and adding .ksy highlighting support might be a better solution
00:39:45skrylar[m]maybe :headbandage:
00:40:32FromDiscord<Rika> oof
00:41:35skrylar[m]gtk3 is bearable if you aren't seeking windows support
00:43:23FromGitter<sealmove> desktop apps is a sad story...
00:44:44skrylar[m]yea they haven't been replenishing the desktop talent, same for mainframes
00:49:19FromDiscord<Chiqqum_Ngbata> I read the entire thread on serialization for kaitai structs recently
00:50:21FromDiscord<Chiqqum_Ngbata> Skeptical that it will happen
00:51:48FromGitter<sealmove> What will happen?
00:52:25FromGitter<sealmove> ah
00:53:23FromGitter<sealmove> Yeah never thought about that till you mentioned it just now xD
00:56:02FromGitter<sealmove> Yeah would be awesome to parse files with Kaitai, edit them in native data structure level, and serialize them back, but we don't even have a good way to edit bytes in a hex editor xD
00:56:30FromGitter<sealmove> There is a lot of work to be done on this field
00:56:50FromDiscord<Chiqqum_Ngbata> It took me a long time to figure out that you're supposed to drag-n-drop sample files into their IDE
00:57:19FromGitter<sealmove> There is a button to upload
00:57:27FromDiscord<Chiqqum_Ngbata> Must have missed it, lol
00:57:46FromGitter<sealmove> It has an arrow that faces upwards :P
01:07:23FromDiscord<Varriount> Kaitai?
01:08:34FromGitter<sealmove> <_< This project really hasn't get the attention it deserves. Maybe YAML is just that hated.
01:11:54FromDiscord<Varriount> sealmove: What project
01:12:45*endragor joined #nim
01:13:34FromGitter<sealmove> https://kaitai.io/
01:13:37*jds_dizzy_ joined #nim
01:14:04FromGitter<sealmove> Btw it has Nim support :P
01:14:08jds_dizzy_How to turn ptr char into a string?
01:14:58*xcm quit (Remote host closed the connection)
01:15:04leorize[m]depends on this ptr char you have
01:15:13leorize[m]is it a NUL terminated string?
01:15:20*zacharycarter joined #nim
01:15:22jds_dizzy_Pretty sure
01:15:23leorize[m]or does it have a length?
01:15:38leorize[m]if you're sure that it's a nul terminated one
01:15:54leorize[m]then `$cast[cstring](your ptr char here)`
01:16:13jds_dizzy_And if it’s length based?
01:16:50FromDiscord<Varriount> Ah, it's like https://construct.readthedocs.io/en/latest/intro.html
01:17:34FromDiscord<Varriount> sealmove: Is there any reason one couldn't use something like NPEG for this?
01:18:29*xcm joined #nim
01:18:43leorize[m]jds_dizzy_: https://play.nim-lang.org/#ix=2iSW
01:19:07leorize[m]there's also a pattern for having C proc put things inside Nim's string directly
01:19:22leorize[m](ie. using Nim's string as your buffer)
01:19:34jds_dizzy_Thanks been scratching my head 2 long
01:21:39FromGitter<sealmove> Varriount yes I guess python's construct is quite similar, with the exception that construct is an internal DSL while Kaitai Struct is external. How is NPEG relevant though?
01:24:55*jds_dizzy_ quit (Remote host closed the connection)
01:27:29disruptekit's possible for bots to post messages on irc that only one person can read.
01:27:50disruptekwe could have the bot introduce itself to new users, for example.
01:27:51*zacharycarter quit (Ping timeout: 260 seconds)
01:29:08FromGitter<sealmove> nice
01:29:33disruptektry !help
01:29:42FromGitter<sealmove> !help
01:30:01disruptekwell, you have to be on irc.
01:30:37Prestige!help
01:30:57Prestigenice.
01:31:26disruptekit could work for the other networks if the bridges were hacked.
01:31:42disrupteknot my department, though. talk to Yardanico.
01:40:15*ptdel joined #nim
01:40:26*ryan_ joined #nim
01:42:43*number_one quit (Ping timeout: 250 seconds)
01:43:40PrestigeHm looks like I'm having an issue with nimble building my project, how strange
01:44:11skrylar[m]i tend to agree with some of the added things from matrix like local room history, and then reject that anything more than an extension was needed, but reinventing the world in json is just how we do things today :shrug: although some of the matrix apis are not bad
01:45:37FromDiscord<Varriount> sealmove: Well, NPeg can parse textual patterns and data structure patterns, so there's no reason it can't parse data patterns too
01:45:50PrestigeI have a nimble task that is just 'exec "nim c src/nimdow.nim"' that fails, but if I run nim c src/nimdow.nim it succeeds lol
01:46:10skrylar[m]though i fear the selection period is long over and even when the super efficient matrix servers are marked as mature, everyone will have already re-centralized under discord, and then will be too entrenched to switch, so. rip.
01:46:17skrylar[m]also yea i dunno why pegs aren't usde for binary data more
01:46:22FromDiscord<Varriount> Though, the fact that it requires a buffer to be passed to it might complicate things.
01:46:34disrupteknah, that's fine.
01:47:10skrylar[m]though i guess since more formats are becoming glorified key/value tags, the impetus for more parsing has gottne kinda less
01:48:14disruptekPrestige: why do you use nimble to build?
01:48:45FromDiscord<Varriount> I remember when Minecraft used null-terminated strings in it's protocol... and had a thread-per-client model that blocked the head on reading strings.
01:49:01skrylar[m]._.
01:49:38FromDiscord<Varriount> https://github.com/MostAwesomeDude/website/blob/master/content/entries/take-a-bow.rst
01:50:19Prestigedisruptek: seemed convenient to have multiple build scripts so I can just do "nimble build" "nimble debug" "nimble release" etc
01:50:25skrylar[m]am quite happy with cbor. single tag byte for type and byte length, doesn't do any weird zag encoding or test bit and read. EBML does unicode's weird read tag bits and then shuffle bytes, and even then you get no type data so you just have to know what data is meant to belong at "field 7"
01:50:27PrestigeI'm new though so 🀷
01:51:23*jds_dizzy_ joined #nim
01:51:57FromDiscord<Varriount> I prefer Nimscript (when I can actually find the documentation on it)
01:52:52skrylar[m](still haven't read up how avros/blender sdna does it; i think they do blit structs to disk, but they also include a schema blob so they handle mutations by giving you an opportunity to check for them but otherwise there is no overhead for "i'm field 7" in every map)
01:52:55PrestigeDo people usuallly have a .nimble file for their packages?
01:52:56*jds_dizzy_ quit (Remote host closed the connection)
01:53:08skrylar[m]isn't it mandatory to be in nimble?
01:53:15PrestigeI would assume so
01:53:18FromDiscord<Varriount> I think it's required for Nimble
01:53:55skrylar[m]i quite like redo, but use pydoit lately :\
01:54:00PrestigeSeems really odd to me that a simple build script would fail though
01:54:12disruptekPrestige: when it comes to nimble, the sky is the limit.
01:54:27skrylar[m]i guess rake can dump out raw makefiles now but haven't used that in a long time either
01:55:19disruptek!repo nimph
01:55:20disbothttps://github.com/disruptek/nimph -- 9nimph: 11Nim package hierarchy manager from the future 🧚 15 59⭐ 4🍴 7& 1 more...
01:55:39PrestigeNimble replacement?
01:55:52FromDiscord<Rika> not yet idts
01:56:03disruptekno, i aimed a little higher for your sake.
01:56:17disruptekand mine.
01:56:32*skrylar[m] is a luddite who just uses submodules xD
01:56:35PrestigeHaha. Well I'm looking forward to it, seeing nimble fall apart
02:00:55disruptekthe future seems to be that package managers will setup packages however they see fit and supply input to a build tool (which is nim, in the case of nimph). then the build tool will configure the compiler if necessary and optionally run the compiler.
02:01:34*zacharycarter joined #nim
02:01:39disruptekso you can plug code into any part of this process.
02:01:40skrylar[m]seems normal enough. you dont run apt every time you run software
02:01:58disrupteki mean, nimph works this way today.
02:02:14disruptekit's more of a standard that nimble may support.
02:02:14*chemist69 quit (Ping timeout: 246 seconds)
02:03:26leorizeVarriount: I found a small problem with the named pipe idea
02:04:05leorizeif someone could guess the seed I use for the random number generator, they can DDoS the program by predicting the next pipe name I'd try to use
02:04:20*chemist69 joined #nim
02:04:29leorizenow I could bring in the system prng to solve this, but is it really a good way?
02:04:49leorizeit'd be really expensive to create an async pipe
02:04:57disruptekjust print a message recommending they switch to linux.
02:05:22skrylar[m]i'm a bit dumb but isn't this a very remote problem with many apis
02:05:33skrylar[m]even linux has some security bulletins about people 'guessing' the result of mktemp
02:05:57leorizethis is a windows thing, their anonymous pipes can't do async i/o
02:06:04leorizeso I gotta fake it with a named pipe
02:06:08skrylar[m]you can use a crypto gen like blake2x if you really want to minimize guessing chance
02:06:11FromDiscord<Rika> `if someone could guess the seed I use for the random number generator` now what are the odds of this
02:06:29disrupteki dunno, i'm a pretty good guesser.
02:06:46skrylar[m]https://blake2.net/blake2x.pdf i should check how much i would need to adjust to support this
02:07:02skrylar[m]but basically blake has many fun uses, one of which is being abused to generate rolling hashes like this
02:07:16leorizethe seed will be the result of getMonoTime at the point where the first async pipe is created
02:07:21leorizethis can be trivially guesses
02:07:24leorizeguessed*
02:07:32skrylar[m]ask the cpu for entropy or the os
02:07:42skrylar[m]then extend it with x
02:07:49leorizeyea but wouldn't it ramp the cost up too hard?
02:08:02*Mister_Magister quit (Ping timeout: 264 seconds)
02:08:08leorizeI got a way to do this by asking windows for 4 bytes of randomness then turn them into hex
02:08:08disruptekno.
02:08:25disruptekit's nothing compared to creating a named pipe.
02:08:25skrylar[m]well you ask for entropy on init time and then run blake2x to get a new pipe name, so how often are you initializing the program or making pipes
02:08:59disruptekif they can collide with your pipe, they can likely read your memory anyway.
02:09:34disruptekif you collide, you get more random.
02:10:01disruptekalso, i know nothing about windows. fwiw.
02:10:30leorizeI do know one thing is that timing attacks are easy to do
02:10:44leorizeif say, someone got an open source nim app running on windows
02:11:00disruptekeasy solution:
02:11:05disruptekprevent nim apps from running on windows.
02:11:11*Mister_Magister joined #nim
02:11:17skrylar[m]what does this have to do with timing attacks
02:11:46skrylar[m]there are many intel cpus you can run something like rdrand and just get entropy from the silicon
02:12:05leorizewell I'm going with the system prng route to solve this
02:12:13skrylar[m]'kay.
02:14:39*Jesin quit (Quit: Leaving)
02:17:18*muffindrake quit (Ping timeout: 246 seconds)
02:18:24leorize[m]fwiw many program out there implement async pipes on windows by using just a simple counter and loop until they get a free pipe
02:19:28leorize[m]a possible topic to look for ddos attack :p
02:19:32*muffindrake joined #nim
02:20:21leorize[m]I'm not sure how practical one such attack would be, but it's there if anyone wants to do research :p
02:20:58FromDiscord<gaurav> Hi All!
02:23:23FromDiscord<gaurav> I need to make a desktop app similar to Adobe Premiere but with higher performance and low memory footprint with GUI as beautiful as Premiere. This would be the only selling point for us. This would be my first Cross Platform Desktop App development and I don't want to fail. Seeking help. Please guide me.
02:25:25*zacharycarter quit (Ping timeout: 264 seconds)
02:25:29leorize[m]well what kind of help are you looking for?
02:25:45leorize[m]I assume that you know what you need to do, right?
02:27:23FromDiscord<KingDarBoja> Hiu guys
02:27:23FromDiscord<KingDarBoja> πŸ˜„
02:28:52FromDiscord<gaurav> > <leorize[m]> I assume that you know what you need to do, right?
02:28:53FromDiscord<gaurav> @gitterirc why would I need the help then Bot?
02:29:08disrupteksend me money; i'll help.
02:29:34FromDiscord<gaurav> > <disruptek> send me money; i'll help.
02:29:34FromDiscord<gaurav> @gitterirc 🍴
02:29:50disruptekwill eat for food?
02:30:14leorize[m]well you can't build an adobe premiere competitor without knowing what you need to implement :p
02:30:43FromDiscord<gaurav> lol
02:30:56FromDiscord<Elegant Beef> Clearly you just wrap kdenlive with a more attractive ui environment and ship it
02:31:24FromDiscord<gaurav> kdenlive?
02:31:36FromDiscord<Elegant Beef> FOSS video edditor
02:31:41disruptekmaybe start with competition research.
02:32:10disruptekbeef: you're hired.
02:32:13FromDiscord<gaurav> why not openshot?
02:32:54Prestigekdenlive is nice, I just need to take the time to set a theme.. the white blinds my eyes
02:33:08FromDiscord<Elegant Beef> I mean i have qt set to dark theme
02:33:16FromDiscord<Elegant Beef> lxappearance saves lives
02:33:21PrestigeThat's what I've yet to do
02:33:33FromDiscord<Elegant Beef> or is it qt5control
02:33:39FromDiscord<Elegant Beef> whatever, im on ubuntu laugh at me πŸ˜„
02:34:04FromDiscord<gaurav> or the latest in the series.. something named with D* I think
02:34:17FromDiscord<Elegant Beef> Also what do you mean why not openshot
02:34:46FromDiscord<Elegant Beef> why not N video editor where n is a video editor that is FOSS
02:35:07FromDiscord<Elegant Beef> I'd say it makes more sense to expand a video editor than start fresh
02:35:16FromDiscord<Elegant Beef> I'd imagine it's a super large undertaking
02:35:47FromDiscord<gaurav> I read about Qt, Glade, Xojo, Revery, VUi.
02:35:52*xcm quit (Remote host closed the connection)
02:36:11leorize[m]the ui is 1/4 of the battle
02:36:37leorize[m]have you decided on which linear editing backend are you gonna use?
02:36:40FromDiscord<gaurav> Openshot is also FOSS and was suggested by one developer.
02:37:26FromDiscord<gaurav> but we need to do the editing on desktop and save it on cloud and then apply AI to it.
02:37:49FromDiscord<gaurav> damn! I have started doubting myself..
02:37:53FromDiscord<gaurav> 😐
02:38:34FromDiscord<gaurav> This is what we are fighting up against.. https://www.youtube.com/watch?v=AtjgVHDvvVg
02:38:37*xcm joined #nim
02:38:48*zacharycarter joined #nim
02:39:03FromDiscord<Elegant Beef> I come from game dev discords, where people with very little experience say "I want to make an mmo" so i sorta have a full meter of "you probably shouldnt do that" saved up
02:39:47FromDiscord<gaurav> I understand how massive it is and I am the one responsible for deciding the tech suite.
02:41:25PrestigeIs it possible to have a map where the values are procs?
02:41:38FromDiscord<gaurav> We can't penetrate the Adobe market unless we are equally good at GUI (flow, gloss, UI and UX) and better in performance (windows switching in fraction of seconds using far less resources)
02:41:40skrylar[m]why wouldn't it be? procs are pointers in the end
02:42:37skrylar[m]Realistically, you aren't going to penetrate the Adobe market period. People who have already functional products on the market right now are having to give them away just to get people to look at them (cf. Da Vinci, Hitfilm.)
02:42:46Prestigeoh maybe I needed to have Table[Foo, proc()]
02:43:05skrylar[m]Sarif is practically handing Affinity products away too
02:43:09FromDiscord<gaurav> @Elegant Beef Any idea on that?
02:43:49FromDiscord<Elegant Beef> Adobe has a monopoly and wont be competed with
02:43:52FromDiscord<gaurav> Few of the developers have warned to use Qt as it has loads of features now and is confusing.
02:44:02FromDiscord<Elegant Beef> It's the exact same as windows in that regard
02:44:18FromDiscord<gaurav> Still Mac rules in performace
02:44:28FromDiscord<Elegant Beef> And the userbase is where again?
02:44:35FromDiscord<Varriount> Eh, any complete UI system will be confusing
02:45:02FromDiscord<Varriount> Either that, or it will be high-level
02:45:24disruptekconfusing is what you make it.
02:46:22skrylar[m]i tend to think everything at all with this thesis is wrong, for many reasons, but /shrug
02:46:34FromDiscord<Varriount> disruptek: UI has to deal with things like accessibility, internationalization (not just translation, but RTL vs LTR), and varying display profiles and forms.
02:46:51FromDiscord<Varriount> That's a lot to implement, cover, and learn.
02:47:48disruptekto repeat,
02:47:52disruptekconfusing is what you make it.
02:47:54skrylar[m]performance on macs "ruling" for one, is just hilarious. no, they are slower, they have avoided refreshing the pro workspace models quite often and the laptops dont even have cooling vents! they are UNDERCLOCKED
02:48:17disruptekyes.
02:48:29skrylar[m]all that performance is because stuff like final cut smartly hands some tasks off to the gpu, which is something adobe/avid still wont do
02:48:51FromDiscord<Varriount> skrylar: Do you mean the Macbook Pro, or the desktop?
02:49:14FromDiscord<Elegant Beef> The performance is bad in either
02:49:23skrylar[m]@Varriount: the desktop workstation models have not gotten updates until fairly recently with that one model of iMac Pros, but people were screaming for a new mac pro for years
02:49:26FromDiscord<Elegant Beef> Since performance relies on efficiency imo, and the price is inefficient
02:49:39skrylar[m]the macbooks don't even have cooling systems, and the mac pros are soldered bricks. i dunno if they have fans
02:49:45skrylar[m]*macbook pros
02:50:07disruptekthey have fans but fans don't make you fast.
02:50:08FromDiscord<Varriount> @Elegant Beef Well yeah. I wouldn't use a MacBook personally, but if my job is paying for it...
02:50:16FromDiscord<Elegant Beef> I still wouldnt use it
02:50:19FromDiscord<Varriount> Then cost is mostly irrelevant.
02:50:26skrylar[m]@disruptek no, but when your 4ghz processor is underclocked to 25% it doesn't do you any favors
02:50:42FromDiscord<Varriount> I haven't had any performance issues... but then again, I'm not working on 3D games and the like.
02:50:57disruptekpro tip: don't buy a laptop to win benchmarks.
02:51:09FromDiscord<Elegant Beef> Dont buy macs to win benchmarks*
02:51:11skrylar[m]back when i dealt with vcv rack, macs were also the #1 complainers of bad performance
02:51:21skrylar[m]and that was just a glsl+nanovg interface
02:51:25FromDiscord<Elegant Beef> Price to performance is an important metric πŸ˜„
02:51:31skrylar[m]*gles2
02:51:32FromDiscord<gaurav> @Elegant Beef What shall you use then?
02:51:39FromDiscord<Elegant Beef> What do you mean
02:51:42disruptekno argument here; i ran mac hardware for 15 years.
02:52:07FromDiscord<gaurav> @Elegant Beef user base is worldwide, video editors, mostly the Production houses.
02:52:22disruptekon the plus side, osx on hackintosh is incredible.
02:52:26disruptekuntil you experience linux.
02:52:41FromDiscord<Elegant Beef> I was going to say patheon OS exists πŸ˜„
02:52:44FromDiscord<Elegant Beef> i mean DE*
02:52:47disruptekno one in video runs anything but mac.
02:52:50skrylar[m]my kernel was busy panicking for me to hear you, disruptek
02:52:56FromDiscord<gaurav> I mean, what shall you use, Windows? Linux? I installed Mx Linux, got crashed, got back to windows and not in mood to repair that.
02:52:59PrestigeI can't stand mac os
02:53:09FromDiscord<Elegant Beef> I use linux as my main os
02:53:15FromDiscord<Elegant Beef> But what i use doesnt change the facts
02:53:40FromDiscord<Elegant Beef> It'd cost rather a lot for businesses to swap over to a new video editor, so it'd have to blow adobe out of the water with features and usabillity
02:53:54FromDiscord<gaurav> don't worry.. the app I am planning for will be cross platform πŸ˜›
02:54:02skrylar[m]network effect is a lot of it
02:54:03FromDiscord<Elegant Beef> Ok?
02:54:07disrupteki have two brothers in industry. no one will consider anything outside of mac.
02:54:21skrylar[m]there are some windows shops around
02:54:37disruptektechnically true but also irrelevant to the market.
02:54:41FromDiscord<gaurav> I understand that, we are planning for that, but I am stuck with the tools and languages.
02:54:56disruptekeven disk arrays have to ship in silver boxes to be sold.
02:54:57skrylar[m]but you still have to fight that a lot of people have a hard-on for "it must be in THIS specific project format" and that format seems never to be an interchange one (in my experience)
02:56:02FromDiscord<Elegant Beef> Well i think a new tool standard could be made, but to compete with adobe you need as many programmers and probably as much money to market πŸ˜„
02:56:24FromDiscord<gaurav> Yes, I understand that too.
02:56:26skrylar[m]anyway. i think there is a wx binding somewhere, i don't know if we have a qt one. those are the closest you get to cross platform and fully featured.
02:56:34FromDiscord<gaurav> I am talking about a commercial grade software.
02:56:44disruptekSOL
02:57:11disruptekyou'll be wrapping Qt or nothing.
02:57:24skrylar[m]wx will also do most of what they want
02:57:44FromDiscord<gaurav> My job is to choose the stack and get it implemented. I have picked few languages like Nim, V Lang and Reason (Revery).
02:57:45skrylar[m]the beos stuff i was working on isn't shippable right now
02:57:55disrupteki'm not familiar with wx but i'm familiar with qt.
02:58:19FromDiscord<gaurav> @disruptek Tell me about qt.
02:58:29FromDiscord<Elegant Beef> Disruptek i think they just called you a qt
02:58:31*waleee-cl quit (Quit: Connection closed for inactivity)
02:58:40FromDiscord<gaurav> lol
02:59:33disrupteknothing more to say; you've shortlisted v and reason.
03:00:46disrupteki don't think wx is in the same class as qt; not even close.
03:01:34FromDiscord<gaurav> I am confused on how will it be proceeded. Regarding Languages, Using V Lang has an option of making the whole codebase to be compressed in far lesser MBs and making the use of C and C++ and there will be lesser mem footprint. It is static typed too.
03:01:42FromDiscord<gaurav> About Nim, I donno much
03:01:53companion_cubeV is so not ready for anything
03:02:10FromDiscord<gaurav> Except what it says on its website.
03:02:26FromDiscord<Elegant Beef> Yea and on my website i say im a unity programmer
03:02:30FromDiscord<Elegant Beef> So what's that mean!
03:02:41FromDiscord<Elegant Beef> sorry unity developer
03:02:48companion_cubehttps://christine.website/blog/v-vaporware-2019-06-23 🀷
03:02:59companion_cube(and all the other comments on various HN threads, too)
03:03:28FromDiscord<gaurav> That is what I am saying, just because Nim has mentioned few things on its website.. does that mean anything?
03:03:43FromDiscord<Elegant Beef> I mean it means it's a language
03:03:44FromDiscord<gaurav> V has been implemented in few projects and they mentioned it on their website too.
03:04:12FromDiscord<Elegant Beef> You can grab any screwdriver and get the job done aslong as the screwdriver exists
03:04:14disruptekit was hard to take this project seriously before. now it's impossible.
03:04:16companion_cubewell, for nim, you can try for yourself
03:04:31FromDiscord<gaurav> I donno buddy, its like sleeping over V and waking the other day with Rust in mind and then the other day with Revery and waking up with Nim then.
03:04:56companion_cubeI'm more curious about revery, Reason does exist and do what it promises, at least
03:05:15FromDiscord<gaurav> V says it has UI, so does Nim.
03:05:46*Guest65896 quit (Ping timeout: 265 seconds)
03:05:46FromDiscord<gaurav> how capable are they is what I don't know about and I never worked in this field and this would be my first project in Desktop app development.
03:05:56disruptekrespectfully, you're in over your head. find a mentor.
03:06:36FromDiscord<gaurav> @disruptek find me a mentor
03:06:45companion_cubegaurav: if you ask anyone who's been busy implementing a language these past few years (like nim or zig), they'll tell you that V overpromises by a long, long shot
03:06:53FromDiscord<Elegant Beef> dis you wanna be my mentor, i need to learn how to be sillier more!
03:07:07FromDiscord<gaurav> lol
03:07:12disruptekfor one thing, you may as well spell it correctly.
03:07:22disruptekit's pscillyer.
03:07:24FromDiscord<Elegant Beef> So that's a yes?
03:07:51FromDiscord<Elegant Beef> And no i dont have that anymore my doctor treated it
03:08:33FromDiscord<Elegant Beef> I thought i told you not to tell anyone
03:08:54disruptekdoctor-patient confidentiality was never very important to me.
03:09:39FromDiscord<Elegant Beef> But you put your finger in my... Yea it's to me
03:09:46FromDiscord<gaurav> @gitterirc With 300 kb of a Native desktop client for Slack, Skype, Matrix, Telegram, Twitch and many more services, I doubt that.
03:10:15FromDiscord<Elegant Beef> I mean you're incapable of understanding how this irc bot works, so ...
03:10:15disruptekthe first step is admitting you have a problem.
03:10:32disruptekthe thing about ignorance is that it's treatable.
03:10:37disruptekbut you have to want to change.
03:11:51FromDiscord<gaurav> @Elegant Beef What do you think will be useful in my case?
03:12:08FromDiscord<Elegant Beef> Making an editor for yourself not others, unless you have super mega funding
03:12:44FromDiscord<gaurav> for myself or by myself?
03:13:14FromDiscord<Elegant Beef> for
03:13:29disruptekc'mon, it's absurd.
03:13:32FromDiscord<gaurav> Its a startup
03:13:42disruptekyou're talking about a $100MM piece of software.
03:13:57disruptekand you're using V in the same breath.
03:14:48FromDiscord<gaurav> I am going to be a part of it.
03:14:57disruptekindeed.
03:15:10disruptekevery startup needs a scapegoat or ten.
03:15:17FromDiscord<gaurav> And we shall be looking for funding too once the MVP is up.
03:15:37FromDiscord<gaurav> lol @disruptek
03:15:51disruptekyou know what i ask every knucklehead who pitches me?
03:16:00disruptekWHY YOU
03:16:22FromDiscord<gaurav> @disruptek dont' worry, that won't be me. πŸ˜›
03:16:34disruptekwhat do you have that uniquely positions you to bring this product to market.
03:17:23disruptekso far, i'm not being wow'd here.
03:17:25FromDiscord<gaurav> no fear to lose, and knowledge to gain.
03:17:48disruptekmay it warm your cockles on those chilly skid row nights.
03:18:00companion_cubegaurav: is there a downloadable binary of V's supposed chat client now?
03:18:07disrupteknah.
03:18:24FromDiscord<gaurav> yes there is
03:18:27companion_cubecause, well, 300kb might be with a ton of dynamic libraries, assuming it even does exist
03:18:32FromDiscord<gaurav> I think so..
03:18:49FromDiscord<KingDarBoja> _may it warm your cockles on those chilly skid row nights._ It's funnier on spanish lol
03:18:58FromDiscord<gaurav> lol
03:19:12companion_cubeah well, nothing for linu
03:19:17companion_cubeso much for the cross platform
03:19:21disrupteki guess my spanish is better than i thought.
03:19:25FromDiscord<KingDarBoja> You should listen to the advices
03:19:48FromDiscord<KingDarBoja> Don't jump into something too big with so little knowledge on the field
03:20:12disruptekshit, you're talking to people who do that for a living.
03:20:24FromDiscord<gaurav> That is why I am looking for the knowledge, more knowledge regarding the field will be provided by other guys
03:20:40FromDiscord<gaurav> And the mentors in that field..
03:20:46disruptekwhat's the largest tech team you've managed?
03:20:47FromDiscord<gaurav> My job is to choose the tech-stack
03:20:54disruptekWHY YOU
03:20:56FromDiscord<gaurav> 32
03:21:32FromDiscord<Elegant Beef> no it's 42
03:21:36FromDiscord<Elegant Beef> Everyone knows this
03:21:44FromDiscord<gaurav> ok
03:21:56FromDiscord<KingDarBoja> _shit, you're talking to people who do that for a living._ I know people do that for living, but better go into small steps instead of a huge software stuff which promises to change the world lol
03:22:35disrupteki'm saying, people who wield lightning without understanding it are afraid to shake your hand.
03:22:48FromDiscord<gaurav> it would be small steps but I need to choose the tech stack.
03:22:56FromDiscord<KingDarBoja> Now gonna take a quick shower
03:23:09FromDiscord<gaurav> It would not be a wise dicision to change the technology later on
03:23:27FromDiscord<gaurav> I mean midway
03:23:37disruptekselect something that 100 engineers can work with for at least 5 years before release.
03:23:46disruptekie. C++.
03:24:02FromDiscord<gaurav> why not Nim?
03:24:09companion_cubefor redoing a photoshop? dman
03:24:12companion_cubedamn*
03:24:19FromDiscord<Elegant Beef> not photoshop, preimire
03:24:21disruptekit's premier.
03:24:28FromDiscord<gaurav> premiere*
03:24:32FromDiscord<Elegant Beef> Primer
03:24:42FromDiscord<gaurav> and then the paint.
03:25:47FromDiscord<gaurav> so, do you think Qt will be sufficient for GUI?
03:25:59disruptekobviously.
03:26:08FromDiscord<gaurav> in my case I meant.
03:26:13disruptekobviously.
03:26:38FromDiscord<gaurav> yes or no?
03:26:52FromDiscord<Elegant Beef> You're sincerely continuing this, it makes more sense to use a terminal multiplixer that feeds data into your editor before you get ui up
03:27:02FromDiscord<Elegant Beef> The UI is the least of concerns
03:27:14disruptekyou won't find 100 engineers that know wx or any other commercial x-platform toolkit.
03:27:47FromDiscord<gaurav> Mine is an agile team. What shall the UI developers be doing by then?
03:27:55disruptekjust like you cannot find enough talent or tooling to build this project outside of java or C++.
03:28:04disruptekand java is absurd for video.
03:28:10disruptekergo, C++/Qt
03:28:10FromDiscord<Elegant Beef> Agile, so they're quick? Ah so it should be quicker
03:28:21companion_cubeI think I have to agree with disruptek …
03:28:26disruptekif you rub it on the back of a duck, it goes faster.
03:28:49disruptekbut, hey.
03:28:55disruptekgo with V or reason if you must.
03:29:05disruptekwhat the fuck do i know.
03:29:44companion_cubeif you have a team of engineers building a real thing, right now, better pick well tested technology
03:30:00FromDiscord<gaurav> and I don't know about that.
03:30:12*ptdel quit (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
03:30:20FromDiscord<gaurav> That is the problem I am looking the solution for, for past few days.
03:30:28companion_cubeas disruptek said
03:30:41companion_cubeI mean, you can also pick free pascal, if you want something well tested, but it's a tad bit old
03:31:07FromDiscord<Elegant Beef> I still think that considering what they're planning on making the language is less of a concern than time
03:31:18FromDiscord<Elegant Beef> Or man power
03:31:30companion_cubelanguage is definitely important in this case
03:31:50FromDiscord<Elegant Beef> Well you say that but if the project is unfinishable in a reasonable time it doesnt matter if you write it in python or asm
03:31:55companion_cube(I mean, the jvm might also work *if* you get good GPU interop)
03:31:57FromDiscord<gaurav> man power could be increased once we have funds, but by then, it would be us making it to take some shape.
03:32:30FromDiscord<gaurav> And we no tech or GUI we won't be getting the investors.
03:32:31disruptekanother reason you need Qt.
03:32:48companion_cubeElegant Beef: yeah well, you need both
03:33:48FromDiscord<gaurav> And with no tech or GUI we won't be getting the investors.
03:34:39FromDiscord<Elegant Beef> Im talking this in the same way first day game developers go and ask "How do i make a MMO" or "Anyone want to make a mmo with me" It's unreasonable to pursue this idea, unless you already have a team or funding
03:34:45FromDiscord<gaurav> I want it to run on i5 8GB system.
03:34:59disruptekwhy didn't you say so.
03:35:10companion_cubehttps://en.wikipedia.org/wiki/Kdenlive <-- oh hello existing video editor in Qt
03:35:31FromDiscord<Elegant Beef> What's this it's open source
03:35:33FromDiscord<Elegant Beef> hmph
03:35:37FromDiscord<gaurav> you don't get funding unless you show MVP
03:35:46FromDiscord<Elegant Beef> Sure
03:35:53FromDiscord<Elegant Beef> You also are a snake oil salesman at that point
03:35:54companion_cubebut getting to MVP is hard
03:35:55disrupteki bet it's not written in C++.
03:36:01disruptekoh look.
03:36:04companion_cube:D
03:36:11FromDiscord<Elegant Beef> But im an unemployed schmuck, so what do i know
03:36:19FromDiscord<gaurav> With no tech in hand and no UI, yes it is hard
03:36:42disruptekit's almost like someone who wanted to make a competitive product and knew how... picked the right tech stack with which to do so. and created a shipping product.
03:36:43FromDiscord<Elegant Beef> Make the tech and add ui later
03:36:46disruptekweird.
03:36:49FromDiscord<Elegant Beef> The tech doesnt care how it gets inputs
03:36:55disruptekbohemian!
03:37:03FromDiscord<Elegant Beef> Rapsodian?
03:37:08FromDiscord<KingDarBoja> Mama mia
03:37:19companion_cubeerr, for an editing software, the UI is definitely part of the tech
03:37:26FromDiscord<gaurav> but here it is about output also.. isn't it?
03:37:36disrupteknah.
03:37:38FromDiscord<KingDarBoja> I really hate all thatagile-related stuff
03:37:49FromDiscord<KingDarBoja> But hey, that's what some industries like to implement
03:37:55disruptekfr-agile
03:38:08FromDiscord<gaurav> If system's processor will be heavily processing the UI, how will it work on the editing stuff?
03:38:12FromDiscord<KingDarBoja> Better pick a well tested tech as other mentioned
03:38:35FromDiscord<Elegant Beef> Companion, you say that but a bunch of hastily thrown together terminal multiplexed tuis could work too πŸ˜„
03:38:36companion_cubegaurav: so, if you don't know how to make a MVP or what tech to pick… why even start?
03:38:41FromDiscord<KingDarBoja> Usually you have GPU and CPU
03:38:46companion_cubefor video? ugh :DDD
03:38:56companion_cubegood luck editing your video with libcaca
03:39:03disruptekmaybe you can use crystal; all you have to do is port it to windows.
03:39:10FromDiscord<Elegant Beef> I mean the video would be rendered out properly
03:39:18FromDiscord<KingDarBoja> The big question is... are you a developer or something else?
03:39:22FromDiscord<Elegant Beef> Just everything else would be shoddily thrown together tuis
03:39:36companion_cubeElegant beef: easier, use imgui
03:39:48FromDiscord<Elegant Beef> Cant tell if you're sincere or mocking me
03:40:04companion_cubea big video renderer and shittons of imgui on top of it
03:40:11companion_cubeeasier than a TUI
03:40:16FromDiscord<Elegant Beef> I guess
03:40:18companion_cube(I'm serious)
03:40:21FromDiscord<gaurav> I am a Manager, have been a BA, and developer earlier till 2004
03:40:38FromDiscord<Elegant Beef> You've only been a Bad Ass for 16 years?
03:41:08FromDiscord<KingDarBoja> Calm down guys, no need to rely on jokes
03:41:17FromDiscord<Elegant Beef> Hey you rely on what you are
03:41:23FromDiscord<KingDarBoja> lol, agreed
03:42:15FromDiscord<KingDarBoja> Back to the topic, okay mate, just think about what do you want, you want quality, faster development times, or just get that thing done no matter if doesn't work at all?
03:42:18FromDiscord<gaurav> Yes, thanks for appreciation πŸ™‚
03:42:25disruptekjust make an offer to buy lightworks. it looks like it has the most potential. boom, you're a big shot.
03:42:51FromDiscord<Elegant Beef> Yea you're attempting to compete with something that took 16 years to get here
03:43:02FromDiscord<gaurav> quality + faster MVP
03:43:12FromDiscord<KingDarBoja> Harder to do both
03:43:21companion_cubedisruptek: so do you want to hear about my idea of reimplementing mathematica in 6 months? :p
03:43:28disruptekdo i
03:43:32FromDiscord<KingDarBoja> But best advice is research on current market platforms and check their stacks
03:43:59FromDiscord<Elegant Beef> Well im remaking physics overhere, i think the flaw is that the speed of causality is too low, we need a higher speed limit
03:44:38FromDiscord<gaurav> With no MVP in time, we are already dead.
03:44:39FromDiscord<KingDarBoja> Probably (I have no idea to be honest) those apps use C++, Java, C#
03:44:53FromDiscord<Elegant Beef> Well take something you can handle
03:45:03FromDiscord<gaurav> Adobe uses, C, CPP, Java..
03:45:08FromDiscord<KingDarBoja> There u go
03:45:08FromDiscord<gaurav> I donno what they use for GUI
03:45:11FromDiscord<Elegant Beef> Make a new chat client to rival discord, they use electron, you can beat them
03:45:32companion_cubeyeah but then you'll get banned from their servers
03:45:37companion_cubeit's their turf
03:45:56FromDiscord<Elegant Beef> Yea i gues the guys that get funding from the CPP's western arm tencent would be into dictatorships
03:46:00FromDiscord<Elegant Beef> Yea i guess the guys that get funding from the CPP's western arm tencent would be into dictatorships
03:46:01FromDiscord<gaurav> @Elegant Beef It is not always a choice.
03:46:33FromDiscord<Elegant Beef> Well if anyone holds a gun upto my head and says "Compete with the biggest company in a rather complicated software field" i think ill tell them to shoot
03:46:36disrupteklet me just pick a competitor that owns 95% of the market and has an incredible moat and, even though i know nothing about the industry or the product, invent competition and gamble on success.
03:46:46FromDiscord<gaurav> lol
03:46:58FromDiscord<gaurav> I appreciate your honesty..
03:47:30FromDiscord<gaurav> But if your company picks that project and you are asked to lead a team what will you say?
03:47:40disruptekpay me money.
03:47:54FromDiscord<Elegant Beef> This is unreasonable and we need to find a better project, if you want the business to stay afloat and not be a sinkhole
03:48:08leorizeif they got money, let 'em
03:48:21disruptekit's his livelihood, too.
03:48:46companion_cubeit's more, if you have barely any chance to make it work, it seems a bit wasteful
03:48:49companion_cube(or bad for morale)
03:49:15FromDiscord<Elegant Beef> If they trust you enough to make you a lead they should trust your opinion or shouldnt make you lead
03:49:18companion_cubewell I guess if I was told to use V I'd quit on the spot, so there's that
03:49:21FromDiscord<gaurav> Premiere is in the market for 16 yrs, yet many tools are competing with Premiere..though its the marketleader.
03:50:13FromDiscord<gaurav> With "No" in mind, we can never proceed.
03:50:13FromDiscord<Elegant Beef> They're also all like 16 year old software
03:50:26FromDiscord<Elegant Beef> vegas for instance is also >15 years old
03:50:26*zacharycarter quit (Ping timeout: 256 seconds)
03:50:48FromDiscord<Elegant Beef> same with davinci resolve
03:50:51FromDiscord<gaurav> and we shall be using their expertise too.
03:50:55FromDiscord<Elegant Beef> Same with kdenlive
03:51:22disruptekit doesn't matter. you have to not just produce a competitive product, but drink their milkshake while they watch.
03:51:27disruptekgood fucking luck with that.
03:51:47FromDiscord<gaurav> πŸ˜›
03:52:03disruptekalso, this isn't some rando brazilian gamehouse.
03:52:13companion_cubedisruptek: I mentionned mathematica as something basically impossible to compete with
03:52:13disruptekthis is a major valley player.
03:52:20FromDiscord<gaurav> I understand that.
03:52:20*lritter joined #nim
03:52:20companion_cubebut premiere is a pretty good example too
03:52:41FromDiscord<gaurav> Thanks for understanding.
03:53:11disruptekspeaking of brazilians, i hear some porn calling my name.
03:53:13disruptekciao.
03:53:20FromDiscord<KingDarBoja> WTF
03:53:27companion_cubeclassy πŸ˜‚
03:53:45FromDiscord<KingDarBoja> Good wank?
03:54:21FromDiscord<gaurav> @KingDarBoja Are there real ppl through this bot or is it just an AI tool?
03:54:35FromDiscord<Elegant Beef> It's been 30 seconds he's probably done by now
03:54:50FromDiscord<Elegant Beef> It's a bot connecting to a irc server
03:54:53companion_cubewell if bots were that good, disruptek would be the rich one
03:55:10FromDiscord<gaurav> hmm.. that is what I thought..
03:55:21FromDiscord<Elegant Beef> He's rich in spirit
03:57:12FromDiscord<gaurav> again back to the topic, will my codebase be lower, with low memory footprint if I use Nim? Will Qt suffice my venture or I should go with Glade or something like that?
03:58:00FromDiscord<KingDarBoja> The Beef Elegant explained the bot stuff
03:58:16FromDiscord<Varriount> I know there's a QML library for Nim, but I don't believe we have an actual QT wrapper.
03:58:27companion_cubejust go for C++17 and Qt
03:58:36companion_cubeeasier to hire for than nim anyway
03:58:42companion_cubeand Qt is designed around C++
03:58:55FromDiscord<Varriount> QT is quite hard to wrap, as it requires it's own compiler thing
03:59:19FromDiscord<gaurav> Yes, heard of this QML too..
04:00:05FromDiscord<gaurav> You mean, considering my requirements I should zero in for QML with Qt for GUI
04:00:35FromDiscord<gaurav> and for backend, I should be using C++..
04:00:40FromDiscord<gaurav> or C
04:00:46companion_cubeC++ with Qt
04:02:05FromDiscord<gaurav> but C++ will make it use larger memory and Exe size will increase too
04:02:18companion_cubelarger memory than C? meh
04:02:34companion_cubealso, sounds like y'all need to be productive… 🀷
04:03:26FromDiscord<Varriount> Or you could go with JavaScript and Electron. For the ultimate memory efficiency.
04:03:41*chemist69 quit (Ping timeout: 246 seconds)
04:04:48*chemist69 joined #nim
04:04:51FromDiscord<Elegant Beef> I sincerely doubt the executable memory size matters much within reason
04:05:20companion_cubethe existing programs are big, too
04:05:54*ryan__ joined #nim
04:05:59FromDiscord<Elegant Beef> want 8 gb of space
04:06:02*supakeen quit (Quit: WeeChat 1.9.1)
04:06:44*supakeen joined #nim
04:07:00FromDiscord<Elegant Beef> I like blender vs maya, blender is <300MB maya wants 4+GB
04:08:19*ryan_ quit (Ping timeout: 250 seconds)
04:10:40FromDiscord<Varriount> Blender is nice. The UI in particular had improved immensely.
04:10:47FromDiscord<Varriount> *has
04:11:01FromDiscord<gaurav> Electron is no good, Thanks!
04:11:36FromDiscord<Varriount> I used blender to process a 3d model from a Pokemon game, then print it out on a 3d printer
04:11:38FromDiscord<gaurav> we can rather use web-pack
04:14:07*ryan__ is now known as number_one
04:18:45FromDiscord<gaurav> ?
04:21:41*dddddd quit (Ping timeout: 256 seconds)
04:23:12FromDiscord<gaurav> Thanks for the help guys. I think I will look into the information provided by you all.
04:23:33FromDiscord<gaurav> And will get back to you once I need to know something more.
04:23:35FromDiscord<gaurav> Regards!
04:32:44*nsf joined #nim
04:39:31*Jesin joined #nim
04:55:23*narimiran joined #nim
04:58:18skrylar[m]suppose i could have been more gracious with our guest earlier. was just thinking i do have some small reading list when it comes to doing your own GUI stuff since i've been working on that
04:58:32skrylar[m]recently read the TeXbook to brush up on text layouts
04:58:56skrylar[m]tho it was a couple hundred pages that amounted to it basically makes a tree of boxes
05:00:42FromDiscord<InventorMatt> from my experience with pyqt that does seem to be all it is for gui's in general
05:01:06skrylar[m]that will get you far yea
05:01:39skrylar[m]my frustration with many gui systems was that if you wanted a stock control you got them easy, but the second you want any custom thing you are now left out in syberia to figure it out yourself
05:02:06skrylar[m]even gtk4 i think said they wrote a cassowary solver but its a hidden internal, you can't just reuse it for your own widget parts
05:02:38skrylar[m]which is why for the thunderstrike stuff i've been reading the source materials and trying to make them in parts; because there is no good reason you can't just borrow the miglayout or css flexbox stuff for things you have to partly draw yourself
05:04:04skrylar[m]trees of boxes gets you the really high level click zones; layout and text are their own diversions
05:05:12skrylar[m]single typeface in english or normalized european is okay, rich text is a hot mess
05:08:11skrylar[m]multiple typefaces it starts to get irritating cause now you have to have lists of boxes and calculate individual line heights and make sure when you place the lines its multiples of the baseline or else the text becomes unprofessional and bad and then if its doing it with opengl you have to add another step because changing typeface might mean changing textures so you have to work out multiple elements to batch render
05:11:37skrylar[m]then there are deep secrets like people are used to clicking bold or italics, but in actuality that is a different typeface and there is no internal difference between bold<->not bold or times new roman<->comic sans because its just changing the entire characterset anyway
05:11:51FromDiscord<Varriount> Skrylars: Don't forget RTL and LTR text input
05:12:05skrylar[m]thats why i caveated things with english or normalized euro
05:12:19FromDiscord<Elegant Beef> The trick is to only output a bit stream and make them learn how to read it
05:12:35skrylar[m]although if you've gone "full knuth", it's not as bad
05:12:47skrylar[m]cause i think the texbook even says it's just a matter of changing the justification of the hboxes
05:15:01FromDiscord<Varriount> Elegant Beef: Or we all migrate to Wingdings as the one true textual language
05:22:05*arecaceae quit (Remote host closed the connection)
05:22:29*arecaceae joined #nim
05:23:48skrylar[m]unfortunately todays yak shaving isn't finishing up multiline text, but faceplating gles2 :(
05:58:38FromDiscord<Benumbed> Is there a Nim builtin that will tell me the index of a value in a set or seq?
05:58:54FromDiscord<Benumbed> I can't find anything, but that doesn't mean it's not there
06:04:51FromDiscord<Elegant Beef> for the set since it's stored as a bitmask i've been told, you should be able to do get log2 of the `yourSet and val`
06:05:12FromDiscord<Elegant Beef> Although there is probably a smarter method for getting that returned value into the offset
06:09:26FromDiscord<Benumbed> Hmm, I can give that a shot, thanks @Elegant Beef
06:09:59leorizeyou can't find the index of a value in a set
06:10:12leorizebut you can do so for a seq[], there's a `find()` module defined for it
06:12:34FromDiscord<Benumbed> See that's what I was looking for, but I couldn't find it in system
06:12:37FromDiscord<Elegant Beef> Yea i was being dumb i would've just got the enum base 2 value πŸ˜„
06:12:38FromDiscord<Benumbed> but if there's a module
06:12:41FromDiscord<Elegant Beef> It's in system
06:12:44FromDiscord<Elegant Beef> But not under seq
06:13:16FromDiscord<Elegant Beef> https://nim-lang.org/docs/system.html#find%2CT%2CS
06:13:26FromDiscord<Benumbed> Searching for `find(` in system.nim nets me a goosegg for proc refs
06:13:54FromDiscord<Benumbed> lol doh
06:14:02FromDiscord<Elegant Beef> I do have to say annoyingly it's not listed under seqs
06:14:02FromDiscord<Elegant Beef> https://cdn.discordapp.com/attachments/371759389889003532/702039420877930536/unknown.png
06:14:32leorizewell PR it in? :)
06:14:55FromDiscord<Elegant Beef> I dont contribute, i misinform
06:15:15FromDiscord<Benumbed> Noted :triggered:
06:15:30FromDiscord<Benumbed> Thanks for the help BTW, both of you
06:16:10FromDiscord<Elegant Beef> my log2 method is a valid method of getting the index of a bit with only the value of the bit πŸ˜„
06:18:13*solitudesf joined #nim
06:18:18leorizeit's still wrong btw :P
06:18:59FromDiscord<Elegant Beef> huh?
06:19:37FromDiscord<Elegant Beef> if you have any single bit value that will give you the index of said bit
06:19:52FromDiscord<Elegant Beef> log2(2^y) = y
06:20:00leorizeexcept it doesn't work like that with Nim sets :)
06:20:07FromDiscord<Elegant Beef> yea
06:20:24FromDiscord<Elegant Beef> I got that, i dont know anything about nims sets, i just spew bullshit
06:20:25skrylar[m]sets are technically bitfields that set 1<<offset but this is deep knowledge and you "shouldn't" depend on it. and by shouldn't i mean if you do depend on it, make sure you do some `static asserts` in the module to fail when they stop being true
06:20:37*opal joined #nim
06:20:57FromDiscord<Elegant Beef> I mean if you depend on automagic numbers what are you doing?
06:21:12leorizehttps://github.com/nim-lang/Nim/blob/devel/lib/system/sets.nim#L13
06:21:15leorizethis is what sets are btw
06:21:18skrylar[m]well in some faceplates i successfully made nim sets that matched the c bitfield, making zero cost sets
06:21:27skrylar[m]back in the day. i dont do that anymore
06:22:07leorizehttps://nim-lang.org/docs/manual.html#set-type-bit-fields
06:22:11leorizeit's now officially supported
06:23:09skrylar[m]woot
06:25:12leorizenote that nim sets are variable sized
06:29:42FromDiscord<Benumbed> Hmmm Status' Chronicles library is pretty aweomse
06:29:58FromDiscord<Benumbed> awesome^
06:30:13skrylar[m]how much of a heinous hack is this: `type bleh* = object ... proc []=*(self: type[bleh]; index: int; enabled: bool`
06:30:33skrylar[m]so you can enable attribute arrays in gl with `attributes[0] = true`
06:31:24FromDiscord<Elegant Beef> Doesnt exactly seem like a hack more just QOL
06:32:25skrylar[m]for some reason i thought `something[]=` would work, but i'm pretty sure you can't make fake subscripts like this
06:41:17skrylar[m]well. half done. sometime tonight should have the faceplate done
06:42:24skrylar[m]it just does some small niceties like distinct glints for the various objects, templates the gles2 calls on to them, deletes some parameters that have only one valid value
06:53:23*hax-scramper quit (Read error: Connection reset by peer)
06:54:06*hax-scramper joined #nim
06:55:27*PMunch joined #nim
07:00:00*gmpreussner quit (Quit: kthxbye)
07:04:47*gmpreussner joined #nim
07:15:11Araqofftopic but funny: https://www.comicskingdom.com/bizarro/2020-04-19
07:20:35Araqskrylar[m]: it's acceptable code
07:21:17Araqit's probably becoming a common idiom somewhere :-)
07:25:01skrylar[m]i saw someone else used that trick to make constructors in this channel, so `something.new` would work. which is neat
07:28:05*Jjp137 quit (Ping timeout: 250 seconds)
07:36:13*couven92 joined #nim
07:44:27*krux02 joined #nim
08:03:13*tane_ joined #nim
08:10:37*Vladar joined #nim
08:15:33FromDiscord<such father that father not> it's pretty sad that you need to explicitly cast numbers to types other than int
08:15:59FromDiscord<such father that father not> cause say i want to have an array of uint8, right
08:16:29FromDiscord<such father that father not> do i really need to cast every number? cause otherwise nim says "got int, but expected uint8"
08:16:38Yardanicono
08:16:55FromDiscord<such father that father not> this is how i'm doing it for now
08:16:55FromDiscord<such father that father not> https://cdn.discordapp.com/attachments/371759389889003532/702070345225601034/Zrzut_ekranu_2020-04-21_o_10.16.44.png
08:16:55Yardanicoyou can do it like let myarr = [1'u8, 2, 3, 4]
08:17:28Yardanicoconst Opcode = [0x10'u8, 0x11, 0x50, 0x88, 0x99]
08:17:31Yardanicoyou can insert newlines if you want
08:17:40FromDiscord<such father that father not> Okay, thanks!
08:17:55FromDiscord<such father that father not> by the way, what's the difference between `let` and `var`?
08:18:04Yardanico"let" is for immutable variables
08:18:08Yardanico"var" is for mutable variables
08:18:19FromDiscord<such father that father not> oooh, makes sense
08:18:24FromDiscord<such father that father not> Thanks very much!
08:18:44Yardanicothere's a case with "let" - if you do "let a = newObj()" and newObj creates a new "ref obj", then you will be able to modify the object itself
08:18:52Yardanicobut not the reference, since "let" will hold the reference, not the object itself
08:19:04FromDiscord<such father that father not> funky
08:20:18Yardanicowell it makes sense
08:21:45FromDiscord<Recruit_main707> can i have something like this then? `let a = ptr b`
08:21:45FromDiscord<Recruit_main707> `a[] = 2`
08:22:01Yardanicowhat is "ptr b" supposed to mean
08:22:11Yardanicoyou meant "let a = addr b" maybe?
08:22:25FromDiscord<Recruit_main707> yep
08:22:31FromDiscord<Recruit_main707> i always mess those
08:22:33Yardanicobut yes, you'll be able to do that with "addr", the point is that you won't be able to modify the pointer/reference itself
08:22:45Yardanicoyou'll be able to modify the underlying object because "let" variable will only contain an immutable pointer
08:22:56FromDiscord<Recruit_main707> cool
08:23:09FromDiscord<such father that father not> yeah but don't you *not* mute pointers?
08:23:12FromDiscord<such father that father not> mutate*
08:23:27FromDiscord<such father that father not> you can't change the address or something
08:23:30FromDiscord<such father that father not> of*
08:23:47FromDiscord<Recruit_main707> but you could point to something else
08:24:04FromDiscord<such father that father not> i feel like that seems way off
08:24:11FromDiscord<such father that father not> and that you wouldn't use something like that
08:24:42FromDiscord<such father that father not> yeah pointers are black magic lol
08:25:23FromDiscord<such father that father not> especially in a garbage collected language
08:25:40Yardanicoas Recruit said, with "let" you won't be able to change where it points to
08:26:04Yardanicoand nim has both GC'd and not GC'd pointers, you can always use raw pointers if you really want to
08:26:32FromDiscord<Recruit_main707> ref = gc'd pointer, ptr = raw pointer right?
08:27:12FromDiscord<such father that father not> didn't know that
08:27:15Yardanicoyeah, there's also "pointer" which is the same as "void*" in C
08:27:36FromDiscord<Recruit_main707> and there is also void
08:28:09Yardanicothat's just a empty type
08:28:15Yardanicoit can be omitted
08:28:35Yardanicothere's also "auto" in case you didn't know
08:29:03FromDiscord<Recruit_main707> i didnt
08:29:31Yardanicohttps://nim-lang.org/docs/manual.html#types-auto-type
08:29:43FromDiscord<such father that father not> okay, so while we're in the topic of memory, nim states this in the docs
08:29:58FromDiscord<such father that father not> > Taking the address of an object that resides on the stack is unsafe, as the pointer may live longer than the object on the stack and can thus reference a non-existing object.
08:30:10FromDiscord<such father that father not> so is there a way to dynamically allocate stuff on the heap?
08:30:18Yardanicoof course
08:30:29FromDiscord<such father that father not> how?
08:30:40FromDiscord<such father that father not> sorry for the noobish questions πŸ˜…
08:30:55FromDiscord<Recruit_main707> ref i believe
08:30:56*sammich_ joined #nim
08:31:01FromDiscord<such father that father not> oh, really?
08:31:06Yardanicolike "alloc"
08:31:07FromDiscord<such father that father not> so that's what ref is for πŸ€¦πŸ»β€β™‚οΈ
08:31:08Yardanico"allocShared"
08:31:16Yardanico"alloc0"
08:31:27Yardanicorealloc, dealloc, etc
08:31:32*sammich_ quit (Client Quit)
08:31:34Yardanicosearch for "alloc" in system module docs
08:31:52FromDiscord<such father that father not> yeah, so i'm seeing also something like this in the docs:
08:32:04FromDiscord<such father that father not>
08:32:04FromDiscord<such father that father not> https://cdn.discordapp.com/attachments/371759389889003532/702074157298614342/Zrzut_ekranu_2020-04-21_o_10.32.00.png
08:32:19Yardanicoyes, that's possible
08:32:26Yardanico"ref" is GC'd pointer
08:32:27FromDiscord<such father that father not> so that's a bit like `new int` in c++, right?
08:32:40Yardanicohttps://nim-lang.org/docs/system.html#new%2Cref.T%2Cproc%28ref.T%29
08:32:43FromDiscord<such father that father not> i mean about `new(n)`
08:32:57Yardanicowell I'm not really experienced with C++ so I can't answer
08:33:10FromDiscord<such father that father not> heh πŸ˜†
08:33:20FromDiscord<such father that father not> nim is such a huge language
08:33:32FromDiscord<such father that father not> and i thought it was only a one-trick pony
08:33:46Yardanicoread https://nim-lang.org/docs/manual.html when you're bored
08:33:49Yardanicoyou'll discover a lot of stuff
08:33:51FromDiscord<such father that father not> lmao
08:33:56Yardanicoalso https://nim-lang.org/docs/manual_experimental.html
08:34:05skrylar[m]a lot of its sugar
08:34:05FromDiscord<such father that father not> ooooh, experimental
08:40:34FromDiscord<such father that father not> okay, so is there something akin to the rest operator in JS?
08:40:48FromDiscord<such father that father not> cause say i have a seq to which i'm appending items
08:40:55FromDiscord<such father that father not> and i have a proc that returns a seq
08:41:10FromDiscord<such father that father not> and i want to add the things that proc returns to the seq to which i'm appending things
08:41:46FromDiscord<such father that father not> it doesn't return an error, so i presume it's correct πŸ€”
08:42:18Yardanico"and i want to add the things that proc returns to the seq to which i'm appending things" you can have two approaches
08:42:45Yardanico1) make your seq argument in the proc as "var seq[yourtype]" and then you will declare your seq as "var data = ..." and do "myproc(data)"
08:43:34Yardanicoor argument as "seq[yourtype]", return type is the same and then "var data = ..." "data.add(myproc(...))"
08:43:53FromDiscord<such father that father not> yeah, the second approach is what i'm doing right now and it seems to be working
08:44:31Yardanicothe first one might be more efficient though :P
08:44:53FromDiscord<such father that father not> really? how so?
08:46:00Yardanicowell with current compiler optimizations it might be the same, not really sure
08:47:44Araqwhat to use depends on the recursiveness of your proc, if it's recursive, use a 'accumulator: var seq[T]' parameter
08:49:23FromDiscord<such father that father not> it actually is recursive, it's a parser
08:49:42AraqI know.
08:51:14FromDiscord<such father that father not> yeah, you're probably right now that i look at it
08:55:23FromGitter<alehander92> guys
08:55:28FromGitter<alehander92> mornnnning
08:55:35Yardanicogmorning
08:55:48FromGitter<alehander92> after holidays :)
08:55:49FromDiscord<such father that father not> hi!
08:56:10FromGitter<alehander92> hey, strange name maybe inspired by a tree algorithm
08:56:28FromDiscord<such father that father not> mine?
08:56:40FromGitter<alehander92> yes, probably a pun
08:56:43FromDiscord<such father that father not> not really, but makes sense πŸ˜…
08:59:41FromGitter<alehander92> i'll take a loot at the async PR later
09:05:22*dadada joined #nim
09:05:45*dadada is now known as Guest79431
09:12:28skrylar[m]@araq @ergonomic beef alright thats as much as i'm working on this tonight https://git.sr.ht/~skrylar/skgl
09:14:28FromDiscord<Rika> ergonomic???
09:15:05skrylar[m]elegant beef but i'm tired
09:15:11FromGitter<jorjun_twitter> Targetting a well-formed and robust browser engine, like Chromum seems like a VGI. Can Nim help me out in any way? Do I just look for c++ bindings? I am bloody new to all this. As a python guy.
09:16:03skrylar[m]usually the way people embed chrome is with libCEF
09:16:36Araqit can help indeed. one unconvential way is to use 'nim cpp --gc:arc -d:useMalloc ' and add the produced C++ code to the codebase
09:17:46Araqthe tooling isn't there yet though, I think, as --gc:arc is too new
09:20:09Araqcan anybody help me with https://github.com/Araq/packedjson/issues/7 ?
09:20:10disbotβž₯ Cannot import packedjson
09:20:16AraqI don't understand the problem
09:22:09FromDiscord<Rika> will test
09:27:14*Jjp137 joined #nim
09:38:50*dddddd joined #nim
09:40:39solitudesfyep, .nim file doesnt get installed for me too
09:43:07Faulandereasy question: how do i assign raw to a string from a variable? like r'this is a\raw string" but like rVariableName. Background, the VariableName is coming from an unescaped JSON
09:43:15FromDiscord<Rika> me neither
09:43:17FromDiscord<Rika> weird...
09:43:31solitudesfbut if i manually git clone -> nimble install - it works properly
09:44:37FromGitter<alehander92> Faulander you want a dynamic variable name?
09:44:51FromGitter<alehander92> variable names have to be generated on compile time
09:45:06FromGitter<alehander92> do you use json on compile time
09:45:08Faulanderno no, i want to convert a string saved in a variable to a raw string
09:45:16Yardanicoyou don't need to
09:45:21FromGitter<alehander92> what do you call a raw string
09:45:27Yardanico"raw string" is not a separate type
09:46:06solitudesf'raw' is a propery of string literal
09:46:22Faulanderok, i get this string from json: 2020-04-21T11:39:34] - DEBUG - JSON:/downloads/
09:46:31Faulanderall after JSON:
09:46:42Yardanicopls no big pastes :P
09:47:10FromDiscord<Rika> doesnt look like a big paste
09:47:38Faulanderthis is a string: var body = "/downloads/"
09:47:49Faulanderand if i do parseJson(body) i get an error
09:48:06Yardanicowell that's not correct JSON
09:48:48FromDiscord<Rika> where do you get that string anyway
09:48:53FromDiscord<Rika> can you paste the whole json
09:49:14FromDiscord<Rika> not here ofc as yardanico says
09:53:23*sentreen joined #nim
09:53:57Faulanderok, the string is coming from a httprequest and is in the response.body - and i have a proc which converts all string delivered by that api to json
09:54:10FromDiscord<Rika> it probably isnt json then
09:56:44*sentreen_ quit (Ping timeout: 256 seconds)
09:57:23Faulanderhttps://play.nim-lang.org/#ix=2iV8
09:57:39Yardanico"JSON:/downloads/" that aint json :P
09:57:43Yardanicolike really
09:57:47Faulanderi know
09:57:47Yardanicoit's not JSON at all
09:57:49Faulanderits a string
09:57:54Yardanicoso why are you trying to parse it as json?
09:59:09*Intensity quit (Read error: Connection reset by peer)
09:59:24Faulanderomg ... i should sleep more
09:59:51Faulanderyou must be so tired of my non nim related bug questions. sorry for that
10:00:26*Intensity joined #nim
10:00:31FromDiscord<Rika> go sleep
10:00:31Yardanicoit's ok
10:00:33Faulanderi just called the wrong proc, i have another one which converts strings to json
10:01:33FromDiscord<such father that father not> i'm sorry if i'm off-topic here, but what endianness are nim ints, if that makes any sense?
10:01:56Yardanicothe same as any other native numbers on your PC
10:02:02Yardanicoon your device*
10:02:04FromDiscord<such father that father not> so little?
10:02:06Yardanicoif your device is big-endian, they're big endian
10:02:10Yardanicootherwise little endian
10:02:31Yardaniconim integers are native, there's no "containers" for them
10:02:39FromDiscord<such father that father not> what i'm getting at is i want to convert a nim int into an array / seq of bytes
10:02:39skrylar[m]there is also an endian module with a set of procs to do endian swapping
10:02:53FromDiscord<such father that father not> and i don't know from which side to parse lol
10:03:13FromDiscord<such father that father not> i'm sorry if what i'm saying makes completely no sesne
10:03:15FromDiscord<such father that father not> sense*
10:06:07skrylar[m]but they did answer; its the same as your local system
10:06:26skrylar[m]and if you need it to be in a specific endian, import the endian module and use the `littleendian` or `bigendian` procs
10:06:28FromDiscord<such father that father not> yeah yeah i know
10:06:53FromDiscord<such father that father not> also big thanks if i haven't made that clear lol
10:07:04FromDiscord<such father that father not> i just tend to ask questions and **require answers or else**
10:45:55*NimBot joined #nim
10:46:30*qwertfisch quit (Quit: ZNC - http://znc.in)
10:47:07*qwertfisch joined #nim
10:58:20*number_one quit (Ping timeout: 256 seconds)
11:00:28FromDiscord<Gary M> yikes
11:13:43*opal quit (Ping timeout: 240 seconds)
11:24:27*opal joined #nim
11:32:03*opal quit (Ping timeout: 240 seconds)
11:43:35PMunch@genotrace, you around?
11:44:02FromDiscord<Recruit_main707> he is shashlick in this server
11:46:33PMunchAh, they're the same person!
11:46:38PMunchHard to keep track of all the nicks..
11:46:50PMunch@shashlick, you around?
11:46:52FromDiscord<Recruit_main707> xDD
11:50:23FromDiscord<such father that father not> lol
11:51:01livcdwhoever created this abomination called Teams should be punished
11:51:35PMunchlivcd, like Microsoft Teams?
11:51:45livcdyeah that one
11:52:02PMunchLuckily never had to use it, haven't heard anything good about it :P
11:53:03livcdwhat chat app do you use at work?
11:53:24FromDiscord<Rika> i heard microsoft teams is really fucking horrible
11:53:30FromDiscord<Recruit_main707> its true, discord is way better and im sure it can hold 20-30 ppl
11:54:19livcdelectron apps are horrible in general
11:54:44Araq!rfcs distro
11:54:45disbothttps://github.com/nim-lang/RFCs/issues/173 -- 3Developing Nim's stdlib and a Nim distribution
11:54:45disbothttps://github.com/nim-lang/RFCs/issues/58 -- 3RFC: change `dynlib` handling on linux to use standard dynamic linking instead of runtime loading via `dlopen`
11:55:01*opal joined #nim
11:57:44PMunchlivcd, Slack
11:58:29PMunchIt doesn't work in FireFox, but apart from that it seems to work okay
11:59:53FromGitter<alehander92> livcd cant agree, vscode is ok
12:05:35*Guest79431 quit (Read error: Connection reset by peer)
12:06:02*supakeen quit (Quit: WeeChat 1.9.1)
12:06:36*dadada joined #nim
12:06:43*supakeen joined #nim
12:06:59*dadada is now known as Guest18401
12:08:04PMunchAnyone else who can get this to work? https://github.com/genotrance/nimssl/tree/linux
12:14:30*zacharycarter joined #nim
12:24:27Faulanderteams is not that bad. there are some quirks, but it can hold conferences (video and chat) with 250ppl out of the box and the quality is better than landline.
12:24:48Faulanderotherwise it's like slack, lacking the integrations ... but the integration with sharepoint (if you use it) is really great
12:24:53Faulanderwe like it ALOT
12:25:35FromDiscord<Recruit_main707> ive seen discord discos with about 500 ppl
12:25:36livcdFaulander: it cant do one thing well...not lag like crazy because it's made of crap.
12:25:56Araqping disruptek
12:26:22FaulanderDiscord would NEVER EVER be used in a company environment, at least not in companies with sensible data and sensible clients
12:27:04Faulanderand teams can do 100.000 ppl, i just said 250, because that is what you get with the normal license almost everybody has
12:27:14FromDiscord<Recruit_main707> they've made a quick update to make it a bit more not-gamer friendly
12:27:21livcdI use this for private communication https://www.kakaocorp.com/service/KakaoTalk
12:27:39livcdIt's a native app. Takes around 10MB here.
12:27:50Faulandertoo late, there are only two options. slack and teams and in europe teams already has won, in us probably slack
12:30:00Faulanderwe are a small company with alot of clients, we never have experienced lag, except in the beginning of the corona crisis
12:30:49livcdI mean the UI "lags" if you have only a semi decent machine with a lot of other apps running
12:31:09*liblq-dev joined #nim
12:31:28Faulanderit doesn't for me, i always have a ton of programs running and only a descent laptop. i think its in the under 1000$ range, but not sure.
12:33:05*xcm quit (Remote host closed the connection)
12:34:05*rockcavera joined #nim
12:34:33livcdFaulander: I am on Search Results
12:34:33livcdFeatured snippet from the web
12:34:38livcdoops
12:34:39FromDiscord<Recruit_main707> Faulander: ive been thinking, why would you even need 10.000 people capabilities
12:34:55livcdSearch Results
12:34:55livcdFeatured snippet from the web
12:35:00livcdHP EliteBook 840 G5 - 14" - Core i5 8350U - 8 GB RAM - 256 GB SSD - US
12:35:05livcdAnd it's not a pleasant experience
12:35:19*xcm joined #nim
12:35:49FaulanderLenovo 15" - Core i5, 16GB Ram
12:36:00Faulanderprobably you're running low on RAM.
12:36:13*Vladar quit (Quit: Leaving)
12:37:31livcdwhich was my point the whole time :)
12:37:50Faulanderwell, but that's not really the problem of the program itself :)
12:37:54federico3all this stuff is off topic
12:38:17livcdno nim discussion going on!
12:38:36federico3it still takes people's time to go through the backlog
12:38:47Faulanderok, back to nim. how do you guys create github markdown from the rst docs in nim?
12:41:27Araq'koch docs'
12:42:04Araqand how can I change my color settings for VSCode on OSX? it says it cannot write some settings file
12:44:54Faulandercmd + "," and change it directly in the settings
12:45:47Araqnever mind, finally figured it out
12:45:54Araqtook me a year...
12:46:12Araqfinally I understood what the program tried to tell me
12:48:51FromDiscord<clyybber> can I safely cast an `array[N, float64]` to an `array[N div 2, array[2, float64]]` ?
12:49:08FromDiscord<clyybber> I fear it might be unsafe because of alignment
12:49:24FromDiscord<clyybber> But intuitively I would say it should be safe, right?
12:50:11*Kaivo quit (Quit: WeeChat 2.8)
12:50:31*Kaivo joined #nim
12:51:23*Kaivo quit (Client Quit)
12:51:28liblq-dev@clyybber: well uh, you can always check by casting both arrays to ptr UncheckedArray[uint8] and comparing the contents
12:51:44liblq-devI would say it should work
12:51:45*Kaivo joined #nim
12:51:55liblq-devbecause arrays don't have any special headers
12:54:25shashlick@PMunch sorry it's not functional yet, @voltist helped convert it to nimterop but it's broken since
12:54:43PMunchThat's what I feared..
12:54:55shashlickThe new ast2 algo should go better but will need some effort to get it working
12:55:02shashlickWhat specific portion do you need
12:55:16shashlickI can get it back in shape
12:56:28PMunchRSA encrypt/decrypt
12:56:33PMunchI already have the keys
12:57:10shashlickWill you be linking with the dll/so or want to compile it in
12:57:16shashlickAlso which os
12:57:28PMunchDoesn't really matter
12:57:35PMunchAnd Windows and Linux for the platform
12:58:51Araqso. here is a new idea regarding https://github.com/nim-lang/RFCs/issues/173
12:58:53disbotβž₯ Developing Nim's stdlib and a Nim distribution
13:00:21Araqanybody interested?
13:00:23shashlickPMunch: ok dll/so is easier
13:00:39shashlickI can whip something out quickly for you to use for now
13:00:47PMunchNeat!
13:02:15euantorOpenBSD CI is finally passing and hopefully ready to go! Took me a while to get it all working, but looks like we're all green now: https://github.com/nim-lang/Nim/pull/12105
13:02:16disbotβž₯ #12103 - CI for OpenBSD
13:02:47PMunchAraq, is that text updated with the new idea?
13:02:55Araqno
13:10:37shashlickPMunch: do you have some sample C code?want to know what specific headers need wrapped
13:11:52PMunchWell I need "RSA_private_encrypt" and "RSA_public_decrypt". Along with some way of creating the RSA struct from the keys I get from the C# code. And whatever helper functions to get errors and such.
13:12:49Araqso here is a summary: we introduce a new github repo nim-lang/fusion where we add new modules. These modules should work with Nim 1.0 and 1.2, continue to be maintained, have had a review process and are part of 'theindex' and shipping with the official Nim installer
13:13:16FromDiscord<Recruit_main707> and should work with arc?
13:13:31FromGitter<alehander92> what is theindex
13:13:37Araqyes but only with devel's arc
13:14:07FromGitter<alehander92> hm, they need some kind of maintainer system
13:14:15FromDiscord<clyybber> alehander92: The search page in the docs
13:14:17FromGitter<alehander92> e.g. what happens if module X's maintainer steps down
13:15:12Araqthe reason behind this is the following: whenever I say to person X "this should be a nimble package instead" we don't have a process for the resulting package even if the package gets done at all.
13:15:42Araqthe package needs to be setup, it needs CI integration, a Nimble entry etc and even then no QA happens
13:16:16Araqalehander92: we maintain it like nim-lang, it becomes a community effort
13:16:36FromGitter<alehander92> so it's like an extended optional stdlib
13:16:44Araqand we'll ensure it's not suddenly removed from github...
13:17:58Araqalehander92: the overall quality and domain is not "stdlib" like
13:18:26Araqfor example, you can add a decent UI library or stuff like my 'dialogs.nim' which don't fit a stdlib
13:22:11FromGitter<alehander92> hm, ok
13:22:47FromGitter<alehander92> but how do you guys solve the
13:23:06FromGitter<alehander92> one adds a good ui library, year later most people start using lib Y because its so cool
13:23:12FromGitter<alehander92> thing
13:23:21Araqand now let's see how this works out with basics math: we have 2 things, the Nim compiler (C) and Nim extensions (E). C adds E as an "important package" so we ensure it keeps working. E tests against 1.0 and 1.2. that's 3 combinations. Compared to N*M for when you have N packages and M compiler versions.
13:24:28FromDiscord<Skaruts> if I do `import foo except a, b` and then `export foo`, does `a` and `b` get exported with the module?
13:24:53FromDiscord<Skaruts> seems like it's what's happening in my code
13:24:56AraqSkaruts: I think so, but a very good question
13:25:15Araqexport foo except a, b
13:25:21Araqwas added in version 1, iirc?
13:25:47*Vladar joined #nim
13:26:15FromDiscord<Skaruts> oh let me give it a try
13:27:09Araqalehander92: in this regard it is stdlib-like, stuff in there keeps working unless we move it to the graveyard
13:27:48Araqand bigger packages like QT or wxWidgets continue to better be done as separate packages
13:28:06liblq-devAraq: hey, could you please create a new tag for https://github.com/nim-lang/cairo? the current newest one still uses the old API with pascal-style T/P prefixes
13:29:06FromDiscord<Skaruts> worked, thanks Araq
13:29:38Araqliblq-dev: ok, ping me again about it tomorrow if I forget
13:29:47liblq-devsure
13:31:00Araqand thanks for making my point. semver is fundamentally broken because it's a constant development overhead and it predates git commit hashes, we should all simply use git commit hashes and abandon semver
13:32:12PMunchProblem with that is that it's hard to know which is newer of 3bbc36e3074a0baf34ac20c9fe210bde2390ab2c and 8033061afa00f8bd206df5d08bba3e85cde1e38b
13:32:17FromDiscord<Rika> why would you be able to export something you havent imported?
13:32:23PMunchPlus kinda hard to reference..
13:33:45AraqPMunch: sure and I prefer ISO dates as the version but that doesn't work for reproducible builds
13:34:00Araqwe could combine them
13:35:57AraqRika: well the compiler doesn't remember what you imported when it processes the 'export' statement
13:36:13Araqbut IMO it's good enough
13:38:57*endragor quit (Remote host closed the connection)
13:38:59FromDiscord<Rika> okay
13:40:51FromDiscord<EdgyNerd> can any of the 3 compilation targets (C++, C, ObjC) give any speed improvements, or are they all fairly similar?
13:41:33PMunchDepends on the compiler/optimisations. But I've seen the C++ target be considerably faster sometimes
13:41:39PMunchOther times they're the same
13:41:45PMunchOr slightly slower
13:41:51AraqEdgyNerd: C vs C++ is an interesting open question. In theory C++ has the faster exception handling impl
13:42:09Araqbut I also heard rumors of C++ being 2x slower on some code for unknown reasons
13:43:34FromDiscord<Recruit_main707> i feel like "echo" in c++ was WAYYYYY slower
13:43:47FromDiscord<Recruit_main707> i havent checked it in a while though
13:44:08FromDiscord<Recruit_main707> but it was making my program go slow
13:44:10Araqmakes no sense though, we don't use 'cout' or anything
13:44:38FromDiscord<Recruit_main707> i dont know why, and it only happened in the cpp backend, c was fine
13:47:52*nsf quit (Quit: WeeChat 2.8)
13:48:12Araqwell, 'fusion' package? yay or nay?
13:48:49FromDiscord<Rika> for what?
13:49:51Araqfor growing Nim in an easier way
13:50:39FromDiscord<Recruit_main707> could be interesting
13:50:45FromGitter<alehander92> well, if the core team wants to maintain all this
13:51:14FromGitter<alehander92> (talking in the worst case where n packages get stale)
13:51:43Araqalehander92: currently we have packages under nim-lang that lack CI
13:51:59Araqand I accepted PRs and now for example 'zip' is broken on Windows
13:52:31Araqmaintaining *instead* 'fusion' would be easier than this mess of dozens of little packages
13:52:44FromGitter<alehander92> ok, for small packages it probably makes sense
13:53:31FromGitter<alehander92> does this mean eventually more of stdlib might move *to* fusion one day
13:53:51Araqstale packages are a problem either way but this way at least they keep compiling
13:54:56Araqyeah we can move more of the stdlib to extensions too
13:58:32Araqand here is one more idea: we keep the versioning in the directory hierarchy. say we have fusion/htmlparser and at some point too much stuff in there is .deprecated. then we should introduce fusion/2/htmlparser and both can import fusion/private/htmlparser_impl.nim, no code duplication and code that imports fusion/htmlparser continues to compile
14:00:17Araqas you can see, I'm trying to get into the lovely fairy world where code is immutable
14:00:21FromGitter<alehander92> hm
14:02:02*xet7 quit (Quit: Leaving)
14:02:39companion_cubeAraq: have you read about the unison language?
14:04:15*xet7 joined #nim
14:04:57Araqcompanion_cube: yes I do
14:05:21companion_cubecool, there are some interesting ideas in there (about immutability indeed)
14:06:02*xet7 quit (Remote host closed the connection)
14:06:23*xet7 joined #nim
14:17:31FromDiscord<mratsim> can we add monorepo support to nimble before "fusion"?
14:18:53Araqnimble does support multiple nimble projects per repository already
14:20:10FromDiscord<mratsim> oh? so the installation path would stay nimble install zip or nimble install sdl2?
14:20:21FromDiscord<mratsim> assuming both are put in a fusion monorepo?
14:21:18narimiran@mratsim see https://github.com/nim-lang/graveyard
14:37:48FromDiscord<Disciple> New to Nim, does the compiler not warn against procedures that have a return type but don't return anything in the body?
14:38:51FromDiscord<Rika> no
14:39:22FromDiscord<Rika> because there is an implicit result variable
14:39:26FromDiscord<Rika> (i assume)
14:40:27liblq-devyeah, not returning anything isn't harmful in most cases but it could warn you if you forget to assign to `result`
14:40:32Araqthere is a warning for it but only for types that lack default(T)
14:42:41FromDiscord<clyybber> @mratsim Do you think https://github.com/nim-lang/Nim/issues/13193 should be high priority?
14:42:44disbotβž₯ Type tyAnything can't be matched to proc argument of typedesc type ; snippet at 12https://play.nim-lang.org/#ix=2iWM
14:43:57Araqclyybber: iirc I tried to fix that one and it's hard
14:44:14FromDiscord<mratsim> for me it's blocking but I don't know if supportsCopyMem in a type section is that popular a feature
14:44:28Araqone idea that I had was to introduce tyTypedesc2 and get it right this time
14:44:43Araqand then we can deprecate typedesc for typedesc2.
14:44:58Araqcurrently whenever I try to fix too much wrt typedesc too much stuff breaks
14:45:26Araqwe could use a better name than typedesc2 for it though
14:45:43FromDiscord<mratsim> the whole generics/static/typedesc is quite tricky
14:46:10Araqone after the other, typedesc seems more important than "generic sandwiching" IME
14:46:18FromDiscord<clyybber> @mratsim Does it work when you do CpuStorage[T: type] instead?
14:46:30FromDiscord<mratsim> When I need to deal with them in macros, I'm like "Okay, do I really want to do this? Do I have a weekend to fight the inevitable bugs?"
14:47:29Araqmratsim: do not conflate everything together, typedesc is tricky but "working with types inside macros" is a different topic
14:48:23Araqbut the same solution might be applicable, leave the old stuff alone, introduce new magics and identifiers and macro procs that do what we really want them to do
14:48:27FromDiscord<clyybber> Ha
14:48:32FromDiscord<clyybber> I think I know the source
14:48:34FromDiscord<clyybber> of that bug
14:48:52FromDiscord<clyybber> Its that in `Generic[T]` the T defaults to any
14:49:01FromDiscord<clyybber> and not to type
14:49:03FromDiscord<clyybber> as it should
14:49:17FromDiscord<mratsim>
14:49:17FromDiscord<mratsim> https://cdn.discordapp.com/attachments/371759389889003532/702169089078198363/unknown.png
14:49:19FromDiscord<clyybber> So it makes sense that you can't call supportsCopyMem
14:49:47FromDiscord<clyybber> Oh, I have to test your original snippet
14:49:53FromDiscord<clyybber> Only tested cooldomes minified one
14:49:56FromDiscord<mratsim> I'm not conflating, everything related to generic/static/typedesc types is tricky
14:50:00FromDiscord<mratsim> both macros and semchecks
14:50:26FromDiscord<clyybber> @mratsim Yeah, works for me
14:50:32FromDiscord<clyybber> I'll comment on github
14:50:50FromDiscord<mratsim> I can't assign the result
14:51:01Araqmratsim: they are different features and implementations
14:51:21disruptekthe fusion idea doesn't compel me at all.
14:52:02FromDiscord<clyybber> mratsim: Can you give me an example?
14:52:03FromDiscord<mratsim> it may be different but it's about the same "layer"/"object"/"concept"
14:52:41Araqdisruptek: why not?
14:53:16disrupteki dunno what to tell you. change that doesn't change anything changes nothing.
14:53:50Araqwhat should we change instead?
14:53:51disrupteki will wait for the RFC update; maybe i've missed something.
14:54:04disruptekcreate a working pattern to solve the module imports issue.
14:54:15disrupteki have a feeling it's already doable, but i haven't tested it yet.
14:54:25Araqwhat is the "module imports issue"?
14:54:35disruptekmove forward on the pm->builder->compiler pattern.
14:54:42FromDiscord<mratsim> @clyybber that's not even the error I have but here is one: https://play.nim-lang.org/#ix=2iWS
14:54:59disruptekthe issue with imports, exports, circular imports, w/e.
14:55:13disruptekmake nimsuggest support include so we can actually use it.
14:55:23Araqit does support 'include'
14:55:30disrupteknot /enough/
14:55:50FromDiscord<mratsim> and this one is an ICE: https://play.nim-lang.org/#ix=2iWT
14:55:55disruptekiirc it's broken by forward decls too.
14:56:06disruptekleorize knows all.
14:56:18AraqI'll wait for him then
14:59:09disrupteki think i'm back to wasting time on generics.
14:59:34disruptek~stream
14:59:35disbotstream: 11https://twitch.tv/disruptek (live video/audio) and mumble://uberalles.mumbl.io/ (live voice chat) -- disruptek
14:59:39disruptekbut streaming about something else.
14:59:41disruptekanything else.
15:00:49FromDiscord<clyybber> @mratsim Hmm, yeah the compiler trips over that explicit `: type`
15:01:03FromDiscord<clyybber> @mratsim Your ICE is fixed when using `: not static` instead :p
15:01:14FromDiscord<mratsim> ...
15:01:25FromDiscord<mratsim> I've also used static to fix bug in the generic code
15:01:31disruptekhttps://github.com/juancarlospaco/nim_packages_security_audit
15:01:41companion_cubedamn, how do you see anything with that contrast in your editor
15:02:13companion_cubeyep :p
15:02:24FromDiscord<mratsim> This openarray semcheck bug is fixed by using a dummy static parameter: https://github.com/nim-lang/Nim/issues/6343
15:12:08FromDiscord<clyybber> Araq: FWIW pony also doesn't have scope based destruction yet (or may never have it)
15:12:30Araqdoes Pony have destructors?
15:13:18FromDiscord<clyybber> Yeah
15:13:29FromDiscord<clyybber> But they are not overridable
15:13:40FromDiscord<clyybber> More like, they have a GC and finalizers
15:14:14FromDiscord<clyybber> And the GC only collects stuff from some "proc" after that proc has run
15:14:25AraqI want scope based destruction, it would further improve the generated machine code
15:14:44companion_cubeyou mean RAII?
15:15:08FromDiscord<clyybber> Araq: Yeah
15:15:23FromDiscord<clyybber> companion_cube: Similar concept yeah
15:15:27Araqcompanion_cube: yeah (the term is terrible though)
15:15:35companion_cubeyeah but it's well known by now
15:19:35FromDiscord<exelotl> Hey I published my GBA image conversion library :)
15:19:39FromDiscord<exelotl> https://github.com/exelotl/trick
15:19:51FromDiscord<clyybber> nice! just saw the PR for the pkglist
15:21:46FromDiscord<clyybber> @exelotl If you want a challenge you could try doing all this at compile time
15:22:13FromDiscord<clyybber> So that you can say loadImg("somePng.png")
15:22:25FromDiscord<clyybber> Directly in your games code I mean
15:24:39*natrys joined #nim
15:25:54FromDiscord<mratsim> @Araq, did you read the scope-based mangement of the scopes programming language?
15:26:42Araqyeah I think I did
15:27:04Faulanderdoes encodeQuery only accept one type?
15:27:05FromDiscord<clyybber> lritter hops on this channels sometimes
15:29:16Faulanderhttps://play.nim-lang.org/#ix=2iX2
15:30:51FromDiscord<exelotl> @clyybber Hmmm I wonder how viable that would be. I do have something in my game where you add the image to a config file. So if you add dog.png with 4bpp, 32x32 pixels, then gfxDog becomes available in the game code and you don't have to remember the bit depth or size because they're known at compile time
15:31:25FromDiscord<exelotl> You still have to remember to run the tool though, whenever you add or change an image
15:32:53FromDiscord<clyybber> Hmm, that should be possible to automate
15:33:05FromDiscord<clyybber> at least via staticExec
15:33:55FromDiscord<exelotl> Yep, but I'm tending to stay clear of staticexec nowadays, cause it's a can of worms that doesn't play nice with nimsuggest
15:34:22FromDiscord<exelotl> I think a simpler/more primitive solution isn't such a bad thing
15:34:32FromDiscord<clyybber> sure
15:35:35*Guest18401 is now known as dadada
15:35:43dadadahi
15:36:17dadadacan I use nim's parser at runtime? somehow?
15:37:00FromGitter<sealmove> dadada yes, you have to use the compiler API
15:37:03FromDiscord<clyybber> via the compiler api maybe.
15:37:38FromGitter<sealmove> Is it possible to specify multiple executables in a nimble package>
15:39:04FromDiscord<sealmove> dadada: https://github.com/nim-lang/Nim/blob/devel/tests/compilerapi/tcompilerapi.nim
15:41:01dadadasealmove: great, thank you!
15:42:09dadadaanother option occured to me just now, I could call nim as external program and let it dumpTree things for me
15:45:35FromDiscord<sealmove> Why not dump Nim code? Then you have a proc ready for you for parsing back to AST
15:51:51*pbb quit (Ping timeout: 272 seconds)
15:52:05*pbb joined #nim
15:59:00FromDiscord<mratsim> the compiler API is broken for me: https://github.com/nim-lang/Nim/issues/12293
15:59:01disbotβž₯ compiler as a library: findNimStdLibCompileTime fails to find system.nim ; snippet at 12https://play.nim-lang.org/#ix=22qc
16:00:33*fputs joined #nim
16:00:49FromGitter<brentp> is there something i need to do to get zig working as compiler? I installed zig 0.6.0 and then run `nim c --cc:zig x.nim` on a hello world example
16:01:17FromGitter<brentp> but I get a lot of errors, including `home/brentp/.cache/nim/x_d/stdlib_system.nim.c:428:50: error: expected ')' ⏎ static N_INLINE(NIM_BOOL, nimSubInt)(NI a, NI b, NI* res);`
16:06:18FromGitter<alehander92> please look for one issue where people found the flags to do it
16:09:53FromGitter<alehander92> hm ok http://webcache.googleusercontent.com/search?q=cache:https://github.com/ziglang/zig/issues/5055 seems
16:10:00FromGitter<alehander92> maybe as a different issue , sorry
16:10:29FromGitter<brentp> https://github.com/nim-lang/Nim/pull/13757 is what i find.
16:10:31disbotβž₯ Add support for `zig cc` as C compiler.
16:11:12*rockcavera quit (Read error: Connection reset by peer)
16:11:30FromGitter<brentp> and https://github.com/nim-lang/Nim/pull/13957
16:11:30*rockcavera joined #nim
16:11:30*rockcavera quit (Changing host)
16:11:30*rockcavera joined #nim
16:38:05*r4vi quit (Ping timeout: 272 seconds)
16:38:16*lritter quit (Ping timeout: 256 seconds)
16:38:43*l1x quit (Ping timeout: 272 seconds)
16:40:52*noonien quit (Ping timeout: 256 seconds)
16:41:00*l1x joined #nim
16:41:05*msmorgan quit (Ping timeout: 240 seconds)
16:41:08FromDiscord<sealmove> Is there a macro for not repeating echo all the time?
16:41:15*LyndsySimon quit (Ping timeout: 272 seconds)
16:41:27*r4vi joined #nim
16:41:33FromDiscord<sealmove> e.g.:
16:41:33FromDiscord<sealmove> ```nim
16:41:34FromDiscord<sealmove> echoMacro:
16:41:34FromDiscord<sealmove> thisString
16:41:34FromDiscord<sealmove> theString
16:41:34FromDiscord<sealmove> ```
16:41:50FromDiscord<Recruit_main707> echo can work that way
16:41:57FromDiscord<Recruit_main707> its not recommended though
16:42:03FromDiscord<Recruit_main707> but it will work
16:42:21FromDiscord<Recruit_main707> or you mean multiline strings?
16:42:27*msmorgan joined #nim
16:43:05*noonien joined #nim
16:43:13FromDiscord<sealmove> single line is ok. why it's not recommended?
16:43:25FromDiscord<Recruit_main707> idk, its in the docs iirc
16:43:34*LyndsySimon joined #nim
16:43:47*hsh quit (Ping timeout: 272 seconds)
16:43:58yumaikassealmove: Why not just use a multiline string?
16:45:13FromDiscord<sealmove> example?
16:45:22*hsh joined #nim
16:46:16FromDiscord<sealmove> My code is like "print 3 lines, then run some code, then print 2 lines, run some code, print 4 lines"
16:46:56FromGitter<alehander92> just alias it to something like `e`
16:47:16FromGitter<alehander92> or inject automatically echoes around statements
16:48:40FromDiscord<mratsim> @sealmove it's easy to write a macro that does that
16:49:07FromDiscord<sealmove> "inject automatically echoes around statements" this sounds interesting, how to do?
16:49:07FromDiscord<mratsim> you can check the code of the `check` macro/template in unittest, it insert something at each statement
16:50:17FromDiscord<mratsim> otherwise just macro echoAll(body: untyped): untyped = for s in body: newCall(bindSym"echo", s)
16:50:41FromDiscord<mratsim> ah sorry forgot a result = newStmtList() and result.add newCall(bindSym"echo", s)
16:50:58FromDiscord<sealmove> awesome πŸ™‚
16:52:23FromDiscord<mratsim> https://play.nim-lang.org/
16:52:32FromDiscord<mratsim> https://play.nim-lang.org/#ix=2iXF
16:54:12Faulanderhow do i create a linebreak in nims created documentation?
16:54:12FromDiscord<sealmove> mratsim this is exactly what I was looking for :>
16:55:16FromDiscord<mratsim> added to my cookbook: https://github.com/status-im/nim-cookbook/blob/master/multiline_echo.nim
16:58:46*Lord_Nightmare quit (Quit: ZNC - http://znc.in)
16:59:49*Trustable joined #nim
17:00:46FromDiscord<sealmove> Maybe I will make the macro take 2 strings per row and output them in a tabular format
17:00:50*Lord_Nightmare joined #nim
17:00:51FromDiscord<sealmove> would that be too hard to do?
17:03:16FromDiscord<Rika> i dont think so
17:04:21yumaikassealmove: By the time you're going for tabular output, you're in territory of things that might not make sense in a macro. At least, if you want to align your text all nice and pretty
17:05:43FromDiscord<mratsim> what you can do is have something that work on regular strings and then call it at compile-time, possibly via a macro that first call "repr" on statements on each lines
17:08:06*hax-scramper quit (Read error: Connection reset by peer)
17:08:24*hax-scramper joined #nim
17:10:25*hax-scramper quit (Read error: Connection reset by peer)
17:11:21*hax-scramper joined #nim
17:11:29FromDiscord<sealmove> well I want to easily print something like this:
17:11:29FromDiscord<sealmove> ```nim
17:11:30FromDiscord<sealmove> &"""{"Relative path":<25} | {lnk.relPath.str}"""
17:11:30FromDiscord<sealmove> &"""{"Absolute path":<25} | {absolute(lnk.workDir.str, lnk.relPath.str)}"""
17:11:30FromDiscord<sealmove> ```
17:12:24FromDiscord<Recruit_main707> when you run nim with the --header, does it include the intermediate c file?
17:12:24FromDiscord<Recruit_main707> ie: `nim c --header file.nim`
17:12:24FromDiscord<Recruit_main707> will `file.h` contain #include `file.c`?
17:12:33FromDiscord<sealmove> hmm, I think I know how to do it, need to first make a regular proc
17:21:25leorizeRecruit_main707: the --header switch is deprecated
17:21:44FromGitter<alehander92> hm, i will rename `lodka` to `study-kernel` and build it with :arc
17:21:59FromGitter<alehander92> but i plan to use the async/await macro there
17:22:05FromGitter<alehander92> wonder if it will work out
17:22:52FromDiscord<Recruit_main707> leorize, why?
17:23:10FromDiscord<Recruit_main707> it could be very useful for interoping with c/c++
17:23:26FromDiscord<Recruit_main707> nim -> c/c++ that is
17:25:34leorizethe exact lines from Araq: "Nim is not a header generator"
17:26:22*drewr quit (Ping timeout: 260 seconds)
17:26:29leorizebtw Araq, this is the problematic bug in nimsuggest: http://ix.io/2iXP/nim
17:27:55FromDiscord<Recruit_main707> is there onther, as easy way for interoping nim -> c/c++?
17:28:20Yardanicowhat would be a good way to check if a float can be represented as int without any loss?
17:28:34Yardanicolike 5.0 can be "safely" represented as 5 but not 5.5
17:28:53companion_cubeturn to int, then back to float, check for equality?
17:29:00Yardanicoyeah I also thought like that
17:29:05Yardanicojust feels like it might be not the best way :P
17:29:42FromDiscord<Recruit_main707> + --header would help people to easily use nim in their work because in the end it would be as writing normal c, (unless there is anoteher way that i am not concern of)
17:29:59Yardanicofloat(int(a)) == a I guess
17:30:13leorizeI think the problem with --header is that it depends heavily on Nim
17:30:20leorizeyou need nimbase.h, I'm sure of that
17:31:15leorizeYardanico: `==` never works well for float fwiw
17:31:29FromDiscord<Recruit_main707> wasnt nimbase.h gonna be deprecated also?
17:31:55leorizeYardanico: maybe `a - trunc(a) <= some small number`
17:32:19leorizeRecruit_main707: yea but it's not here anytime soon
17:33:11FromDiscord<Recruit_main707> (if you ask me, just print it directly in each file :P )
17:33:26FromDiscord<Recruit_main707> or add it to the cache
17:34:25FromGitter<awr1> hello
17:34:30FromDiscord<Recruit_main707> hi
17:35:13FromDiscord<Recruit_main707> leorize: as a last question and then i let it be, what would be the next easiest way to interop nim -> c/c++?
17:35:55FromGitter<awr1> what do you mean, like getting C to call nim?
17:36:01leorizemake your own header generator :P
17:36:22FromDiscord<Recruit_main707> that sounds unfun having one :(
17:36:31leorizethe bad thing about --header is that it also generates header for... everything
17:36:41FromDiscord<Recruit_main707> does it?
17:36:55leorizeafaik, yea
17:37:08FromDiscord<Recruit_main707> last time i used it, i think it didnt
17:37:13FromDiscord<Recruit_main707> let me check
17:37:17leorizewell a header generator might just be a macro
17:37:40leorizeI thought of making one but currently I'm busy with other projects
17:49:10FromDiscord<Recruit_main707> how did you avoid that nim optimized your functions by passing pointers?
17:54:58*nickster quit (Quit: Ping timeout (120 seconds))
17:57:01leorize`{.bycopy.}`
17:57:13*pydsigner quit (Ping timeout: 264 seconds)
17:57:28FromDiscord<Recruit_main707> well, its not giving a fuck about it :P
17:57:43leorizeuse bycopy on the type itself
17:57:44*hax-scramper quit (Ping timeout: 258 seconds)
17:57:53FromDiscord<Recruit_main707> i am
17:58:02leorizethat's weird
17:58:03*pydsigner joined #nim
17:58:06leorizeany examples?
17:58:22FromDiscord<Recruit_main707> is it because its `var Type`?
17:58:36leorizewell obviously lol
17:59:17FromDiscord<Recruit_main707> var is just a pointer to an initialised object?
17:59:34leorizeyea, it's implemented as a pointer to something
17:59:38leorizeI mean that's the only way
18:00:54*nickster joined #nim
18:01:41Faulanderi just managed to write the 500th line of nim code in an program. congratulate me, way to go! ;)
18:01:51leorizewoooo \o/
18:02:00FromDiscord<Recruit_main707> nice
18:02:17FromDiscord<Recruit_main707> i dont think i have even reached 500 lines in a single file xD
18:02:20Faulandernot too bad for only a few days of (mostly) struggling around, hahaha
18:03:30*junland quit (Quit: %ZNC Disconnected%)
18:04:41Faulanderi am still struggling with some basic concept and the tooling, i wish there would be documentation for ppl not coming from a C background. The "Nim for python programmers" was VERY helpful though.
18:05:24FromGitter<alehander92> nice
18:05:54*hax-scramper joined #nim
18:05:55Faulanderi think i will create a library out of it ... if i sometimes find out, how do :)
18:07:28Faulanderi have one last question today. i have installed nim with scoobe and araq threw into the room, that i should use koch doc if i want to create markdown documentation (my code is very well documented). but i don't have koch (a name i like as native german speaker)
18:08:08leorizeah koch docs is for the compiler only
18:08:12*thomasross quit (Read error: Connection reset by peer)
18:08:13*junland joined #nim
18:08:19leorizefor your project there's nim doc --project
18:08:29Faulanderand that creates markdown?
18:08:59leorizeoh wait you want to generate markdown?
18:09:07narimiranFaulander: that creates .html
18:09:09Faulanderi thought thats only if you have more files ... i yet have to split up the source in different files
18:09:12FromGitter<alehander92> hm, cant nim doc create makrdown
18:09:20FromGitter<alehander92> i almost never try to run that
18:09:31Faulanderi just want to create github readme.md with it :)
18:09:41leorize!repo mddoc
18:09:42disbothttps://github.com/treeform/mddoc -- 9mddoc: 11Generated Nim's API docs in markdown for github's README.md files. Great for small libraries with simple APIs. 15 5⭐ 1🍴
18:10:29Faulanderthank you so much @leorize and good night!
18:11:14*pydsigner quit (Ping timeout: 240 seconds)
18:12:34*junland quit (Client Quit)
18:12:50FromGitter<alehander92> huh it just doesnt work for me
18:13:28FromDiscord<sealmove> Guys, for those interested, I changed the project to a framework (collection of simple executables): https://github.com/sealmove/kaitai_struct_forensics
18:13:54FromDiscord<sealmove> Oops, forgot to change the description
18:15:03*junland joined #nim
18:15:14*hax-scramper quit (Ping timeout: 256 seconds)
18:15:29FromGitter<alehander92> oh sorry it works
18:15:36FromGitter<alehander92> i need to pass the flags that i pass to my build
18:16:08*pydsigner joined #nim
18:16:36FromGitter<alehander92> i really want a white background!
18:16:48*hax-scramper joined #nim
18:18:05FromDiscord<sealmove> I am hoping to replace the stupid endless jungle of fragmented/different platform forensic tools with a consistent framework which uses auto-generated parsers by Kaitai Struct. I think Nim can shine in this field! It's perfect because of the easy syntax + being low level which is important in forensics.
18:22:53FromGitter<alehander92> huh it is white
18:23:04federico3sealmove: but we need better integration and tooling around kaitai
18:23:05FromGitter<alehander92> i maybe want more different code clocks color
18:23:13FromGitter<alehander92> just so hard to undestand for me
18:23:20FromGitter<alehander92> comparing it to rust/zig they just seem white-r
18:23:27FromGitter<alehander92> but it seems its an illusion
18:27:17livcdI have heard of kaitai before oO
18:28:13FromDiscord<sealmove> Will probably add IDE support soon
18:44:20*Guest94576 joined #nim
18:45:15*Guest94576 quit (Client Quit)
18:54:39*PMunch quit (Quit: leaving)
18:56:02*waleee-cl joined #nim
18:58:27FromDiscord<mratsim> you need to expand the README @sealmove I have absolutely no idea how to use those
18:59:51FromDiscord<sealmove> It's very early stage now, I've only started making the first executable (for Windows Link Files). I will also add help in the executables (`-h` option). If you want to try it for now, it's just `wlf <path_to_file>`.
19:00:59FromDiscord<sealmove> install with nimble or manually by compiling `tools/wlf.nim`
19:15:18*nickster0 joined #nim
19:15:46*nickster quit (Quit: The Lounge - https://thelounge.chat)
19:17:11*nickster0 quit (Client Quit)
19:18:34*nickster joined #nim
19:44:05*inv2004 joined #nim
19:47:01*inv2004 quit (Client Quit)
19:47:35*inv2004 joined #nim
19:48:57inv2004Is it possible to have recursive imports? google says better to not ask it here :)
19:49:27FromDiscord<sealmove> you mean cyclic imports?
19:49:34FromDiscord<sealmove> no, it's not implemented yet
19:49:50FromDiscord<sealmove> Probably Nim 2.0
19:50:10inv2004trying to find include which could help
19:51:38*inv2004 quit (Client Quit)
19:52:43*inv2004 joined #nim
19:59:12*fputs quit (Quit: WeeChat 2.8)
20:03:39inv2004src/k_f.nim(3, 1) Error: redefinition of 'len'; previous declaration here: src/k_f.nim(3, 6)
20:03:45inv2004?!? It is the same file
20:03:50inv2004and line
20:04:15Yardanicocan you show this line?
20:04:23inv2004proc len(x: K): clonglong =
20:04:35inv2004If I do :int - the same error
20:04:42solitudesfthats because of includes
20:05:25inv2004Ah! :)) I forgot about the include I did 2 mins ago, but you remember it
20:10:02*inv2004 quit (Quit: Leaving)
20:16:35FromGitter<bung87> is there a objc runtime binding ?
20:17:55FromGitter<bung87> I want fix old c version webview but the `objc_msgSend` looks ugly
20:21:31shashlick@PMunch - still around?
20:25:08FromDiscord<Varriount> inv2004: Technically you can have cyclic imports, but the behavior works in much the same way Python's recursive import behavior works.
20:26:26FromDiscord<Varriount> If module `A` imports module `B`, and then module `B` imports module `A`, module `B` will only have access to types/procedures defined from module `A` up to its import of module `B`.
20:28:47leorizethat kind of import only works one way fwiw
20:29:16leorizeie. if you make module `a` work like that, you can only compile module `a`, if you compile module `b` it won't work
20:35:11*ehmry quit (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
20:37:01*liblq-dev quit (Quit: WeeChat 2.7.1)
20:39:29PrestigeCan someone explain something about tables? https://play.nim-lang.org/#ix=2iZq
20:39:49PrestigeI'm attempting to do that latter but get an error about type info, but the first example works. I'm a little confused
20:41:26*narimiran quit (Ping timeout: 256 seconds)
20:42:20YardanicoPrestige: it works if you do initTable[string, proc()]()
20:42:55PrestigeYeah just found that out, I thought it wouldn't because if I change the table `bar` to be declared with [string, proc()] I would get a type error lol
20:44:29Yardanicoalso btw I just tested my recursive descent math evaluator (mathexpr) and it's ~35% faster (well I did some arc optimizations for that lib in the past but it wasn't that fast)
20:44:36Yardanicoalso with --gc:arc the results are consistent :P
20:45:02Yardanico160k iterations/sec for evaluating "2+2*2-3*5125-12512+25125*44-33+2*2"
20:46:53FromDiscord<Elegant Beef> So using imgui for a status bar is silly, no such thing as alignment as far as i see
20:46:56FromDiscord<Elegant Beef> So im smart!
20:47:55*ehmry joined #nim
20:57:58companion_cubeyou mean horizontal alignment?
20:58:12FromDiscord<Elegant Beef> Yea
20:58:13Yardanicoby the way guys I'm using TabNine with nim extension in VSCode and so far it's pretty good
20:58:27Yardanicosometimes it's so smart that I'm scared
20:58:39Yardanicowell, rather not smart but analyses the code very well
20:58:49FromDiscord<Elegant Beef> You cant exactly go "i want x widgets left aligned these center aligned and these right aligned"
20:58:52Yardanicoso I have this case statement https://github.com/Yardanico/nim-lox/blob/master/src/debug.nim#L38
20:58:56companion_cubeah well, it's quite direct in terms of rendering
20:59:07companion_cubeisn't a status bar something thin, though?
20:59:09Yardanicoand when I needed to write a new one, I started doing "of OpLess: " and then TabNine autocompleted the WHOLE line
20:59:12companion_cube(if it's like i3-status)
20:59:14FromDiscord<Elegant Beef> I might make three groups though
20:59:15Yardanicoto " of OpLess: simpleInstruction("OP_LESS", offset"
20:59:18Yardanicolike literally
20:59:23FromDiscord<Elegant Beef> Yea it's 30 pixels atm
21:00:11companion_cubebeef: have you looked at the demo window? there's some layout instructions it seems
21:00:16FromDiscord<Elegant Beef>
21:00:16FromDiscord<Elegant Beef> https://cdn.discordapp.com/attachments/371759389889003532/702262449449074776/unknown.png
21:00:23FromDiscord<Elegant Beef> I havent actually
21:00:28FromDiscord<Elegant Beef> That's currently what my status bar is
21:00:37companion_cubeah, there's a ImGuiShowDemoWindow or something like that
21:00:41companion_cubesuper useful to see what's available
21:00:48FromDiscord<Elegant Beef> Yea i know, havent looked at it though
21:01:36FromDiscord<Elegant Beef> Launcher is just so i can launch applications inside xephyr since my WM blocks all my inputs
21:25:20skrylar[m]some days i lament we can't just ban people from having more products because stuff like teams is just going to ride off "it's microsoft, so we'll use it" and the actual merits of literally anything else will be ignored because just the name is enough, and nobody else can "be microsoft," so anything they decide to push doesn't even have to be that good. but we seemingly can't, so, bleh.
21:26:30PrestigeHm I need to learn how nim reads modules. My current setup isn't allowing me to use windowmanager.nim https://0x0.st/i1FY.png
21:26:35skrylar[m]@earlier
21:27:53YardanicoPrestige: how do you import stuff?
21:35:42FromDiscord<mratsim> I'm quite happy of the graph generator of Synthesis: https://github.com/mratsim/Synthesis/#sync-await-a-task-that-may-be-spawned-on-another-thread
21:37:34Yardanico@mratsim yeah I saw that PR in weave it's very cool!
21:40:32FromDiscord<Recruit_main707> leorize: since var is a pointer, will `ptr Type` be compatible with `var Type` also?
21:44:46leorizeno
21:44:57leorizethe fact it's a pointer is just an implementation detail
21:45:22leorizetechnically speaking `var` will be compatible with `ptr`, but not the other way around
21:45:46FromDiscord<Recruit_main707> ok
21:46:14leorize`var` semantics let it assumes that there can't be any `nil` pointer passed
21:46:19leorize`ptr` doesn't have that
21:46:41FromDiscord<Recruit_main707> i see
21:48:14*solitudesf quit (Ping timeout: 256 seconds)
21:50:39*Vladar quit (Quit: Leaving)
21:54:18PrestigeYardanico: from nimdow.nim, import nimdowpkg/windowmanager doesn't work
21:54:55PrestigeBut the modules in nested directories work, like import nimdowpkg/config/config
21:54:56*tane_ quit (Quit: Leaving)
21:57:34*natrys quit (Quit: natrys)
22:01:22*hax-scramper quit (Read error: Connection reset by peer)
22:01:31Yardanicodamn 4raq is merging so much PRs my notifications get blown up :P but it's all for the best
22:01:39*hax-scramper joined #nim
22:17:30leorizedom96: when should I call `GC_unref()` on a `Custom` object?
22:18:32dom96context?
22:18:44shashlickdoes cligen have a way to do `-d -d -d` for increasing debug level
22:19:06leorizedom96: I've just called an overlapped operation, and it finishes without having to go async
22:19:35leorizedo I unref my `Custom` there?
22:19:59dom96honestly cannot remember, see what the stdlib code does
22:20:36leorizeasyncdispatch is known to leak on windows, I don't think seeing the stdlib code is a good bet
22:20:53leorizebut I'm seeing differing opinions here
22:21:08leorizestdlib don't unref if an overlapped operation completes before having to go async
22:21:22leorizebut cheatfate's asynctools unref if that happens
22:28:03FromDiscord<Recruit_main707> [about flatbuffers]
22:28:03FromDiscord<Recruit_main707> > i am pretty happy with how the table transpilation has resulted, i think i got generics right, if you spot something tell me pls.
22:28:04FromDiscord<Recruit_main707>
22:28:04FromDiscord<Recruit_main707> How is it looking guys?
22:28:04FromDiscord<Recruit_main707> (this is based on the python implementation:
22:28:06FromDiscord<Recruit_main707> https://github.com/google/flatbuffers/tree/master/python/flatbuffers/table.py
22:28:06FromDiscord<Recruit_main707> https://play.nim-lang.org/#ix=2j09
22:28:46FromDiscord<Recruit_main707> I should have left a bit of space between the URLs :P
22:29:14dom96leorize: is asyncdispatch known to leak on windows? Do you have an issue?
22:30:32leorizeno, but from a lot of code snippets complaining about memory leaks with async, I noticed that none of the leaks happen on linux
22:31:20leorizeeither it's a difference in how the gc release memory, or it's a difference between how asyncdispatch handle its memory
22:31:38leorizeI'm skeptical since I'm seeing GC_ref and GC_unref all over the place
22:32:46leorizeI'm looking for documentation regarding if IOCP still notify for operations completed on-the-spot
22:33:25dom96async definitely leaked memory on linux
22:33:34leorizeif it doesn't then we're leaking a bunch, at least in asyncdispatch
22:33:38dom96(I saw it with my own eyes :))
22:34:06dom96but yeah, that logic may be wrong. I vaguely recall getting crashes when doing gc_unref there and seeing some weird behaviour from IOCP
22:34:06disruptekdoesn't leak for me in the testament test.
22:34:57*NimBot joined #nim
22:35:14dom96^ That NimBot crash was likely due to a leak :)
22:35:24dom96But I would guess it was fixed by now, I haven't recompiled it in too long
22:39:48leorizeat least one source said iocp would still notify for operations done immediately
22:40:01leorizebut the said source also say that it's configurable
22:40:33dom96test it, write to a writeable socket or something
22:41:53Yardanicolmaooo
22:42:05Yardanicoguess what error I got when I tried to run paramCount in js backend with -d:nodejs?
22:42:07Yardanico"Error: Error: unhandled exception: paramCount is not implemented on Nintendo Switch [OSError]"
22:42:53FromDiscord<Recruit_main707> Bruh
22:43:09Yardanicowell nim has a nintendo switch target, but it was unexpected seeing this error for JS backend
22:43:47FromDiscord<Recruit_main707> They didn't even expect people trying so they didn't even make an error for that cases xD
22:44:03leorizeI made a PR error out at compile time
22:44:16leorizeto make it ^
22:44:19FromGitter<timotheecour> > *<leorize>* `var` semantics let it assumes that there can't be any `nil` pointer passed ⏎ ⏎ then why don’t we rename `not nil` to `var`?
22:44:44leorizetimotheecour: because it's not the same thing?
22:45:59leorizeyou can do this `procThatTakeVar(nil[])` with var
22:46:23leorizebecause by Nim logic it already errored out the moment you deref `nil` to pass into the var param
22:47:03leorizeso by definition, the `var` param will never take a `nil` pointer in Nim, which is why it can assume that
22:48:25shashlick@Recruit_main707 - did the flatcc wrapper work out?
22:48:53FromDiscord<Recruit_main707> Nope, I didn't try that much not gonna lie
22:49:00FromGitter<timotheecour> @leorize ya ok, that was a bad idea.
22:50:14shashlickokay
22:51:29FromDiscord<exelotl> mannn it's not possible to overload `with` from the standard library, is it...
22:51:53leorizeit should be possible?
22:52:37FromDiscord<Recruit_main707> Also, I am giving another try to implementing flatbuffers in pure Nim, I have 3 possible solutions to my problem, wrapping those headers would be the easiest, but a bit ugly.
22:52:54FromDiscord<exelotl> it takes untyped arguments, so if both `std/with` and my custom `with` are imported, I'll always get an error due to ambiguity
22:53:16leorizemake yours take typed :P
22:56:21FromDiscord<Recruit_main707> shashlick: if I give up again and try to wrap the headers, I will let you know and we can give it a try if you have some time
22:57:50Yardanicooh boy I managed to run my (early) Nim implementation of C implementation of Lox from craftinginterpreters
22:57:54Yardanicowith JS backend
22:58:15Yardanicojust needed to add around 40 JS-specific loc for stderr/stdout and reading input
22:58:41FromDiscord<exelotl> leorize: oh, it does work if I avoid generics
22:59:16FromDiscord<exelotl> Bad: template with*[T:SomeRegister](r: T, args: varargs[untyped])
22:59:21FromDiscord<exelotl> Good: template with*(r: SomeRegister, args: varargs[untyped])
23:01:48FromDiscord<exelotl> would there be a way to represent the concrete type of `r` in the body of the "Good" template?
23:01:58FromDiscord<exelotl> since I can't use T
23:03:37FromDiscord<Recruit_main707> Maybe something like: let T = r.typeof
23:05:55*Trustable quit (Remote host closed the connection)
23:08:13leorizedom96: I'm not on windows atm
23:08:27leorizeI'm tempted to ask on stack overflow lol
23:09:41dom96do it
23:11:56shashlick@Recruit_main707: sounds good - it compiled for me on linux, i can try windows if that's what you are targeting
23:19:26leorize[m]dom96: I think I solved it
23:19:44leorize[m]> When a file handle is associated with a completion port, the status block passed in will not be updated until the packet is removed from the completion port. The only exception is if the original operation returns synchronously with an error.
23:20:10leorize[m]from MS docs: https://docs.microsoft.com/en-us/windows/win32/fileio/i-o-completion-ports
23:20:26leorize[m]it appear that it will notify again
23:20:45leorize[m]unless an error occur, ofc
23:24:35leorizejust to be sure I'll have to test this again once I'm on windows
23:26:41leorizeimplementing stuff on top of asyncdispatch is a PITA without any kind of docs whatsoever
23:26:54leorizeI'll see if I can document the low-level bits after I'm done with the project
23:29:14Yardanicongl this looks kinda cool :D https://i.imgur.com/uhsGYTB.png
23:29:31Yardanicomanaged to use google closure compiler for Nim's JS output (for browser, GCC doesn't really support nodejs)
23:30:11YardanicoGCC also said "0 error(s), 128 warning(s), 71.6% typed"
23:31:08leorizenot 100% typed? :P
23:31:28Yardanicono :P
23:32:22YardanicoI'm really suprised nim's js backend is that good
23:33:15*krux02 quit (Remote host closed the connection)
23:38:00dom96I tried closure compiler on my game's JS once
23:38:02dom96It broke the JS :P
23:38:05Yardanicolol
23:55:11*hoffentlichja quit (Quit: leaving)