00:00:04 | FromDiscord | <Elegant Beef> Lol |
00:00:38 | FromDiscord | <Rika> i would say "and discord isnt battle tested?" but we all know that it fucking isnt |
00:00:53 | FromDiscord | <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:45 | FromDiscord | <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:13 | FromDiscord | <Rika> lol they actually dont give a shit |
00:02:24 | FromDiscord | <Elegant Beef> I mean they dont actually, but it's in the TOS, im a good boy! |
00:02:29 | FromDiscord | <Rika> sure |
00:02:54 | FromDiscord | <Yardanico> But did you read Nim's copy of the MIT License?! |
00:03:15 | FromDiscord | <Rika> but its the MIT licens |
00:03:17 | FromDiscord | <Rika> e |
00:03:39 | FromDiscord | <Yardanico> Yes, that's what I meant |
00:04:04 | FromDiscord | <Elegant Beef> *What's his point?* |
00:04:30 | FromDiscord | <Rika> yes |
00:04:38 | FromDiscord | <Yardanico> Ok now I'm going to sleep for real |
00:04:44 | FromDiscord | <Elegant Beef> ok buh bye |
00:04:49 | FromDiscord | <Rika> its 8 am and i havent slept yet either |
00:04:51 | FromDiscord | <Elegant Beef> Dont let the proprietary demons bite |
00:05:10 | FromDiscord | <Rika> dont let the affero demons bite |
00:09:05 | FromGitter | <sealmove> Is there no documention for imGui? |
00:10:16 | FromGitter | <sealmove> Also it seems overly focused on game development |
00:11:16 | FromDiscord | <Elegant Beef> It can be used anywhere |
00:11:20 | FromDiscord | <Elegant Beef> There isnt much documentation for it |
00:11:27 | FromDiscord | <Elegant Beef> The github issues are rather helpful |
00:11:42 | FromDiscord | <Elegant Beef> also the imgui method names in imgui.nim are pretty good |
00:12:09 | FromDiscord | <Elegant Beef> That console was my first usage of imgui, it's not too bad use imo |
00:13:54 | FromGitter | <sealmove> I see... It looks very powerful so it's sad there is no documentation. |
00:15:11 | FromDiscord | <Elegant Beef> The imgui documentation and cimgui examples still apply |
00:15:39 | FromDiscord | <Elegant Beef> https://github.com/ocornut/imgui#how-it-works |
00:16:14 | FromDiscord | <Elegant Beef> Suppose this is better |
00:16:14 | FromDiscord | <Elegant Beef> https://github.com/ocornut/imgui/wiki |
00:17:17 | FromGitter | <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:27 | skrylar[m] | @sealmove immediate mode guis are more or less the exclusive domain of games |
00:20:13 | FromDiscord | <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:05 | skrylar[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:25 | FromGitter | <sealmove> hmm, so why did Yardanico recommend it? https://ide.kaitai.io/ weirdly falls into this category? |
00:21:56 | skrylar[m] | kaitai structs are neat though |
00:22:38 | FromGitter | <sealmove> Yes it's really nice. |
00:22:57 | skrylar[m] | i'm not sure what their ide has to do with immgui though? |
00:23:53 | FromGitter | <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:36 | skrylar[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:23 | skrylar[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:27 | FromGitter | <sealmove> I see. Then it's not ideal for my use case. |
00:27:53 | skrylar[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:11 | skrylar[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:45 | FromGitter | <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:17 | skrylar[m] | only one of those i have used is libui which does work, but is quite limited |
00:38:37 | FromGitter | <sealmove> this seems to hard :| maybe it's not work it |
00:39:16 | FromGitter | <sealmove> contributing to an existing hex editor and adding .ksy highlighting support might be a better solution |
00:39:45 | skrylar[m] | maybe :headbandage: |
00:40:32 | FromDiscord | <Rika> oof |
00:41:35 | skrylar[m] | gtk3 is bearable if you aren't seeking windows support |
00:43:23 | FromGitter | <sealmove> desktop apps is a sad story... |
00:44:44 | skrylar[m] | yea they haven't been replenishing the desktop talent, same for mainframes |
00:49:19 | FromDiscord | <Chiqqum_Ngbata> I read the entire thread on serialization for kaitai structs recently |
00:50:21 | FromDiscord | <Chiqqum_Ngbata> Skeptical that it will happen |
00:51:48 | FromGitter | <sealmove> What will happen? |
00:52:25 | FromGitter | <sealmove> ah |
00:53:23 | FromGitter | <sealmove> Yeah never thought about that till you mentioned it just now xD |
00:56:02 | FromGitter | <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:30 | FromGitter | <sealmove> There is a lot of work to be done on this field |
00:56:50 | FromDiscord | <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:19 | FromGitter | <sealmove> There is a button to upload |
00:57:27 | FromDiscord | <Chiqqum_Ngbata> Must have missed it, lol |
00:57:46 | FromGitter | <sealmove> It has an arrow that faces upwards :P |
01:07:23 | FromDiscord | <Varriount> Kaitai? |
01:08:34 | FromGitter | <sealmove> <_< This project really hasn't get the attention it deserves. Maybe YAML is just that hated. |
01:11:54 | FromDiscord | <Varriount> sealmove: What project |
01:12:45 | * | endragor joined #nim |
01:13:34 | FromGitter | <sealmove> https://kaitai.io/ |
01:13:37 | * | jds_dizzy_ joined #nim |
01:14:04 | FromGitter | <sealmove> Btw it has Nim support :P |
01:14:08 | jds_dizzy_ | How to turn ptr char into a string? |
01:14:58 | * | xcm quit (Remote host closed the connection) |
01:15:04 | leorize[m] | depends on this ptr char you have |
01:15:13 | leorize[m] | is it a NUL terminated string? |
01:15:20 | * | zacharycarter joined #nim |
01:15:22 | jds_dizzy_ | Pretty sure |
01:15:23 | leorize[m] | or does it have a length? |
01:15:38 | leorize[m] | if you're sure that it's a nul terminated one |
01:15:54 | leorize[m] | then `$cast[cstring](your ptr char here)` |
01:16:13 | jds_dizzy_ | And if itβs length based? |
01:16:50 | FromDiscord | <Varriount> Ah, it's like https://construct.readthedocs.io/en/latest/intro.html |
01:17:34 | FromDiscord | <Varriount> sealmove: Is there any reason one couldn't use something like NPEG for this? |
01:18:29 | * | xcm joined #nim |
01:18:43 | leorize[m] | jds_dizzy_: https://play.nim-lang.org/#ix=2iSW |
01:19:07 | leorize[m] | there's also a pattern for having C proc put things inside Nim's string directly |
01:19:22 | leorize[m] | (ie. using Nim's string as your buffer) |
01:19:34 | jds_dizzy_ | Thanks been scratching my head 2 long |
01:21:39 | FromGitter | <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:29 | disruptek | it's possible for bots to post messages on irc that only one person can read. |
01:27:50 | disruptek | we could have the bot introduce itself to new users, for example. |
01:27:51 | * | zacharycarter quit (Ping timeout: 260 seconds) |
01:29:08 | FromGitter | <sealmove> nice |
01:29:33 | disruptek | try !help |
01:29:42 | FromGitter | <sealmove> !help |
01:30:01 | disruptek | well, you have to be on irc. |
01:30:37 | Prestige | !help |
01:30:57 | Prestige | nice. |
01:31:26 | disruptek | it could work for the other networks if the bridges were hacked. |
01:31:42 | disruptek | not 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:40 | Prestige | Hm looks like I'm having an issue with nimble building my project, how strange |
01:44:11 | skrylar[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:37 | FromDiscord | <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:50 | Prestige | I 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:10 | skrylar[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:17 | skrylar[m] | also yea i dunno why pegs aren't usde for binary data more |
01:46:22 | FromDiscord | <Varriount> Though, the fact that it requires a buffer to be passed to it might complicate things. |
01:46:34 | disruptek | nah, that's fine. |
01:47:10 | skrylar[m] | though i guess since more formats are becoming glorified key/value tags, the impetus for more parsing has gottne kinda less |
01:48:14 | disruptek | Prestige: why do you use nimble to build? |
01:48:45 | FromDiscord | <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:01 | skrylar[m] | ._. |
01:49:38 | FromDiscord | <Varriount> https://github.com/MostAwesomeDude/website/blob/master/content/entries/take-a-bow.rst |
01:50:19 | Prestige | disruptek: seemed convenient to have multiple build scripts so I can just do "nimble build" "nimble debug" "nimble release" etc |
01:50:25 | skrylar[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:27 | Prestige | I'm new though so π€· |
01:51:23 | * | jds_dizzy_ joined #nim |
01:51:57 | FromDiscord | <Varriount> I prefer Nimscript (when I can actually find the documentation on it) |
01:52:52 | skrylar[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:55 | Prestige | Do people usuallly have a .nimble file for their packages? |
01:52:56 | * | jds_dizzy_ quit (Remote host closed the connection) |
01:53:08 | skrylar[m] | isn't it mandatory to be in nimble? |
01:53:15 | Prestige | I would assume so |
01:53:18 | FromDiscord | <Varriount> I think it's required for Nimble |
01:53:55 | skrylar[m] | i quite like redo, but use pydoit lately :\ |
01:54:00 | Prestige | Seems really odd to me that a simple build script would fail though |
01:54:12 | disruptek | Prestige: when it comes to nimble, the sky is the limit. |
01:54:27 | skrylar[m] | i guess rake can dump out raw makefiles now but haven't used that in a long time either |
01:55:19 | disruptek | !repo nimph |
01:55:20 | disbot | https://github.com/disruptek/nimph -- 9nimph: 11Nim package hierarchy manager from the future π§ 15 59β 4π΄ 7& 1 more... |
01:55:39 | Prestige | Nimble replacement? |
01:55:52 | FromDiscord | <Rika> not yet idts |
01:56:03 | disruptek | no, i aimed a little higher for your sake. |
01:56:17 | disruptek | and mine. |
01:56:32 | * | skrylar[m] is a luddite who just uses submodules xD |
01:56:35 | Prestige | Haha. Well I'm looking forward to it, seeing nimble fall apart |
02:00:55 | disruptek | the 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:39 | disruptek | so you can plug code into any part of this process. |
02:01:40 | skrylar[m] | seems normal enough. you dont run apt every time you run software |
02:01:58 | disruptek | i mean, nimph works this way today. |
02:02:14 | disruptek | it's more of a standard that nimble may support. |
02:02:14 | * | chemist69 quit (Ping timeout: 246 seconds) |
02:03:26 | leorize | Varriount: I found a small problem with the named pipe idea |
02:04:05 | leorize | if 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:29 | leorize | now I could bring in the system prng to solve this, but is it really a good way? |
02:04:49 | leorize | it'd be really expensive to create an async pipe |
02:04:57 | disruptek | just print a message recommending they switch to linux. |
02:05:22 | skrylar[m] | i'm a bit dumb but isn't this a very remote problem with many apis |
02:05:33 | skrylar[m] | even linux has some security bulletins about people 'guessing' the result of mktemp |
02:05:57 | leorize | this is a windows thing, their anonymous pipes can't do async i/o |
02:06:04 | leorize | so I gotta fake it with a named pipe |
02:06:08 | skrylar[m] | you can use a crypto gen like blake2x if you really want to minimize guessing chance |
02:06:11 | FromDiscord | <Rika> `if someone could guess the seed I use for the random number generator` now what are the odds of this |
02:06:29 | disruptek | i dunno, i'm a pretty good guesser. |
02:06:46 | skrylar[m] | https://blake2.net/blake2x.pdf i should check how much i would need to adjust to support this |
02:07:02 | skrylar[m] | but basically blake has many fun uses, one of which is being abused to generate rolling hashes like this |
02:07:16 | leorize | the seed will be the result of getMonoTime at the point where the first async pipe is created |
02:07:21 | leorize | this can be trivially guesses |
02:07:24 | leorize | guessed* |
02:07:32 | skrylar[m] | ask the cpu for entropy or the os |
02:07:42 | skrylar[m] | then extend it with x |
02:07:49 | leorize | yea but wouldn't it ramp the cost up too hard? |
02:08:02 | * | Mister_Magister quit (Ping timeout: 264 seconds) |
02:08:08 | leorize | I got a way to do this by asking windows for 4 bytes of randomness then turn them into hex |
02:08:08 | disruptek | no. |
02:08:25 | disruptek | it's nothing compared to creating a named pipe. |
02:08:25 | skrylar[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:59 | disruptek | if they can collide with your pipe, they can likely read your memory anyway. |
02:09:34 | disruptek | if you collide, you get more random. |
02:10:01 | disruptek | also, i know nothing about windows. fwiw. |
02:10:30 | leorize | I do know one thing is that timing attacks are easy to do |
02:10:44 | leorize | if say, someone got an open source nim app running on windows |
02:11:00 | disruptek | easy solution: |
02:11:05 | disruptek | prevent nim apps from running on windows. |
02:11:11 | * | Mister_Magister joined #nim |
02:11:17 | skrylar[m] | what does this have to do with timing attacks |
02:11:46 | skrylar[m] | there are many intel cpus you can run something like rdrand and just get entropy from the silicon |
02:12:05 | leorize | well I'm going with the system prng route to solve this |
02:12:13 | skrylar[m] | 'kay. |
02:14:39 | * | Jesin quit (Quit: Leaving) |
02:17:18 | * | muffindrake quit (Ping timeout: 246 seconds) |
02:18:24 | leorize[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:28 | leorize[m] | a possible topic to look for ddos attack :p |
02:19:32 | * | muffindrake joined #nim |
02:20:21 | leorize[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:58 | FromDiscord | <gaurav> Hi All! |
02:23:23 | FromDiscord | <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:29 | leorize[m] | well what kind of help are you looking for? |
02:25:45 | leorize[m] | I assume that you know what you need to do, right? |
02:27:23 | FromDiscord | <KingDarBoja> Hiu guys |
02:27:23 | FromDiscord | <KingDarBoja> π |
02:28:52 | FromDiscord | <gaurav> > <leorize[m]> I assume that you know what you need to do, right? |
02:28:53 | FromDiscord | <gaurav> @gitterirc why would I need the help then Bot? |
02:29:08 | disruptek | send me money; i'll help. |
02:29:34 | FromDiscord | <gaurav> > <disruptek> send me money; i'll help. |
02:29:34 | FromDiscord | <gaurav> @gitterirc π΄ |
02:29:50 | disruptek | will eat for food? |
02:30:14 | leorize[m] | well you can't build an adobe premiere competitor without knowing what you need to implement :p |
02:30:43 | FromDiscord | <gaurav> lol |
02:30:56 | FromDiscord | <Elegant Beef> Clearly you just wrap kdenlive with a more attractive ui environment and ship it |
02:31:24 | FromDiscord | <gaurav> kdenlive? |
02:31:36 | FromDiscord | <Elegant Beef> FOSS video edditor |
02:31:41 | disruptek | maybe start with competition research. |
02:32:10 | disruptek | beef: you're hired. |
02:32:13 | FromDiscord | <gaurav> why not openshot? |
02:32:54 | Prestige | kdenlive is nice, I just need to take the time to set a theme.. the white blinds my eyes |
02:33:08 | FromDiscord | <Elegant Beef> I mean i have qt set to dark theme |
02:33:16 | FromDiscord | <Elegant Beef> lxappearance saves lives |
02:33:21 | Prestige | That's what I've yet to do |
02:33:33 | FromDiscord | <Elegant Beef> or is it qt5control |
02:33:39 | FromDiscord | <Elegant Beef> whatever, im on ubuntu laugh at me π |
02:34:04 | FromDiscord | <gaurav> or the latest in the series.. something named with D* I think |
02:34:17 | FromDiscord | <Elegant Beef> Also what do you mean why not openshot |
02:34:46 | FromDiscord | <Elegant Beef> why not N video editor where n is a video editor that is FOSS |
02:35:07 | FromDiscord | <Elegant Beef> I'd say it makes more sense to expand a video editor than start fresh |
02:35:16 | FromDiscord | <Elegant Beef> I'd imagine it's a super large undertaking |
02:35:47 | FromDiscord | <gaurav> I read about Qt, Glade, Xojo, Revery, VUi. |
02:35:52 | * | xcm quit (Remote host closed the connection) |
02:36:11 | leorize[m] | the ui is 1/4 of the battle |
02:36:37 | leorize[m] | have you decided on which linear editing backend are you gonna use? |
02:36:40 | FromDiscord | <gaurav> Openshot is also FOSS and was suggested by one developer. |
02:37:26 | FromDiscord | <gaurav> but we need to do the editing on desktop and save it on cloud and then apply AI to it. |
02:37:49 | FromDiscord | <gaurav> damn! I have started doubting myself.. |
02:37:53 | FromDiscord | <gaurav> π |
02:38:34 | FromDiscord | <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:03 | FromDiscord | <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:47 | FromDiscord | <gaurav> I understand how massive it is and I am the one responsible for deciding the tech suite. |
02:41:25 | Prestige | Is it possible to have a map where the values are procs? |
02:41:38 | FromDiscord | <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:40 | skrylar[m] | why wouldn't it be? procs are pointers in the end |
02:42:37 | skrylar[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:46 | Prestige | oh maybe I needed to have Table[Foo, proc()] |
02:43:05 | skrylar[m] | Sarif is practically handing Affinity products away too |
02:43:09 | FromDiscord | <gaurav> @Elegant Beef Any idea on that? |
02:43:49 | FromDiscord | <Elegant Beef> Adobe has a monopoly and wont be competed with |
02:43:52 | FromDiscord | <gaurav> Few of the developers have warned to use Qt as it has loads of features now and is confusing. |
02:44:02 | FromDiscord | <Elegant Beef> It's the exact same as windows in that regard |
02:44:18 | FromDiscord | <gaurav> Still Mac rules in performace |
02:44:28 | FromDiscord | <Elegant Beef> And the userbase is where again? |
02:44:35 | FromDiscord | <Varriount> Eh, any complete UI system will be confusing |
02:45:02 | FromDiscord | <Varriount> Either that, or it will be high-level |
02:45:24 | disruptek | confusing is what you make it. |
02:46:22 | skrylar[m] | i tend to think everything at all with this thesis is wrong, for many reasons, but /shrug |
02:46:34 | FromDiscord | <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:51 | FromDiscord | <Varriount> That's a lot to implement, cover, and learn. |
02:47:48 | disruptek | to repeat, |
02:47:52 | disruptek | confusing is what you make it. |
02:47:54 | skrylar[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:17 | disruptek | yes. |
02:48:29 | skrylar[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:51 | FromDiscord | <Varriount> skrylar: Do you mean the Macbook Pro, or the desktop? |
02:49:14 | FromDiscord | <Elegant Beef> The performance is bad in either |
02:49:23 | skrylar[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:26 | FromDiscord | <Elegant Beef> Since performance relies on efficiency imo, and the price is inefficient |
02:49:39 | skrylar[m] | the macbooks don't even have cooling systems, and the mac pros are soldered bricks. i dunno if they have fans |
02:49:45 | skrylar[m] | *macbook pros |
02:50:07 | disruptek | they have fans but fans don't make you fast. |
02:50:08 | FromDiscord | <Varriount> @Elegant Beef Well yeah. I wouldn't use a MacBook personally, but if my job is paying for it... |
02:50:16 | FromDiscord | <Elegant Beef> I still wouldnt use it |
02:50:19 | FromDiscord | <Varriount> Then cost is mostly irrelevant. |
02:50:26 | skrylar[m] | @disruptek no, but when your 4ghz processor is underclocked to 25% it doesn't do you any favors |
02:50:42 | FromDiscord | <Varriount> I haven't had any performance issues... but then again, I'm not working on 3D games and the like. |
02:50:57 | disruptek | pro tip: don't buy a laptop to win benchmarks. |
02:51:09 | FromDiscord | <Elegant Beef> Dont buy macs to win benchmarks* |
02:51:11 | skrylar[m] | back when i dealt with vcv rack, macs were also the #1 complainers of bad performance |
02:51:21 | skrylar[m] | and that was just a glsl+nanovg interface |
02:51:25 | FromDiscord | <Elegant Beef> Price to performance is an important metric π |
02:51:31 | skrylar[m] | *gles2 |
02:51:32 | FromDiscord | <gaurav> @Elegant Beef What shall you use then? |
02:51:39 | FromDiscord | <Elegant Beef> What do you mean |
02:51:42 | disruptek | no argument here; i ran mac hardware for 15 years. |
02:52:07 | FromDiscord | <gaurav> @Elegant Beef user base is worldwide, video editors, mostly the Production houses. |
02:52:22 | disruptek | on the plus side, osx on hackintosh is incredible. |
02:52:26 | disruptek | until you experience linux. |
02:52:41 | FromDiscord | <Elegant Beef> I was going to say patheon OS exists π |
02:52:44 | FromDiscord | <Elegant Beef> i mean DE* |
02:52:47 | disruptek | no one in video runs anything but mac. |
02:52:50 | skrylar[m] | my kernel was busy panicking for me to hear you, disruptek |
02:52:56 | FromDiscord | <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:59 | Prestige | I can't stand mac os |
02:53:09 | FromDiscord | <Elegant Beef> I use linux as my main os |
02:53:15 | FromDiscord | <Elegant Beef> But what i use doesnt change the facts |
02:53:40 | FromDiscord | <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:54 | FromDiscord | <gaurav> don't worry.. the app I am planning for will be cross platform π |
02:54:02 | skrylar[m] | network effect is a lot of it |
02:54:03 | FromDiscord | <Elegant Beef> Ok? |
02:54:07 | disruptek | i have two brothers in industry. no one will consider anything outside of mac. |
02:54:21 | skrylar[m] | there are some windows shops around |
02:54:37 | disruptek | technically true but also irrelevant to the market. |
02:54:41 | FromDiscord | <gaurav> I understand that, we are planning for that, but I am stuck with the tools and languages. |
02:54:56 | disruptek | even disk arrays have to ship in silver boxes to be sold. |
02:54:57 | skrylar[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:02 | FromDiscord | <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:24 | FromDiscord | <gaurav> Yes, I understand that too. |
02:56:26 | skrylar[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:34 | FromDiscord | <gaurav> I am talking about a commercial grade software. |
02:56:44 | disruptek | SOL |
02:57:11 | disruptek | you'll be wrapping Qt or nothing. |
02:57:24 | skrylar[m] | wx will also do most of what they want |
02:57:44 | FromDiscord | <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:45 | skrylar[m] | the beos stuff i was working on isn't shippable right now |
02:57:55 | disruptek | i'm not familiar with wx but i'm familiar with qt. |
02:58:19 | FromDiscord | <gaurav> @disruptek Tell me about qt. |
02:58:29 | FromDiscord | <Elegant Beef> Disruptek i think they just called you a qt |
02:58:31 | * | waleee-cl quit (Quit: Connection closed for inactivity) |
02:58:40 | FromDiscord | <gaurav> lol |
02:59:33 | disruptek | nothing more to say; you've shortlisted v and reason. |
03:00:46 | disruptek | i don't think wx is in the same class as qt; not even close. |
03:01:34 | FromDiscord | <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:42 | FromDiscord | <gaurav> About Nim, I donno much |
03:01:53 | companion_cube | V is so not ready for anything |
03:02:10 | FromDiscord | <gaurav> Except what it says on its website. |
03:02:26 | FromDiscord | <Elegant Beef> Yea and on my website i say im a unity programmer |
03:02:30 | FromDiscord | <Elegant Beef> So what's that mean! |
03:02:41 | FromDiscord | <Elegant Beef> sorry unity developer |
03:02:48 | companion_cube | https://christine.website/blog/v-vaporware-2019-06-23 π€· |
03:02:59 | companion_cube | (and all the other comments on various HN threads, too) |
03:03:28 | FromDiscord | <gaurav> That is what I am saying, just because Nim has mentioned few things on its website.. does that mean anything? |
03:03:43 | FromDiscord | <Elegant Beef> I mean it means it's a language |
03:03:44 | FromDiscord | <gaurav> V has been implemented in few projects and they mentioned it on their website too. |
03:04:12 | FromDiscord | <Elegant Beef> You can grab any screwdriver and get the job done aslong as the screwdriver exists |
03:04:14 | disruptek | it was hard to take this project seriously before. now it's impossible. |
03:04:16 | companion_cube | well, for nim, you can try for yourself |
03:04:31 | FromDiscord | <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:56 | companion_cube | I'm more curious about revery, Reason does exist and do what it promises, at least |
03:05:15 | FromDiscord | <gaurav> V says it has UI, so does Nim. |
03:05:46 | * | Guest65896 quit (Ping timeout: 265 seconds) |
03:05:46 | FromDiscord | <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:56 | disruptek | respectfully, you're in over your head. find a mentor. |
03:06:36 | FromDiscord | <gaurav> @disruptek find me a mentor |
03:06:45 | companion_cube | gaurav: 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:53 | FromDiscord | <Elegant Beef> dis you wanna be my mentor, i need to learn how to be sillier more! |
03:07:07 | FromDiscord | <gaurav> lol |
03:07:12 | disruptek | for one thing, you may as well spell it correctly. |
03:07:22 | disruptek | it's pscillyer. |
03:07:24 | FromDiscord | <Elegant Beef> So that's a yes? |
03:07:51 | FromDiscord | <Elegant Beef> And no i dont have that anymore my doctor treated it |
03:08:33 | FromDiscord | <Elegant Beef> I thought i told you not to tell anyone |
03:08:54 | disruptek | doctor-patient confidentiality was never very important to me. |
03:09:39 | FromDiscord | <Elegant Beef> But you put your finger in my... Yea it's to me |
03:09:46 | FromDiscord | <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:15 | FromDiscord | <Elegant Beef> I mean you're incapable of understanding how this irc bot works, so ... |
03:10:15 | disruptek | the first step is admitting you have a problem. |
03:10:32 | disruptek | the thing about ignorance is that it's treatable. |
03:10:37 | disruptek | but you have to want to change. |
03:11:51 | FromDiscord | <gaurav> @Elegant Beef What do you think will be useful in my case? |
03:12:08 | FromDiscord | <Elegant Beef> Making an editor for yourself not others, unless you have super mega funding |
03:12:44 | FromDiscord | <gaurav> for myself or by myself? |
03:13:14 | FromDiscord | <Elegant Beef> for |
03:13:29 | disruptek | c'mon, it's absurd. |
03:13:32 | FromDiscord | <gaurav> Its a startup |
03:13:42 | disruptek | you're talking about a $100MM piece of software. |
03:13:57 | disruptek | and you're using V in the same breath. |
03:14:48 | FromDiscord | <gaurav> I am going to be a part of it. |
03:14:57 | disruptek | indeed. |
03:15:10 | disruptek | every startup needs a scapegoat or ten. |
03:15:17 | FromDiscord | <gaurav> And we shall be looking for funding too once the MVP is up. |
03:15:37 | FromDiscord | <gaurav> lol @disruptek |
03:15:51 | disruptek | you know what i ask every knucklehead who pitches me? |
03:16:00 | disruptek | WHY YOU |
03:16:22 | FromDiscord | <gaurav> @disruptek dont' worry, that won't be me. π |
03:16:34 | disruptek | what do you have that uniquely positions you to bring this product to market. |
03:17:23 | disruptek | so far, i'm not being wow'd here. |
03:17:25 | FromDiscord | <gaurav> no fear to lose, and knowledge to gain. |
03:17:48 | disruptek | may it warm your cockles on those chilly skid row nights. |
03:18:00 | companion_cube | gaurav: is there a downloadable binary of V's supposed chat client now? |
03:18:07 | disruptek | nah. |
03:18:24 | FromDiscord | <gaurav> yes there is |
03:18:27 | companion_cube | cause, well, 300kb might be with a ton of dynamic libraries, assuming it even does exist |
03:18:32 | FromDiscord | <gaurav> I think so.. |
03:18:49 | FromDiscord | <KingDarBoja> _may it warm your cockles on those chilly skid row nights._ It's funnier on spanish lol |
03:18:58 | FromDiscord | <gaurav> lol |
03:19:12 | companion_cube | ah well, nothing for linu |
03:19:17 | companion_cube | so much for the cross platform |
03:19:21 | disruptek | i guess my spanish is better than i thought. |
03:19:25 | FromDiscord | <KingDarBoja> You should listen to the advices |
03:19:48 | FromDiscord | <KingDarBoja> Don't jump into something too big with so little knowledge on the field |
03:20:12 | disruptek | shit, you're talking to people who do that for a living. |
03:20:24 | FromDiscord | <gaurav> That is why I am looking for the knowledge, more knowledge regarding the field will be provided by other guys |
03:20:40 | FromDiscord | <gaurav> And the mentors in that field.. |
03:20:46 | disruptek | what's the largest tech team you've managed? |
03:20:47 | FromDiscord | <gaurav> My job is to choose the tech-stack |
03:20:54 | disruptek | WHY YOU |
03:20:56 | FromDiscord | <gaurav> 32 |
03:21:32 | FromDiscord | <Elegant Beef> no it's 42 |
03:21:36 | FromDiscord | <Elegant Beef> Everyone knows this |
03:21:44 | FromDiscord | <gaurav> ok |
03:21:56 | FromDiscord | <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:35 | disruptek | i'm saying, people who wield lightning without understanding it are afraid to shake your hand. |
03:22:48 | FromDiscord | <gaurav> it would be small steps but I need to choose the tech stack. |
03:22:56 | FromDiscord | <KingDarBoja> Now gonna take a quick shower |
03:23:09 | FromDiscord | <gaurav> It would not be a wise dicision to change the technology later on |
03:23:27 | FromDiscord | <gaurav> I mean midway |
03:23:37 | disruptek | select something that 100 engineers can work with for at least 5 years before release. |
03:23:46 | disruptek | ie. C++. |
03:24:02 | FromDiscord | <gaurav> why not Nim? |
03:24:09 | companion_cube | for redoing a photoshop? dman |
03:24:12 | companion_cube | damn* |
03:24:19 | FromDiscord | <Elegant Beef> not photoshop, preimire |
03:24:21 | disruptek | it's premier. |
03:24:28 | FromDiscord | <gaurav> premiere* |
03:24:32 | FromDiscord | <Elegant Beef> Primer |
03:24:42 | FromDiscord | <gaurav> and then the paint. |
03:25:47 | FromDiscord | <gaurav> so, do you think Qt will be sufficient for GUI? |
03:25:59 | disruptek | obviously. |
03:26:08 | FromDiscord | <gaurav> in my case I meant. |
03:26:13 | disruptek | obviously. |
03:26:38 | FromDiscord | <gaurav> yes or no? |
03:26:52 | FromDiscord | <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:02 | FromDiscord | <Elegant Beef> The UI is the least of concerns |
03:27:14 | disruptek | you won't find 100 engineers that know wx or any other commercial x-platform toolkit. |
03:27:47 | FromDiscord | <gaurav> Mine is an agile team. What shall the UI developers be doing by then? |
03:27:55 | disruptek | just like you cannot find enough talent or tooling to build this project outside of java or C++. |
03:28:04 | disruptek | and java is absurd for video. |
03:28:10 | disruptek | ergo, C++/Qt |
03:28:10 | FromDiscord | <Elegant Beef> Agile, so they're quick? Ah so it should be quicker |
03:28:21 | companion_cube | I think I have to agree with disruptek β¦ |
03:28:26 | disruptek | if you rub it on the back of a duck, it goes faster. |
03:28:49 | disruptek | but, hey. |
03:28:55 | disruptek | go with V or reason if you must. |
03:29:05 | disruptek | what the fuck do i know. |
03:29:44 | companion_cube | if you have a team of engineers building a real thing, right now, better pick well tested technology |
03:30:00 | FromDiscord | <gaurav> and I don't know about that. |
03:30:12 | * | ptdel quit (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
03:30:20 | FromDiscord | <gaurav> That is the problem I am looking the solution for, for past few days. |
03:30:28 | companion_cube | as disruptek said |
03:30:41 | companion_cube | I mean, you can also pick free pascal, if you want something well tested, but it's a tad bit old |
03:31:07 | FromDiscord | <Elegant Beef> I still think that considering what they're planning on making the language is less of a concern than time |
03:31:18 | FromDiscord | <Elegant Beef> Or man power |
03:31:30 | companion_cube | language is definitely important in this case |
03:31:50 | FromDiscord | <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:55 | companion_cube | (I mean, the jvm might also work *if* you get good GPU interop) |
03:31:57 | FromDiscord | <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:30 | FromDiscord | <gaurav> And we no tech or GUI we won't be getting the investors. |
03:32:31 | disruptek | another reason you need Qt. |
03:32:48 | companion_cube | Elegant Beef: yeah well, you need both |
03:33:48 | FromDiscord | <gaurav> And with no tech or GUI we won't be getting the investors. |
03:34:39 | FromDiscord | <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:45 | FromDiscord | <gaurav> I want it to run on i5 8GB system. |
03:34:59 | disruptek | why didn't you say so. |
03:35:10 | companion_cube | https://en.wikipedia.org/wiki/Kdenlive <-- oh hello existing video editor in Qt |
03:35:31 | FromDiscord | <Elegant Beef> What's this it's open source |
03:35:33 | FromDiscord | <Elegant Beef> hmph |
03:35:37 | FromDiscord | <gaurav> you don't get funding unless you show MVP |
03:35:46 | FromDiscord | <Elegant Beef> Sure |
03:35:53 | FromDiscord | <Elegant Beef> You also are a snake oil salesman at that point |
03:35:54 | companion_cube | but getting to MVP is hard |
03:35:55 | disruptek | i bet it's not written in C++. |
03:36:01 | disruptek | oh look. |
03:36:04 | companion_cube | :D |
03:36:11 | FromDiscord | <Elegant Beef> But im an unemployed schmuck, so what do i know |
03:36:19 | FromDiscord | <gaurav> With no tech in hand and no UI, yes it is hard |
03:36:42 | disruptek | it'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:43 | FromDiscord | <Elegant Beef> Make the tech and add ui later |
03:36:46 | disruptek | weird. |
03:36:49 | FromDiscord | <Elegant Beef> The tech doesnt care how it gets inputs |
03:36:55 | disruptek | bohemian! |
03:37:03 | FromDiscord | <Elegant Beef> Rapsodian? |
03:37:08 | FromDiscord | <KingDarBoja> Mama mia |
03:37:19 | companion_cube | err, for an editing software, the UI is definitely part of the tech |
03:37:26 | FromDiscord | <gaurav> but here it is about output also.. isn't it? |
03:37:36 | disruptek | nah. |
03:37:38 | FromDiscord | <KingDarBoja> I really hate all thatagile-related stuff |
03:37:49 | FromDiscord | <KingDarBoja> But hey, that's what some industries like to implement |
03:37:55 | disruptek | fr-agile |
03:38:08 | FromDiscord | <gaurav> If system's processor will be heavily processing the UI, how will it work on the editing stuff? |
03:38:12 | FromDiscord | <KingDarBoja> Better pick a well tested tech as other mentioned |
03:38:35 | FromDiscord | <Elegant Beef> Companion, you say that but a bunch of hastily thrown together terminal multiplexed tuis could work too π |
03:38:36 | companion_cube | gaurav: so, if you don't know how to make a MVP or what tech to pick⦠why even start? |
03:38:41 | FromDiscord | <KingDarBoja> Usually you have GPU and CPU |
03:38:46 | companion_cube | for video? ugh :DDD |
03:38:56 | companion_cube | good luck editing your video with libcaca |
03:39:03 | disruptek | maybe you can use crystal; all you have to do is port it to windows. |
03:39:10 | FromDiscord | <Elegant Beef> I mean the video would be rendered out properly |
03:39:18 | FromDiscord | <KingDarBoja> The big question is... are you a developer or something else? |
03:39:22 | FromDiscord | <Elegant Beef> Just everything else would be shoddily thrown together tuis |
03:39:36 | companion_cube | Elegant beef: easier, use imgui |
03:39:48 | FromDiscord | <Elegant Beef> Cant tell if you're sincere or mocking me |
03:40:04 | companion_cube | a big video renderer and shittons of imgui on top of it |
03:40:11 | companion_cube | easier than a TUI |
03:40:16 | FromDiscord | <Elegant Beef> I guess |
03:40:18 | companion_cube | (I'm serious) |
03:40:21 | FromDiscord | <gaurav> I am a Manager, have been a BA, and developer earlier till 2004 |
03:40:38 | FromDiscord | <Elegant Beef> You've only been a Bad Ass for 16 years? |
03:41:08 | FromDiscord | <KingDarBoja> Calm down guys, no need to rely on jokes |
03:41:17 | FromDiscord | <Elegant Beef> Hey you rely on what you are |
03:41:23 | FromDiscord | <KingDarBoja> lol, agreed |
03:42:15 | FromDiscord | <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:18 | FromDiscord | <gaurav> Yes, thanks for appreciation π |
03:42:25 | disruptek | just make an offer to buy lightworks. it looks like it has the most potential. boom, you're a big shot. |
03:42:51 | FromDiscord | <Elegant Beef> Yea you're attempting to compete with something that took 16 years to get here |
03:43:02 | FromDiscord | <gaurav> quality + faster MVP |
03:43:12 | FromDiscord | <KingDarBoja> Harder to do both |
03:43:21 | companion_cube | disruptek: so do you want to hear about my idea of reimplementing mathematica in 6 months? :p |
03:43:28 | disruptek | do i |
03:43:32 | FromDiscord | <KingDarBoja> But best advice is research on current market platforms and check their stacks |
03:43:59 | FromDiscord | <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:38 | FromDiscord | <gaurav> With no MVP in time, we are already dead. |
03:44:39 | FromDiscord | <KingDarBoja> Probably (I have no idea to be honest) those apps use C++, Java, C# |
03:44:53 | FromDiscord | <Elegant Beef> Well take something you can handle |
03:45:03 | FromDiscord | <gaurav> Adobe uses, C, CPP, Java.. |
03:45:08 | FromDiscord | <KingDarBoja> There u go |
03:45:08 | FromDiscord | <gaurav> I donno what they use for GUI |
03:45:11 | FromDiscord | <Elegant Beef> Make a new chat client to rival discord, they use electron, you can beat them |
03:45:32 | companion_cube | yeah but then you'll get banned from their servers |
03:45:37 | companion_cube | it's their turf |
03:45:56 | FromDiscord | <Elegant Beef> Yea i gues the guys that get funding from the CPP's western arm tencent would be into dictatorships |
03:46:00 | FromDiscord | <Elegant Beef> Yea i guess the guys that get funding from the CPP's western arm tencent would be into dictatorships |
03:46:01 | FromDiscord | <gaurav> @Elegant Beef It is not always a choice. |
03:46:33 | FromDiscord | <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:36 | disruptek | let 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:46 | FromDiscord | <gaurav> lol |
03:46:58 | FromDiscord | <gaurav> I appreciate your honesty.. |
03:47:30 | FromDiscord | <gaurav> But if your company picks that project and you are asked to lead a team what will you say? |
03:47:40 | disruptek | pay me money. |
03:47:54 | FromDiscord | <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:08 | leorize | if they got money, let 'em |
03:48:21 | disruptek | it's his livelihood, too. |
03:48:46 | companion_cube | it's more, if you have barely any chance to make it work, it seems a bit wasteful |
03:48:49 | companion_cube | (or bad for morale) |
03:49:15 | FromDiscord | <Elegant Beef> If they trust you enough to make you a lead they should trust your opinion or shouldnt make you lead |
03:49:18 | companion_cube | well I guess if I was told to use V I'd quit on the spot, so there's that |
03:49:21 | FromDiscord | <gaurav> Premiere is in the market for 16 yrs, yet many tools are competing with Premiere..though its the marketleader. |
03:50:13 | FromDiscord | <gaurav> With "No" in mind, we can never proceed. |
03:50:13 | FromDiscord | <Elegant Beef> They're also all like 16 year old software |
03:50:26 | FromDiscord | <Elegant Beef> vegas for instance is also >15 years old |
03:50:26 | * | zacharycarter quit (Ping timeout: 256 seconds) |
03:50:48 | FromDiscord | <Elegant Beef> same with davinci resolve |
03:50:51 | FromDiscord | <gaurav> and we shall be using their expertise too. |
03:50:55 | FromDiscord | <Elegant Beef> Same with kdenlive |
03:51:22 | disruptek | it doesn't matter. you have to not just produce a competitive product, but drink their milkshake while they watch. |
03:51:27 | disruptek | good fucking luck with that. |
03:51:47 | FromDiscord | <gaurav> π |
03:52:03 | disruptek | also, this isn't some rando brazilian gamehouse. |
03:52:13 | companion_cube | disruptek: I mentionned mathematica as something basically impossible to compete with |
03:52:13 | disruptek | this is a major valley player. |
03:52:20 | FromDiscord | <gaurav> I understand that. |
03:52:20 | * | lritter joined #nim |
03:52:20 | companion_cube | but premiere is a pretty good example too |
03:52:41 | FromDiscord | <gaurav> Thanks for understanding. |
03:53:11 | disruptek | speaking of brazilians, i hear some porn calling my name. |
03:53:13 | disruptek | ciao. |
03:53:20 | FromDiscord | <KingDarBoja> WTF |
03:53:27 | companion_cube | classy π |
03:53:45 | FromDiscord | <KingDarBoja> Good wank? |
03:54:21 | FromDiscord | <gaurav> @KingDarBoja Are there real ppl through this bot or is it just an AI tool? |
03:54:35 | FromDiscord | <Elegant Beef> It's been 30 seconds he's probably done by now |
03:54:50 | FromDiscord | <Elegant Beef> It's a bot connecting to a irc server |
03:54:53 | companion_cube | well if bots were that good, disruptek would be the rich one |
03:55:10 | FromDiscord | <gaurav> hmm.. that is what I thought.. |
03:55:21 | FromDiscord | <Elegant Beef> He's rich in spirit |
03:57:12 | FromDiscord | <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:00 | FromDiscord | <KingDarBoja> The Beef Elegant explained the bot stuff |
03:58:16 | FromDiscord | <Varriount> I know there's a QML library for Nim, but I don't believe we have an actual QT wrapper. |
03:58:27 | companion_cube | just go for C++17 and Qt |
03:58:36 | companion_cube | easier to hire for than nim anyway |
03:58:42 | companion_cube | and Qt is designed around C++ |
03:58:55 | FromDiscord | <Varriount> QT is quite hard to wrap, as it requires it's own compiler thing |
03:59:19 | FromDiscord | <gaurav> Yes, heard of this QML too.. |
04:00:05 | FromDiscord | <gaurav> You mean, considering my requirements I should zero in for QML with Qt for GUI |
04:00:35 | FromDiscord | <gaurav> and for backend, I should be using C++.. |
04:00:40 | FromDiscord | <gaurav> or C |
04:00:46 | companion_cube | C++ with Qt |
04:02:05 | FromDiscord | <gaurav> but C++ will make it use larger memory and Exe size will increase too |
04:02:18 | companion_cube | larger memory than C? meh |
04:02:34 | companion_cube | also, sounds like y'all need to be productiveβ¦ π€· |
04:03:26 | FromDiscord | <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:51 | FromDiscord | <Elegant Beef> I sincerely doubt the executable memory size matters much within reason |
04:05:20 | companion_cube | the existing programs are big, too |
04:05:54 | * | ryan__ joined #nim |
04:05:59 | FromDiscord | <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:00 | FromDiscord | <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:40 | FromDiscord | <Varriount> Blender is nice. The UI in particular had improved immensely. |
04:10:47 | FromDiscord | <Varriount> *has |
04:11:01 | FromDiscord | <gaurav> Electron is no good, Thanks! |
04:11:36 | FromDiscord | <Varriount> I used blender to process a 3d model from a Pokemon game, then print it out on a 3d printer |
04:11:38 | FromDiscord | <gaurav> we can rather use web-pack |
04:14:07 | * | ryan__ is now known as number_one |
04:18:45 | FromDiscord | <gaurav> ? |
04:21:41 | * | dddddd quit (Ping timeout: 256 seconds) |
04:23:12 | FromDiscord | <gaurav> Thanks for the help guys. I think I will look into the information provided by you all. |
04:23:33 | FromDiscord | <gaurav> And will get back to you once I need to know something more. |
04:23:35 | FromDiscord | <gaurav> Regards! |
04:32:44 | * | nsf joined #nim |
04:39:31 | * | Jesin joined #nim |
04:55:23 | * | narimiran joined #nim |
04:58:18 | skrylar[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:32 | skrylar[m] | recently read the TeXbook to brush up on text layouts |
04:58:56 | skrylar[m] | tho it was a couple hundred pages that amounted to it basically makes a tree of boxes |
05:00:42 | FromDiscord | <InventorMatt> from my experience with pyqt that does seem to be all it is for gui's in general |
05:01:06 | skrylar[m] | that will get you far yea |
05:01:39 | skrylar[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:06 | skrylar[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:38 | skrylar[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:04 | skrylar[m] | trees of boxes gets you the really high level click zones; layout and text are their own diversions |
05:05:12 | skrylar[m] | single typeface in english or normalized european is okay, rich text is a hot mess |
05:08:11 | skrylar[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:37 | skrylar[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:51 | FromDiscord | <Varriount> Skrylars: Don't forget RTL and LTR text input |
05:12:05 | skrylar[m] | thats why i caveated things with english or normalized euro |
05:12:19 | FromDiscord | <Elegant Beef> The trick is to only output a bit stream and make them learn how to read it |
05:12:35 | skrylar[m] | although if you've gone "full knuth", it's not as bad |
05:12:47 | skrylar[m] | cause i think the texbook even says it's just a matter of changing the justification of the hboxes |
05:15:01 | FromDiscord | <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:48 | skrylar[m] | unfortunately todays yak shaving isn't finishing up multiline text, but faceplating gles2 :( |
05:58:38 | FromDiscord | <Benumbed> Is there a Nim builtin that will tell me the index of a value in a set or seq? |
05:58:54 | FromDiscord | <Benumbed> I can't find anything, but that doesn't mean it's not there |
06:04:51 | FromDiscord | <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:12 | FromDiscord | <Elegant Beef> Although there is probably a smarter method for getting that returned value into the offset |
06:09:26 | FromDiscord | <Benumbed> Hmm, I can give that a shot, thanks @Elegant Beef |
06:09:59 | leorize | you can't find the index of a value in a set |
06:10:12 | leorize | but you can do so for a seq[], there's a `find()` module defined for it |
06:12:34 | FromDiscord | <Benumbed> See that's what I was looking for, but I couldn't find it in system |
06:12:37 | FromDiscord | <Elegant Beef> Yea i was being dumb i would've just got the enum base 2 value π |
06:12:38 | FromDiscord | <Benumbed> but if there's a module |
06:12:41 | FromDiscord | <Elegant Beef> It's in system |
06:12:44 | FromDiscord | <Elegant Beef> But not under seq |
06:13:16 | FromDiscord | <Elegant Beef> https://nim-lang.org/docs/system.html#find%2CT%2CS |
06:13:26 | FromDiscord | <Benumbed> Searching for `find(` in system.nim nets me a goosegg for proc refs |
06:13:54 | FromDiscord | <Benumbed> lol doh |
06:14:02 | FromDiscord | <Elegant Beef> I do have to say annoyingly it's not listed under seqs |
06:14:02 | FromDiscord | <Elegant Beef> https://cdn.discordapp.com/attachments/371759389889003532/702039420877930536/unknown.png |
06:14:32 | leorize | well PR it in? :) |
06:14:55 | FromDiscord | <Elegant Beef> I dont contribute, i misinform |
06:15:15 | FromDiscord | <Benumbed> Noted :triggered: |
06:15:30 | FromDiscord | <Benumbed> Thanks for the help BTW, both of you |
06:16:10 | FromDiscord | <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:18 | leorize | it's still wrong btw :P |
06:18:59 | FromDiscord | <Elegant Beef> huh? |
06:19:37 | FromDiscord | <Elegant Beef> if you have any single bit value that will give you the index of said bit |
06:19:52 | FromDiscord | <Elegant Beef> log2(2^y) = y |
06:20:00 | leorize | except it doesn't work like that with Nim sets :) |
06:20:07 | FromDiscord | <Elegant Beef> yea |
06:20:24 | FromDiscord | <Elegant Beef> I got that, i dont know anything about nims sets, i just spew bullshit |
06:20:25 | skrylar[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:57 | FromDiscord | <Elegant Beef> I mean if you depend on automagic numbers what are you doing? |
06:21:12 | leorize | https://github.com/nim-lang/Nim/blob/devel/lib/system/sets.nim#L13 |
06:21:15 | leorize | this is what sets are btw |
06:21:18 | skrylar[m] | well in some faceplates i successfully made nim sets that matched the c bitfield, making zero cost sets |
06:21:27 | skrylar[m] | back in the day. i dont do that anymore |
06:22:07 | leorize | https://nim-lang.org/docs/manual.html#set-type-bit-fields |
06:22:11 | leorize | it's now officially supported |
06:23:09 | skrylar[m] | woot |
06:25:12 | leorize | note that nim sets are variable sized |
06:29:42 | FromDiscord | <Benumbed> Hmmm Status' Chronicles library is pretty aweomse |
06:29:58 | FromDiscord | <Benumbed> awesome^ |
06:30:13 | skrylar[m] | how much of a heinous hack is this: `type bleh* = object ... proc []=*(self: type[bleh]; index: int; enabled: bool` |
06:30:33 | skrylar[m] | so you can enable attribute arrays in gl with `attributes[0] = true` |
06:31:24 | FromDiscord | <Elegant Beef> Doesnt exactly seem like a hack more just QOL |
06:32:25 | skrylar[m] | for some reason i thought `something[]=` would work, but i'm pretty sure you can't make fake subscripts like this |
06:41:17 | skrylar[m] | well. half done. sometime tonight should have the faceplate done |
06:42:24 | skrylar[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:11 | Araq | offtopic but funny: https://www.comicskingdom.com/bizarro/2020-04-19 |
07:20:35 | Araq | skrylar[m]: it's acceptable code |
07:21:17 | Araq | it's probably becoming a common idiom somewhere :-) |
07:25:01 | skrylar[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:33 | FromDiscord | <such father that father not> it's pretty sad that you need to explicitly cast numbers to types other than int |
08:15:59 | FromDiscord | <such father that father not> cause say i want to have an array of uint8, right |
08:16:29 | FromDiscord | <such father that father not> do i really need to cast every number? cause otherwise nim says "got int, but expected uint8" |
08:16:38 | Yardanico | no |
08:16:55 | FromDiscord | <such father that father not> this is how i'm doing it for now |
08:16:55 | FromDiscord | <such father that father not> https://cdn.discordapp.com/attachments/371759389889003532/702070345225601034/Zrzut_ekranu_2020-04-21_o_10.16.44.png |
08:16:55 | Yardanico | you can do it like let myarr = [1'u8, 2, 3, 4] |
08:17:28 | Yardanico | const Opcode = [0x10'u8, 0x11, 0x50, 0x88, 0x99] |
08:17:31 | Yardanico | you can insert newlines if you want |
08:17:40 | FromDiscord | <such father that father not> Okay, thanks! |
08:17:55 | FromDiscord | <such father that father not> by the way, what's the difference between `let` and `var`? |
08:18:04 | Yardanico | "let" is for immutable variables |
08:18:08 | Yardanico | "var" is for mutable variables |
08:18:19 | FromDiscord | <such father that father not> oooh, makes sense |
08:18:24 | FromDiscord | <such father that father not> Thanks very much! |
08:18:44 | Yardanico | there'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:52 | Yardanico | but not the reference, since "let" will hold the reference, not the object itself |
08:19:04 | FromDiscord | <such father that father not> funky |
08:20:18 | Yardanico | well it makes sense |
08:21:45 | FromDiscord | <Recruit_main707> can i have something like this then? `let a = ptr b` |
08:21:45 | FromDiscord | <Recruit_main707> `a[] = 2` |
08:22:01 | Yardanico | what is "ptr b" supposed to mean |
08:22:11 | Yardanico | you meant "let a = addr b" maybe? |
08:22:25 | FromDiscord | <Recruit_main707> yep |
08:22:31 | FromDiscord | <Recruit_main707> i always mess those |
08:22:33 | Yardanico | but 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:45 | Yardanico | you'll be able to modify the underlying object because "let" variable will only contain an immutable pointer |
08:22:56 | FromDiscord | <Recruit_main707> cool |
08:23:09 | FromDiscord | <such father that father not> yeah but don't you *not* mute pointers? |
08:23:12 | FromDiscord | <such father that father not> mutate* |
08:23:27 | FromDiscord | <such father that father not> you can't change the address or something |
08:23:30 | FromDiscord | <such father that father not> of* |
08:23:47 | FromDiscord | <Recruit_main707> but you could point to something else |
08:24:04 | FromDiscord | <such father that father not> i feel like that seems way off |
08:24:11 | FromDiscord | <such father that father not> and that you wouldn't use something like that |
08:24:42 | FromDiscord | <such father that father not> yeah pointers are black magic lol |
08:25:23 | FromDiscord | <such father that father not> especially in a garbage collected language |
08:25:40 | Yardanico | as Recruit said, with "let" you won't be able to change where it points to |
08:26:04 | Yardanico | and nim has both GC'd and not GC'd pointers, you can always use raw pointers if you really want to |
08:26:32 | FromDiscord | <Recruit_main707> ref = gc'd pointer, ptr = raw pointer right? |
08:27:12 | FromDiscord | <such father that father not> didn't know that |
08:27:15 | Yardanico | yeah, there's also "pointer" which is the same as "void*" in C |
08:27:36 | FromDiscord | <Recruit_main707> and there is also void |
08:28:09 | Yardanico | that's just a empty type |
08:28:15 | Yardanico | it can be omitted |
08:28:35 | Yardanico | there's also "auto" in case you didn't know |
08:29:03 | FromDiscord | <Recruit_main707> i didnt |
08:29:31 | Yardanico | https://nim-lang.org/docs/manual.html#types-auto-type |
08:29:43 | FromDiscord | <such father that father not> okay, so while we're in the topic of memory, nim states this in the docs |
08:29:58 | FromDiscord | <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:10 | FromDiscord | <such father that father not> so is there a way to dynamically allocate stuff on the heap? |
08:30:18 | Yardanico | of course |
08:30:29 | FromDiscord | <such father that father not> how? |
08:30:40 | FromDiscord | <such father that father not> sorry for the noobish questions π
|
08:30:55 | FromDiscord | <Recruit_main707> ref i believe |
08:30:56 | * | sammich_ joined #nim |
08:31:01 | FromDiscord | <such father that father not> oh, really? |
08:31:06 | Yardanico | like "alloc" |
08:31:07 | FromDiscord | <such father that father not> so that's what ref is for π€¦π»ββοΈ |
08:31:08 | Yardanico | "allocShared" |
08:31:16 | Yardanico | "alloc0" |
08:31:27 | Yardanico | realloc, dealloc, etc |
08:31:32 | * | sammich_ quit (Client Quit) |
08:31:34 | Yardanico | search for "alloc" in system module docs |
08:31:52 | FromDiscord | <such father that father not> yeah, so i'm seeing also something like this in the docs: |
08:32:04 | FromDiscord | <such father that father not> |
08:32:04 | FromDiscord | <such father that father not> https://cdn.discordapp.com/attachments/371759389889003532/702074157298614342/Zrzut_ekranu_2020-04-21_o_10.32.00.png |
08:32:19 | Yardanico | yes, that's possible |
08:32:26 | Yardanico | "ref" is GC'd pointer |
08:32:27 | FromDiscord | <such father that father not> so that's a bit like `new int` in c++, right? |
08:32:40 | Yardanico | https://nim-lang.org/docs/system.html#new%2Cref.T%2Cproc%28ref.T%29 |
08:32:43 | FromDiscord | <such father that father not> i mean about `new(n)` |
08:32:57 | Yardanico | well I'm not really experienced with C++ so I can't answer |
08:33:10 | FromDiscord | <such father that father not> heh π |
08:33:20 | FromDiscord | <such father that father not> nim is such a huge language |
08:33:32 | FromDiscord | <such father that father not> and i thought it was only a one-trick pony |
08:33:46 | Yardanico | read https://nim-lang.org/docs/manual.html when you're bored |
08:33:49 | Yardanico | you'll discover a lot of stuff |
08:33:51 | FromDiscord | <such father that father not> lmao |
08:33:56 | Yardanico | also https://nim-lang.org/docs/manual_experimental.html |
08:34:05 | skrylar[m] | a lot of its sugar |
08:34:05 | FromDiscord | <such father that father not> ooooh, experimental |
08:40:34 | FromDiscord | <such father that father not> okay, so is there something akin to the rest operator in JS? |
08:40:48 | FromDiscord | <such father that father not> cause say i have a seq to which i'm appending items |
08:40:55 | FromDiscord | <such father that father not> and i have a proc that returns a seq |
08:41:10 | FromDiscord | <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:46 | FromDiscord | <such father that father not> it doesn't return an error, so i presume it's correct π€ |
08:42:18 | Yardanico | "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:45 | Yardanico | 1) 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:34 | Yardanico | or argument as "seq[yourtype]", return type is the same and then "var data = ..." "data.add(myproc(...))" |
08:43:53 | FromDiscord | <such father that father not> yeah, the second approach is what i'm doing right now and it seems to be working |
08:44:31 | Yardanico | the first one might be more efficient though :P |
08:44:53 | FromDiscord | <such father that father not> really? how so? |
08:46:00 | Yardanico | well with current compiler optimizations it might be the same, not really sure |
08:47:44 | Araq | what to use depends on the recursiveness of your proc, if it's recursive, use a 'accumulator: var seq[T]' parameter |
08:49:23 | FromDiscord | <such father that father not> it actually is recursive, it's a parser |
08:49:42 | Araq | I know. |
08:51:14 | FromDiscord | <such father that father not> yeah, you're probably right now that i look at it |
08:55:23 | FromGitter | <alehander92> guys |
08:55:28 | FromGitter | <alehander92> mornnnning |
08:55:35 | Yardanico | gmorning |
08:55:48 | FromGitter | <alehander92> after holidays :) |
08:55:49 | FromDiscord | <such father that father not> hi! |
08:56:10 | FromGitter | <alehander92> hey, strange name maybe inspired by a tree algorithm |
08:56:28 | FromDiscord | <such father that father not> mine? |
08:56:40 | FromGitter | <alehander92> yes, probably a pun |
08:56:43 | FromDiscord | <such father that father not> not really, but makes sense π
|
08:59:41 | FromGitter | <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:28 | skrylar[m] | @araq @ergonomic beef alright thats as much as i'm working on this tonight https://git.sr.ht/~skrylar/skgl |
09:14:28 | FromDiscord | <Rika> ergonomic??? |
09:15:05 | skrylar[m] | elegant beef but i'm tired |
09:15:11 | FromGitter | <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:03 | skrylar[m] | usually the way people embed chrome is with libCEF |
09:16:36 | Araq | it 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:46 | Araq | the tooling isn't there yet though, I think, as --gc:arc is too new |
09:20:09 | Araq | can anybody help me with https://github.com/Araq/packedjson/issues/7 ? |
09:20:10 | disbot | β₯ Cannot import packedjson |
09:20:16 | Araq | I don't understand the problem |
09:22:09 | FromDiscord | <Rika> will test |
09:27:14 | * | Jjp137 joined #nim |
09:38:50 | * | dddddd joined #nim |
09:40:39 | solitudesf | yep, .nim file doesnt get installed for me too |
09:43:07 | Faulander | easy 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:15 | FromDiscord | <Rika> me neither |
09:43:17 | FromDiscord | <Rika> weird... |
09:43:31 | solitudesf | but if i manually git clone -> nimble install - it works properly |
09:44:37 | FromGitter | <alehander92> Faulander you want a dynamic variable name? |
09:44:51 | FromGitter | <alehander92> variable names have to be generated on compile time |
09:45:06 | FromGitter | <alehander92> do you use json on compile time |
09:45:08 | Faulander | no no, i want to convert a string saved in a variable to a raw string |
09:45:16 | Yardanico | you don't need to |
09:45:21 | FromGitter | <alehander92> what do you call a raw string |
09:45:27 | Yardanico | "raw string" is not a separate type |
09:46:06 | solitudesf | 'raw' is a propery of string literal |
09:46:22 | Faulander | ok, i get this string from json: 2020-04-21T11:39:34] - DEBUG - JSON:/downloads/ |
09:46:31 | Faulander | all after JSON: |
09:46:42 | Yardanico | pls no big pastes :P |
09:47:10 | FromDiscord | <Rika> doesnt look like a big paste |
09:47:38 | Faulander | this is a string: var body = "/downloads/" |
09:47:49 | Faulander | and if i do parseJson(body) i get an error |
09:48:06 | Yardanico | well that's not correct JSON |
09:48:48 | FromDiscord | <Rika> where do you get that string anyway |
09:48:53 | FromDiscord | <Rika> can you paste the whole json |
09:49:14 | FromDiscord | <Rika> not here ofc as yardanico says |
09:53:23 | * | sentreen joined #nim |
09:53:57 | Faulander | ok, 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:10 | FromDiscord | <Rika> it probably isnt json then |
09:56:44 | * | sentreen_ quit (Ping timeout: 256 seconds) |
09:57:23 | Faulander | https://play.nim-lang.org/#ix=2iV8 |
09:57:39 | Yardanico | "JSON:/downloads/" that aint json :P |
09:57:43 | Yardanico | like really |
09:57:47 | Faulander | i know |
09:57:47 | Yardanico | it's not JSON at all |
09:57:49 | Faulander | its a string |
09:57:54 | Yardanico | so why are you trying to parse it as json? |
09:59:09 | * | Intensity quit (Read error: Connection reset by peer) |
09:59:24 | Faulander | omg ... i should sleep more |
09:59:51 | Faulander | you must be so tired of my non nim related bug questions. sorry for that |
10:00:26 | * | Intensity joined #nim |
10:00:31 | FromDiscord | <Rika> go sleep |
10:00:31 | Yardanico | it's ok |
10:00:33 | Faulander | i just called the wrong proc, i have another one which converts strings to json |
10:01:33 | FromDiscord | <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:56 | Yardanico | the same as any other native numbers on your PC |
10:02:02 | Yardanico | on your device* |
10:02:04 | FromDiscord | <such father that father not> so little? |
10:02:06 | Yardanico | if your device is big-endian, they're big endian |
10:02:10 | Yardanico | otherwise little endian |
10:02:31 | Yardanico | nim integers are native, there's no "containers" for them |
10:02:39 | FromDiscord | <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:39 | skrylar[m] | there is also an endian module with a set of procs to do endian swapping |
10:02:53 | FromDiscord | <such father that father not> and i don't know from which side to parse lol |
10:03:13 | FromDiscord | <such father that father not> i'm sorry if what i'm saying makes completely no sesne |
10:03:15 | FromDiscord | <such father that father not> sense* |
10:06:07 | skrylar[m] | but they did answer; its the same as your local system |
10:06:26 | skrylar[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:28 | FromDiscord | <such father that father not> yeah yeah i know |
10:06:53 | FromDiscord | <such father that father not> also big thanks if i haven't made that clear lol |
10:07:04 | FromDiscord | <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:28 | FromDiscord | <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:35 | PMunch | @genotrace, you around? |
11:44:02 | FromDiscord | <Recruit_main707> he is shashlick in this server |
11:46:33 | PMunch | Ah, they're the same person! |
11:46:38 | PMunch | Hard to keep track of all the nicks.. |
11:46:50 | PMunch | @shashlick, you around? |
11:46:52 | FromDiscord | <Recruit_main707> xDD |
11:50:23 | FromDiscord | <such father that father not> lol |
11:51:01 | livcd | whoever created this abomination called Teams should be punished |
11:51:35 | PMunch | livcd, like Microsoft Teams? |
11:51:45 | livcd | yeah that one |
11:52:02 | PMunch | Luckily never had to use it, haven't heard anything good about it :P |
11:53:03 | livcd | what chat app do you use at work? |
11:53:24 | FromDiscord | <Rika> i heard microsoft teams is really fucking horrible |
11:53:30 | FromDiscord | <Recruit_main707> its true, discord is way better and im sure it can hold 20-30 ppl |
11:54:19 | livcd | electron apps are horrible in general |
11:54:44 | Araq | !rfcs distro |
11:54:45 | disbot | https://github.com/nim-lang/RFCs/issues/173 -- 3Developing Nim's stdlib and a Nim distribution |
11:54:45 | disbot | https://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:44 | PMunch | livcd, Slack |
11:58:29 | PMunch | It doesn't work in FireFox, but apart from that it seems to work okay |
11:59:53 | FromGitter | <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:04 | PMunch | Anyone else who can get this to work? https://github.com/genotrance/nimssl/tree/linux |
12:14:30 | * | zacharycarter joined #nim |
12:24:27 | Faulander | teams 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:48 | Faulander | otherwise it's like slack, lacking the integrations ... but the integration with sharepoint (if you use it) is really great |
12:24:53 | Faulander | we like it ALOT |
12:25:35 | FromDiscord | <Recruit_main707> ive seen discord discos with about 500 ppl |
12:25:36 | livcd | Faulander: it cant do one thing well...not lag like crazy because it's made of crap. |
12:25:56 | Araq | ping disruptek |
12:26:22 | Faulander | Discord would NEVER EVER be used in a company environment, at least not in companies with sensible data and sensible clients |
12:27:04 | Faulander | and 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:14 | FromDiscord | <Recruit_main707> they've made a quick update to make it a bit more not-gamer friendly |
12:27:21 | livcd | I use this for private communication https://www.kakaocorp.com/service/KakaoTalk |
12:27:39 | livcd | It's a native app. Takes around 10MB here. |
12:27:50 | Faulander | too late, there are only two options. slack and teams and in europe teams already has won, in us probably slack |
12:30:00 | Faulander | we are a small company with alot of clients, we never have experienced lag, except in the beginning of the corona crisis |
12:30:49 | livcd | I 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:28 | Faulander | it 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:33 | livcd | Faulander: I am on Search Results |
12:34:33 | livcd | Featured snippet from the web |
12:34:38 | livcd | oops |
12:34:39 | FromDiscord | <Recruit_main707> Faulander: ive been thinking, why would you even need 10.000 people capabilities |
12:34:55 | livcd | Search Results |
12:34:55 | livcd | Featured snippet from the web |
12:35:00 | livcd | HP EliteBook 840 G5 - 14" - Core i5 8350U - 8 GB RAM - 256 GB SSD - US |
12:35:05 | livcd | And it's not a pleasant experience |
12:35:19 | * | xcm joined #nim |
12:35:49 | Faulander | Lenovo 15" - Core i5, 16GB Ram |
12:36:00 | Faulander | probably you're running low on RAM. |
12:36:13 | * | Vladar quit (Quit: Leaving) |
12:37:31 | livcd | which was my point the whole time :) |
12:37:50 | Faulander | well, but that's not really the problem of the program itself :) |
12:37:54 | federico3 | all this stuff is off topic |
12:38:17 | livcd | no nim discussion going on! |
12:38:36 | federico3 | it still takes people's time to go through the backlog |
12:38:47 | Faulander | ok, back to nim. how do you guys create github markdown from the rst docs in nim? |
12:41:27 | Araq | 'koch docs' |
12:42:04 | Araq | and how can I change my color settings for VSCode on OSX? it says it cannot write some settings file |
12:44:54 | Faulander | cmd + "," and change it directly in the settings |
12:45:47 | Araq | never mind, finally figured it out |
12:45:54 | Araq | took me a year... |
12:46:12 | Araq | finally I understood what the program tried to tell me |
12:48:51 | FromDiscord | <clyybber> can I safely cast an `array[N, float64]` to an `array[N div 2, array[2, float64]]` ? |
12:49:08 | FromDiscord | <clyybber> I fear it might be unsafe because of alignment |
12:49:24 | FromDiscord | <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:28 | liblq-dev | @clyybber: well uh, you can always check by casting both arrays to ptr UncheckedArray[uint8] and comparing the contents |
12:51:44 | liblq-dev | I would say it should work |
12:51:45 | * | Kaivo joined #nim |
12:51:55 | liblq-dev | because arrays don't have any special headers |
12:54:25 | shashlick | @PMunch sorry it's not functional yet, @voltist helped convert it to nimterop but it's broken since |
12:54:43 | PMunch | That's what I feared.. |
12:54:55 | shashlick | The new ast2 algo should go better but will need some effort to get it working |
12:55:02 | shashlick | What specific portion do you need |
12:55:16 | shashlick | I can get it back in shape |
12:56:28 | PMunch | RSA encrypt/decrypt |
12:56:33 | PMunch | I already have the keys |
12:57:10 | shashlick | Will you be linking with the dll/so or want to compile it in |
12:57:16 | shashlick | Also which os |
12:57:28 | PMunch | Doesn't really matter |
12:57:35 | PMunch | And Windows and Linux for the platform |
12:58:51 | Araq | so. here is a new idea regarding https://github.com/nim-lang/RFCs/issues/173 |
12:58:53 | disbot | β₯ Developing Nim's stdlib and a Nim distribution |
13:00:21 | Araq | anybody interested? |
13:00:23 | shashlick | PMunch: ok dll/so is easier |
13:00:39 | shashlick | I can whip something out quickly for you to use for now |
13:00:47 | PMunch | Neat! |
13:02:15 | euantor | OpenBSD 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:16 | disbot | β₯ #12103 - CI for OpenBSD |
13:02:47 | PMunch | Araq, is that text updated with the new idea? |
13:02:55 | Araq | no |
13:10:37 | shashlick | PMunch: do you have some sample C code?want to know what specific headers need wrapped |
13:11:52 | PMunch | Well 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:49 | Araq | so 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:16 | FromDiscord | <Recruit_main707> and should work with arc? |
13:13:31 | FromGitter | <alehander92> what is theindex |
13:13:37 | Araq | yes but only with devel's arc |
13:14:07 | FromGitter | <alehander92> hm, they need some kind of maintainer system |
13:14:15 | FromDiscord | <clyybber> alehander92: The search page in the docs |
13:14:17 | FromGitter | <alehander92> e.g. what happens if module X's maintainer steps down |
13:15:12 | Araq | the 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:42 | Araq | the package needs to be setup, it needs CI integration, a Nimble entry etc and even then no QA happens |
13:16:16 | Araq | alehander92: we maintain it like nim-lang, it becomes a community effort |
13:16:36 | FromGitter | <alehander92> so it's like an extended optional stdlib |
13:16:44 | Araq | and we'll ensure it's not suddenly removed from github... |
13:17:58 | Araq | alehander92: the overall quality and domain is not "stdlib" like |
13:18:26 | Araq | for example, you can add a decent UI library or stuff like my 'dialogs.nim' which don't fit a stdlib |
13:22:11 | FromGitter | <alehander92> hm, ok |
13:22:47 | FromGitter | <alehander92> but how do you guys solve the |
13:23:06 | FromGitter | <alehander92> one adds a good ui library, year later most people start using lib Y because its so cool |
13:23:12 | FromGitter | <alehander92> thing |
13:23:21 | Araq | and 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:28 | FromDiscord | <Skaruts> if I do `import foo except a, b` and then `export foo`, does `a` and `b` get exported with the module? |
13:24:53 | FromDiscord | <Skaruts> seems like it's what's happening in my code |
13:24:56 | Araq | Skaruts: I think so, but a very good question |
13:25:15 | Araq | export foo except a, b |
13:25:21 | Araq | was added in version 1, iirc? |
13:25:47 | * | Vladar joined #nim |
13:26:15 | FromDiscord | <Skaruts> oh let me give it a try |
13:27:09 | Araq | alehander92: in this regard it is stdlib-like, stuff in there keeps working unless we move it to the graveyard |
13:27:48 | Araq | and bigger packages like QT or wxWidgets continue to better be done as separate packages |
13:28:06 | liblq-dev | Araq: 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:06 | FromDiscord | <Skaruts> worked, thanks Araq |
13:29:38 | Araq | liblq-dev: ok, ping me again about it tomorrow if I forget |
13:29:47 | liblq-dev | sure |
13:31:00 | Araq | and 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:12 | PMunch | Problem with that is that it's hard to know which is newer of 3bbc36e3074a0baf34ac20c9fe210bde2390ab2c and 8033061afa00f8bd206df5d08bba3e85cde1e38b |
13:32:17 | FromDiscord | <Rika> why would you be able to export something you havent imported? |
13:32:23 | PMunch | Plus kinda hard to reference.. |
13:33:45 | Araq | PMunch: sure and I prefer ISO dates as the version but that doesn't work for reproducible builds |
13:34:00 | Araq | we could combine them |
13:35:57 | Araq | Rika: well the compiler doesn't remember what you imported when it processes the 'export' statement |
13:36:13 | Araq | but IMO it's good enough |
13:38:57 | * | endragor quit (Remote host closed the connection) |
13:38:59 | FromDiscord | <Rika> okay |
13:40:51 | FromDiscord | <EdgyNerd> can any of the 3 compilation targets (C++, C, ObjC) give any speed improvements, or are they all fairly similar? |
13:41:33 | PMunch | Depends on the compiler/optimisations. But I've seen the C++ target be considerably faster sometimes |
13:41:39 | PMunch | Other times they're the same |
13:41:45 | PMunch | Or slightly slower |
13:41:51 | Araq | EdgyNerd: C vs C++ is an interesting open question. In theory C++ has the faster exception handling impl |
13:42:09 | Araq | but I also heard rumors of C++ being 2x slower on some code for unknown reasons |
13:43:34 | FromDiscord | <Recruit_main707> i feel like "echo" in c++ was WAYYYYY slower |
13:43:47 | FromDiscord | <Recruit_main707> i havent checked it in a while though |
13:44:08 | FromDiscord | <Recruit_main707> but it was making my program go slow |
13:44:10 | Araq | makes no sense though, we don't use 'cout' or anything |
13:44:38 | FromDiscord | <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:12 | Araq | well, 'fusion' package? yay or nay? |
13:48:49 | FromDiscord | <Rika> for what? |
13:49:51 | Araq | for growing Nim in an easier way |
13:50:39 | FromDiscord | <Recruit_main707> could be interesting |
13:50:45 | FromGitter | <alehander92> well, if the core team wants to maintain all this |
13:51:14 | FromGitter | <alehander92> (talking in the worst case where n packages get stale) |
13:51:43 | Araq | alehander92: currently we have packages under nim-lang that lack CI |
13:51:59 | Araq | and I accepted PRs and now for example 'zip' is broken on Windows |
13:52:31 | Araq | maintaining *instead* 'fusion' would be easier than this mess of dozens of little packages |
13:52:44 | FromGitter | <alehander92> ok, for small packages it probably makes sense |
13:53:31 | FromGitter | <alehander92> does this mean eventually more of stdlib might move *to* fusion one day |
13:53:51 | Araq | stale packages are a problem either way but this way at least they keep compiling |
13:54:56 | Araq | yeah we can move more of the stdlib to extensions too |
13:58:32 | Araq | and 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:17 | Araq | as you can see, I'm trying to get into the lovely fairy world where code is immutable |
14:00:21 | FromGitter | <alehander92> hm |
14:02:02 | * | xet7 quit (Quit: Leaving) |
14:02:39 | companion_cube | Araq: have you read about the unison language? |
14:04:15 | * | xet7 joined #nim |
14:04:57 | Araq | companion_cube: yes I do |
14:05:21 | companion_cube | cool, 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:31 | FromDiscord | <mratsim> can we add monorepo support to nimble before "fusion"? |
14:18:53 | Araq | nimble does support multiple nimble projects per repository already |
14:20:10 | FromDiscord | <mratsim> oh? so the installation path would stay nimble install zip or nimble install sdl2? |
14:20:21 | FromDiscord | <mratsim> assuming both are put in a fusion monorepo? |
14:21:18 | narimiran | @mratsim see https://github.com/nim-lang/graveyard |
14:37:48 | FromDiscord | <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:51 | FromDiscord | <Rika> no |
14:39:22 | FromDiscord | <Rika> because there is an implicit result variable |
14:39:26 | FromDiscord | <Rika> (i assume) |
14:40:27 | liblq-dev | yeah, not returning anything isn't harmful in most cases but it could warn you if you forget to assign to `result` |
14:40:32 | Araq | there is a warning for it but only for types that lack default(T) |
14:42:41 | FromDiscord | <clyybber> @mratsim Do you think https://github.com/nim-lang/Nim/issues/13193 should be high priority? |
14:42:44 | disbot | β₯ Type tyAnything can't be matched to proc argument of typedesc type ; snippet at 12https://play.nim-lang.org/#ix=2iWM |
14:43:57 | Araq | clyybber: iirc I tried to fix that one and it's hard |
14:44:14 | FromDiscord | <mratsim> for me it's blocking but I don't know if supportsCopyMem in a type section is that popular a feature |
14:44:28 | Araq | one idea that I had was to introduce tyTypedesc2 and get it right this time |
14:44:43 | Araq | and then we can deprecate typedesc for typedesc2. |
14:44:58 | Araq | currently whenever I try to fix too much wrt typedesc too much stuff breaks |
14:45:26 | Araq | we could use a better name than typedesc2 for it though |
14:45:43 | FromDiscord | <mratsim> the whole generics/static/typedesc is quite tricky |
14:46:10 | Araq | one after the other, typedesc seems more important than "generic sandwiching" IME |
14:46:18 | FromDiscord | <clyybber> @mratsim Does it work when you do CpuStorage[T: type] instead? |
14:46:30 | FromDiscord | <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:29 | Araq | mratsim: do not conflate everything together, typedesc is tricky but "working with types inside macros" is a different topic |
14:48:23 | Araq | but 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:27 | FromDiscord | <clyybber> Ha |
14:48:32 | FromDiscord | <clyybber> I think I know the source |
14:48:34 | FromDiscord | <clyybber> of that bug |
14:48:52 | FromDiscord | <clyybber> Its that in `Generic[T]` the T defaults to any |
14:49:01 | FromDiscord | <clyybber> and not to type |
14:49:03 | FromDiscord | <clyybber> as it should |
14:49:17 | FromDiscord | <mratsim> |
14:49:17 | FromDiscord | <mratsim> https://cdn.discordapp.com/attachments/371759389889003532/702169089078198363/unknown.png |
14:49:19 | FromDiscord | <clyybber> So it makes sense that you can't call supportsCopyMem |
14:49:47 | FromDiscord | <clyybber> Oh, I have to test your original snippet |
14:49:53 | FromDiscord | <clyybber> Only tested cooldomes minified one |
14:49:56 | FromDiscord | <mratsim> I'm not conflating, everything related to generic/static/typedesc types is tricky |
14:50:00 | FromDiscord | <mratsim> both macros and semchecks |
14:50:26 | FromDiscord | <clyybber> @mratsim Yeah, works for me |
14:50:32 | FromDiscord | <clyybber> I'll comment on github |
14:50:50 | FromDiscord | <mratsim> I can't assign the result |
14:51:01 | Araq | mratsim: they are different features and implementations |
14:51:21 | disruptek | the fusion idea doesn't compel me at all. |
14:52:02 | FromDiscord | <clyybber> mratsim: Can you give me an example? |
14:52:03 | FromDiscord | <mratsim> it may be different but it's about the same "layer"/"object"/"concept" |
14:52:41 | Araq | disruptek: why not? |
14:53:16 | disruptek | i dunno what to tell you. change that doesn't change anything changes nothing. |
14:53:50 | Araq | what should we change instead? |
14:53:51 | disruptek | i will wait for the RFC update; maybe i've missed something. |
14:54:04 | disruptek | create a working pattern to solve the module imports issue. |
14:54:15 | disruptek | i have a feeling it's already doable, but i haven't tested it yet. |
14:54:25 | Araq | what is the "module imports issue"? |
14:54:35 | disruptek | move forward on the pm->builder->compiler pattern. |
14:54:42 | FromDiscord | <mratsim> @clyybber that's not even the error I have but here is one: https://play.nim-lang.org/#ix=2iWS |
14:54:59 | disruptek | the issue with imports, exports, circular imports, w/e. |
14:55:13 | disruptek | make nimsuggest support include so we can actually use it. |
14:55:23 | Araq | it does support 'include' |
14:55:30 | disruptek | not /enough/ |
14:55:50 | FromDiscord | <mratsim> and this one is an ICE: https://play.nim-lang.org/#ix=2iWT |
14:55:55 | disruptek | iirc it's broken by forward decls too. |
14:56:06 | disruptek | leorize knows all. |
14:56:18 | Araq | I'll wait for him then |
14:59:09 | disruptek | i think i'm back to wasting time on generics. |
14:59:34 | disruptek | ~stream |
14:59:35 | disbot | stream: 11https://twitch.tv/disruptek (live video/audio) and mumble://uberalles.mumbl.io/ (live voice chat) -- disruptek |
14:59:39 | disruptek | but streaming about something else. |
14:59:41 | disruptek | anything else. |
15:00:49 | FromDiscord | <clyybber> @mratsim Hmm, yeah the compiler trips over that explicit `: type` |
15:01:03 | FromDiscord | <clyybber> @mratsim Your ICE is fixed when using `: not static` instead :p |
15:01:14 | FromDiscord | <mratsim> ... |
15:01:25 | FromDiscord | <mratsim> I've also used static to fix bug in the generic code |
15:01:31 | disruptek | https://github.com/juancarlospaco/nim_packages_security_audit |
15:01:41 | companion_cube | damn, how do you see anything with that contrast in your editor |
15:02:13 | companion_cube | yep :p |
15:02:24 | FromDiscord | <mratsim> This openarray semcheck bug is fixed by using a dummy static parameter: https://github.com/nim-lang/Nim/issues/6343 |
15:12:08 | FromDiscord | <clyybber> Araq: FWIW pony also doesn't have scope based destruction yet (or may never have it) |
15:12:30 | Araq | does Pony have destructors? |
15:13:18 | FromDiscord | <clyybber> Yeah |
15:13:29 | FromDiscord | <clyybber> But they are not overridable |
15:13:40 | FromDiscord | <clyybber> More like, they have a GC and finalizers |
15:14:14 | FromDiscord | <clyybber> And the GC only collects stuff from some "proc" after that proc has run |
15:14:25 | Araq | I want scope based destruction, it would further improve the generated machine code |
15:14:44 | companion_cube | you mean RAII? |
15:15:08 | FromDiscord | <clyybber> Araq: Yeah |
15:15:23 | FromDiscord | <clyybber> companion_cube: Similar concept yeah |
15:15:27 | Araq | companion_cube: yeah (the term is terrible though) |
15:15:35 | companion_cube | yeah but it's well known by now |
15:19:35 | FromDiscord | <exelotl> Hey I published my GBA image conversion library :) |
15:19:39 | FromDiscord | <exelotl> https://github.com/exelotl/trick |
15:19:51 | FromDiscord | <clyybber> nice! just saw the PR for the pkglist |
15:21:46 | FromDiscord | <clyybber> @exelotl If you want a challenge you could try doing all this at compile time |
15:22:13 | FromDiscord | <clyybber> So that you can say loadImg("somePng.png") |
15:22:25 | FromDiscord | <clyybber> Directly in your games code I mean |
15:24:39 | * | natrys joined #nim |
15:25:54 | FromDiscord | <mratsim> @Araq, did you read the scope-based mangement of the scopes programming language? |
15:26:42 | Araq | yeah I think I did |
15:27:04 | Faulander | does encodeQuery only accept one type? |
15:27:05 | FromDiscord | <clyybber> lritter hops on this channels sometimes |
15:29:16 | Faulander | https://play.nim-lang.org/#ix=2iX2 |
15:30:51 | FromDiscord | <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:25 | FromDiscord | <exelotl> You still have to remember to run the tool though, whenever you add or change an image |
15:32:53 | FromDiscord | <clyybber> Hmm, that should be possible to automate |
15:33:05 | FromDiscord | <clyybber> at least via staticExec |
15:33:55 | FromDiscord | <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:22 | FromDiscord | <exelotl> I think a simpler/more primitive solution isn't such a bad thing |
15:34:32 | FromDiscord | <clyybber> sure |
15:35:35 | * | Guest18401 is now known as dadada |
15:35:43 | dadada | hi |
15:36:17 | dadada | can I use nim's parser at runtime? somehow? |
15:37:00 | FromGitter | <sealmove> dadada yes, you have to use the compiler API |
15:37:03 | FromDiscord | <clyybber> via the compiler api maybe. |
15:37:38 | FromGitter | <sealmove> Is it possible to specify multiple executables in a nimble package> |
15:39:04 | FromDiscord | <sealmove> dadada: https://github.com/nim-lang/Nim/blob/devel/tests/compilerapi/tcompilerapi.nim |
15:41:01 | dadada | sealmove: great, thank you! |
15:42:09 | dadada | another option occured to me just now, I could call nim as external program and let it dumpTree things for me |
15:45:35 | FromDiscord | <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:00 | FromDiscord | <mratsim> the compiler API is broken for me: https://github.com/nim-lang/Nim/issues/12293 |
15:59:01 | disbot | β₯ 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:49 | FromGitter | <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:17 | FromGitter | <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:18 | FromGitter | <alehander92> please look for one issue where people found the flags to do it |
16:09:53 | FromGitter | <alehander92> hm ok http://webcache.googleusercontent.com/search?q=cache:https://github.com/ziglang/zig/issues/5055 seems |
16:10:00 | FromGitter | <alehander92> maybe as a different issue , sorry |
16:10:29 | FromGitter | <brentp> https://github.com/nim-lang/Nim/pull/13757 is what i find. |
16:10:31 | disbot | β₯ Add support for `zig cc` as C compiler. |
16:11:12 | * | rockcavera quit (Read error: Connection reset by peer) |
16:11:30 | FromGitter | <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:08 | FromDiscord | <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:33 | FromDiscord | <sealmove> e.g.: |
16:41:33 | FromDiscord | <sealmove> ```nim |
16:41:34 | FromDiscord | <sealmove> echoMacro: |
16:41:34 | FromDiscord | <sealmove> thisString |
16:41:34 | FromDiscord | <sealmove> theString |
16:41:34 | FromDiscord | <sealmove> ``` |
16:41:50 | FromDiscord | <Recruit_main707> echo can work that way |
16:41:57 | FromDiscord | <Recruit_main707> its not recommended though |
16:42:03 | FromDiscord | <Recruit_main707> but it will work |
16:42:21 | FromDiscord | <Recruit_main707> or you mean multiline strings? |
16:42:27 | * | msmorgan joined #nim |
16:43:05 | * | noonien joined #nim |
16:43:13 | FromDiscord | <sealmove> single line is ok. why it's not recommended? |
16:43:25 | FromDiscord | <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:58 | yumaikas | sealmove: Why not just use a multiline string? |
16:45:13 | FromDiscord | <sealmove> example? |
16:45:22 | * | hsh joined #nim |
16:46:16 | FromDiscord | <sealmove> My code is like "print 3 lines, then run some code, then print 2 lines, run some code, print 4 lines" |
16:46:56 | FromGitter | <alehander92> just alias it to something like `e` |
16:47:16 | FromGitter | <alehander92> or inject automatically echoes around statements |
16:48:40 | FromDiscord | <mratsim> @sealmove it's easy to write a macro that does that |
16:49:07 | FromDiscord | <sealmove> "inject automatically echoes around statements" this sounds interesting, how to do? |
16:49:07 | FromDiscord | <mratsim> you can check the code of the `check` macro/template in unittest, it insert something at each statement |
16:50:17 | FromDiscord | <mratsim> otherwise just macro echoAll(body: untyped): untyped = for s in body: newCall(bindSym"echo", s) |
16:50:41 | FromDiscord | <mratsim> ah sorry forgot a result = newStmtList() and result.add newCall(bindSym"echo", s) |
16:50:58 | FromDiscord | <sealmove> awesome π |
16:52:23 | FromDiscord | <mratsim> https://play.nim-lang.org/ |
16:52:32 | FromDiscord | <mratsim> https://play.nim-lang.org/#ix=2iXF |
16:54:12 | Faulander | how do i create a linebreak in nims created documentation? |
16:54:12 | FromDiscord | <sealmove> mratsim this is exactly what I was looking for :> |
16:55:16 | FromDiscord | <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:46 | FromDiscord | <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:51 | FromDiscord | <sealmove> would that be too hard to do? |
17:03:16 | FromDiscord | <Rika> i dont think so |
17:04:21 | yumaikas | sealmove: 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:43 | FromDiscord | <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:29 | FromDiscord | <sealmove> well I want to easily print something like this: |
17:11:29 | FromDiscord | <sealmove> ```nim |
17:11:30 | FromDiscord | <sealmove> &"""{"Relative path":<25} | {lnk.relPath.str}""" |
17:11:30 | FromDiscord | <sealmove> &"""{"Absolute path":<25} | {absolute(lnk.workDir.str, lnk.relPath.str)}""" |
17:11:30 | FromDiscord | <sealmove> ``` |
17:12:24 | FromDiscord | <Recruit_main707> when you run nim with the --header, does it include the intermediate c file? |
17:12:24 | FromDiscord | <Recruit_main707> ie: `nim c --header file.nim` |
17:12:24 | FromDiscord | <Recruit_main707> will `file.h` contain #include `file.c`? |
17:12:33 | FromDiscord | <sealmove> hmm, I think I know how to do it, need to first make a regular proc |
17:21:25 | leorize | Recruit_main707: the --header switch is deprecated |
17:21:44 | FromGitter | <alehander92> hm, i will rename `lodka` to `study-kernel` and build it with :arc |
17:21:59 | FromGitter | <alehander92> but i plan to use the async/await macro there |
17:22:05 | FromGitter | <alehander92> wonder if it will work out |
17:22:52 | FromDiscord | <Recruit_main707> leorize, why? |
17:23:10 | FromDiscord | <Recruit_main707> it could be very useful for interoping with c/c++ |
17:23:26 | FromDiscord | <Recruit_main707> nim -> c/c++ that is |
17:25:34 | leorize | the exact lines from Araq: "Nim is not a header generator" |
17:26:22 | * | drewr quit (Ping timeout: 260 seconds) |
17:26:29 | leorize | btw Araq, this is the problematic bug in nimsuggest: http://ix.io/2iXP/nim |
17:27:55 | FromDiscord | <Recruit_main707> is there onther, as easy way for interoping nim -> c/c++? |
17:28:20 | Yardanico | what would be a good way to check if a float can be represented as int without any loss? |
17:28:34 | Yardanico | like 5.0 can be "safely" represented as 5 but not 5.5 |
17:28:53 | companion_cube | turn to int, then back to float, check for equality? |
17:29:00 | Yardanico | yeah I also thought like that |
17:29:05 | Yardanico | just feels like it might be not the best way :P |
17:29:42 | FromDiscord | <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:59 | Yardanico | float(int(a)) == a I guess |
17:30:13 | leorize | I think the problem with --header is that it depends heavily on Nim |
17:30:20 | leorize | you need nimbase.h, I'm sure of that |
17:31:15 | leorize | Yardanico: `==` never works well for float fwiw |
17:31:29 | FromDiscord | <Recruit_main707> wasnt nimbase.h gonna be deprecated also? |
17:31:55 | leorize | Yardanico: maybe `a - trunc(a) <= some small number` |
17:32:19 | leorize | Recruit_main707: yea but it's not here anytime soon |
17:33:11 | FromDiscord | <Recruit_main707> (if you ask me, just print it directly in each file :P ) |
17:33:26 | FromDiscord | <Recruit_main707> or add it to the cache |
17:34:25 | FromGitter | <awr1> hello |
17:34:30 | FromDiscord | <Recruit_main707> hi |
17:35:13 | FromDiscord | <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:55 | FromGitter | <awr1> what do you mean, like getting C to call nim? |
17:36:01 | leorize | make your own header generator :P |
17:36:22 | FromDiscord | <Recruit_main707> that sounds unfun having one :( |
17:36:31 | leorize | the bad thing about --header is that it also generates header for... everything |
17:36:41 | FromDiscord | <Recruit_main707> does it? |
17:36:55 | leorize | afaik, yea |
17:37:08 | FromDiscord | <Recruit_main707> last time i used it, i think it didnt |
17:37:13 | FromDiscord | <Recruit_main707> let me check |
17:37:17 | leorize | well a header generator might just be a macro |
17:37:40 | leorize | I thought of making one but currently I'm busy with other projects |
17:49:10 | FromDiscord | <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:01 | leorize | `{.bycopy.}` |
17:57:13 | * | pydsigner quit (Ping timeout: 264 seconds) |
17:57:28 | FromDiscord | <Recruit_main707> well, its not giving a fuck about it :P |
17:57:43 | leorize | use bycopy on the type itself |
17:57:44 | * | hax-scramper quit (Ping timeout: 258 seconds) |
17:57:53 | FromDiscord | <Recruit_main707> i am |
17:58:02 | leorize | that's weird |
17:58:03 | * | pydsigner joined #nim |
17:58:06 | leorize | any examples? |
17:58:22 | FromDiscord | <Recruit_main707> is it because its `var Type`? |
17:58:36 | leorize | well obviously lol |
17:59:17 | FromDiscord | <Recruit_main707> var is just a pointer to an initialised object? |
17:59:34 | leorize | yea, it's implemented as a pointer to something |
17:59:38 | leorize | I mean that's the only way |
18:00:54 | * | nickster joined #nim |
18:01:41 | Faulander | i just managed to write the 500th line of nim code in an program. congratulate me, way to go! ;) |
18:01:51 | leorize | woooo \o/ |
18:02:00 | FromDiscord | <Recruit_main707> nice |
18:02:17 | FromDiscord | <Recruit_main707> i dont think i have even reached 500 lines in a single file xD |
18:02:20 | Faulander | not too bad for only a few days of (mostly) struggling around, hahaha |
18:03:30 | * | junland quit (Quit: %ZNC Disconnected%) |
18:04:41 | Faulander | i 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:24 | FromGitter | <alehander92> nice |
18:05:54 | * | hax-scramper joined #nim |
18:05:55 | Faulander | i think i will create a library out of it ... if i sometimes find out, how do :) |
18:07:28 | Faulander | i 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:08 | leorize | ah 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:19 | leorize | for your project there's nim doc --project |
18:08:29 | Faulander | and that creates markdown? |
18:08:59 | leorize | oh wait you want to generate markdown? |
18:09:07 | narimiran | Faulander: that creates .html |
18:09:09 | Faulander | i thought thats only if you have more files ... i yet have to split up the source in different files |
18:09:12 | FromGitter | <alehander92> hm, cant nim doc create makrdown |
18:09:20 | FromGitter | <alehander92> i almost never try to run that |
18:09:31 | Faulander | i just want to create github readme.md with it :) |
18:09:41 | leorize | !repo mddoc |
18:09:42 | disbot | https://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:29 | Faulander | thank 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:50 | FromGitter | <alehander92> huh it just doesnt work for me |
18:13:28 | FromDiscord | <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:54 | FromDiscord | <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:29 | FromGitter | <alehander92> oh sorry it works |
18:15:36 | FromGitter | <alehander92> i need to pass the flags that i pass to my build |
18:16:08 | * | pydsigner joined #nim |
18:16:36 | FromGitter | <alehander92> i really want a white background! |
18:16:48 | * | hax-scramper joined #nim |
18:18:05 | FromDiscord | <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:53 | FromGitter | <alehander92> huh it is white |
18:23:04 | federico3 | sealmove: but we need better integration and tooling around kaitai |
18:23:05 | FromGitter | <alehander92> i maybe want more different code clocks color |
18:23:13 | FromGitter | <alehander92> just so hard to undestand for me |
18:23:20 | FromGitter | <alehander92> comparing it to rust/zig they just seem white-r |
18:23:27 | FromGitter | <alehander92> but it seems its an illusion |
18:27:17 | livcd | I have heard of kaitai before oO |
18:28:13 | FromDiscord | <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:27 | FromDiscord | <mratsim> you need to expand the README @sealmove I have absolutely no idea how to use those |
18:59:51 | FromDiscord | <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:59 | FromDiscord | <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:57 | inv2004 | Is it possible to have recursive imports? google says better to not ask it here :) |
19:49:27 | FromDiscord | <sealmove> you mean cyclic imports? |
19:49:34 | FromDiscord | <sealmove> no, it's not implemented yet |
19:49:50 | FromDiscord | <sealmove> Probably Nim 2.0 |
19:50:10 | inv2004 | trying 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:39 | inv2004 | src/k_f.nim(3, 1) Error: redefinition of 'len'; previous declaration here: src/k_f.nim(3, 6) |
20:03:45 | inv2004 | ?!? It is the same file |
20:03:50 | inv2004 | and line |
20:04:15 | Yardanico | can you show this line? |
20:04:23 | inv2004 | proc len(x: K): clonglong = |
20:04:35 | inv2004 | If I do :int - the same error |
20:04:42 | solitudesf | thats because of includes |
20:05:25 | inv2004 | Ah! :)) I forgot about the include I did 2 mins ago, but you remember it |
20:10:02 | * | inv2004 quit (Quit: Leaving) |
20:16:35 | FromGitter | <bung87> is there a objc runtime binding ? |
20:17:55 | FromGitter | <bung87> I want fix old c version webview but the `objc_msgSend` looks ugly |
20:21:31 | shashlick | @PMunch - still around? |
20:25:08 | FromDiscord | <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:26 | FromDiscord | <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:47 | leorize | that kind of import only works one way fwiw |
20:29:16 | leorize | ie. 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:29 | Prestige | Can someone explain something about tables? https://play.nim-lang.org/#ix=2iZq |
20:39:49 | Prestige | I'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:20 | Yardanico | Prestige: it works if you do initTable[string, proc()]() |
20:42:55 | Prestige | Yeah 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:29 | Yardanico | also 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:36 | Yardanico | also with --gc:arc the results are consistent :P |
20:45:02 | Yardanico | 160k iterations/sec for evaluating "2+2*2-3*5125-12512+25125*44-33+2*2" |
20:46:53 | FromDiscord | <Elegant Beef> So using imgui for a status bar is silly, no such thing as alignment as far as i see |
20:46:56 | FromDiscord | <Elegant Beef> So im smart! |
20:47:55 | * | ehmry joined #nim |
20:57:58 | companion_cube | you mean horizontal alignment? |
20:58:12 | FromDiscord | <Elegant Beef> Yea |
20:58:13 | Yardanico | by the way guys I'm using TabNine with nim extension in VSCode and so far it's pretty good |
20:58:27 | Yardanico | sometimes it's so smart that I'm scared |
20:58:39 | Yardanico | well, rather not smart but analyses the code very well |
20:58:49 | FromDiscord | <Elegant Beef> You cant exactly go "i want x widgets left aligned these center aligned and these right aligned" |
20:58:52 | Yardanico | so I have this case statement https://github.com/Yardanico/nim-lox/blob/master/src/debug.nim#L38 |
20:58:56 | companion_cube | ah well, it's quite direct in terms of rendering |
20:59:07 | companion_cube | isn't a status bar something thin, though? |
20:59:09 | Yardanico | and when I needed to write a new one, I started doing "of OpLess: " and then TabNine autocompleted the WHOLE line |
20:59:12 | companion_cube | (if it's like i3-status) |
20:59:14 | FromDiscord | <Elegant Beef> I might make three groups though |
20:59:15 | Yardanico | to " of OpLess: simpleInstruction("OP_LESS", offset" |
20:59:18 | Yardanico | like literally |
20:59:23 | FromDiscord | <Elegant Beef> Yea it's 30 pixels atm |
21:00:11 | companion_cube | beef: have you looked at the demo window? there's some layout instructions it seems |
21:00:16 | FromDiscord | <Elegant Beef> |
21:00:16 | FromDiscord | <Elegant Beef> https://cdn.discordapp.com/attachments/371759389889003532/702262449449074776/unknown.png |
21:00:23 | FromDiscord | <Elegant Beef> I havent actually |
21:00:28 | FromDiscord | <Elegant Beef> That's currently what my status bar is |
21:00:37 | companion_cube | ah, there's a ImGuiShowDemoWindow or something like that |
21:00:41 | companion_cube | super useful to see what's available |
21:00:48 | FromDiscord | <Elegant Beef> Yea i know, havent looked at it though |
21:01:36 | FromDiscord | <Elegant Beef> Launcher is just so i can launch applications inside xephyr since my WM blocks all my inputs |
21:25:20 | skrylar[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:30 | Prestige | Hm 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:35 | skrylar[m] | @earlier |
21:27:53 | Yardanico | Prestige: how do you import stuff? |
21:35:42 | FromDiscord | <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:34 | Yardanico | @mratsim yeah I saw that PR in weave it's very cool! |
21:40:32 | FromDiscord | <Recruit_main707> leorize: since var is a pointer, will `ptr Type` be compatible with `var Type` also? |
21:44:46 | leorize | no |
21:44:57 | leorize | the fact it's a pointer is just an implementation detail |
21:45:22 | leorize | technically speaking `var` will be compatible with `ptr`, but not the other way around |
21:45:46 | FromDiscord | <Recruit_main707> ok |
21:46:14 | leorize | `var` semantics let it assumes that there can't be any `nil` pointer passed |
21:46:19 | leorize | `ptr` doesn't have that |
21:46:41 | FromDiscord | <Recruit_main707> i see |
21:48:14 | * | solitudesf quit (Ping timeout: 256 seconds) |
21:50:39 | * | Vladar quit (Quit: Leaving) |
21:54:18 | Prestige | Yardanico: from nimdow.nim, import nimdowpkg/windowmanager doesn't work |
21:54:55 | Prestige | But 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:31 | Yardanico | damn 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:30 | leorize | dom96: when should I call `GC_unref()` on a `Custom` object? |
22:18:32 | dom96 | context? |
22:18:44 | shashlick | does cligen have a way to do `-d -d -d` for increasing debug level |
22:19:06 | leorize | dom96: I've just called an overlapped operation, and it finishes without having to go async |
22:19:35 | leorize | do I unref my `Custom` there? |
22:19:59 | dom96 | honestly cannot remember, see what the stdlib code does |
22:20:36 | leorize | asyncdispatch is known to leak on windows, I don't think seeing the stdlib code is a good bet |
22:20:53 | leorize | but I'm seeing differing opinions here |
22:21:08 | leorize | stdlib don't unref if an overlapped operation completes before having to go async |
22:21:22 | leorize | but cheatfate's asynctools unref if that happens |
22:28:03 | FromDiscord | <Recruit_main707> [about flatbuffers] |
22:28:03 | FromDiscord | <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:04 | FromDiscord | <Recruit_main707> |
22:28:04 | FromDiscord | <Recruit_main707> How is it looking guys? |
22:28:04 | FromDiscord | <Recruit_main707> (this is based on the python implementation: |
22:28:06 | FromDiscord | <Recruit_main707> https://github.com/google/flatbuffers/tree/master/python/flatbuffers/table.py |
22:28:06 | FromDiscord | <Recruit_main707> https://play.nim-lang.org/#ix=2j09 |
22:28:46 | FromDiscord | <Recruit_main707> I should have left a bit of space between the URLs :P |
22:29:14 | dom96 | leorize: is asyncdispatch known to leak on windows? Do you have an issue? |
22:30:32 | leorize | no, 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:20 | leorize | either it's a difference in how the gc release memory, or it's a difference between how asyncdispatch handle its memory |
22:31:38 | leorize | I'm skeptical since I'm seeing GC_ref and GC_unref all over the place |
22:32:46 | leorize | I'm looking for documentation regarding if IOCP still notify for operations completed on-the-spot |
22:33:25 | dom96 | async definitely leaked memory on linux |
22:33:34 | leorize | if it doesn't then we're leaking a bunch, at least in asyncdispatch |
22:33:38 | dom96 | (I saw it with my own eyes :)) |
22:34:06 | dom96 | but 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:06 | disruptek | doesn't leak for me in the testament test. |
22:34:57 | * | NimBot joined #nim |
22:35:14 | dom96 | ^ That NimBot crash was likely due to a leak :) |
22:35:24 | dom96 | But I would guess it was fixed by now, I haven't recompiled it in too long |
22:39:48 | leorize | at least one source said iocp would still notify for operations done immediately |
22:40:01 | leorize | but the said source also say that it's configurable |
22:40:33 | dom96 | test it, write to a writeable socket or something |
22:41:53 | Yardanico | lmaooo |
22:42:05 | Yardanico | guess what error I got when I tried to run paramCount in js backend with -d:nodejs? |
22:42:07 | Yardanico | "Error: Error: unhandled exception: paramCount is not implemented on Nintendo Switch [OSError]" |
22:42:53 | FromDiscord | <Recruit_main707> Bruh |
22:43:09 | Yardanico | well nim has a nintendo switch target, but it was unexpected seeing this error for JS backend |
22:43:47 | FromDiscord | <Recruit_main707> They didn't even expect people trying so they didn't even make an error for that cases xD |
22:44:03 | leorize | I made a PR error out at compile time |
22:44:16 | leorize | to make it ^ |
22:44:19 | FromGitter | <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:44 | leorize | timotheecour: because it's not the same thing? |
22:45:59 | leorize | you can do this `procThatTakeVar(nil[])` with var |
22:46:23 | leorize | because by Nim logic it already errored out the moment you deref `nil` to pass into the var param |
22:47:03 | leorize | so by definition, the `var` param will never take a `nil` pointer in Nim, which is why it can assume that |
22:48:25 | shashlick | @Recruit_main707 - did the flatcc wrapper work out? |
22:48:53 | FromDiscord | <Recruit_main707> Nope, I didn't try that much not gonna lie |
22:49:00 | FromGitter | <timotheecour> @leorize ya ok, that was a bad idea. |
22:50:14 | shashlick | okay |
22:51:29 | FromDiscord | <exelotl> mannn it's not possible to overload `with` from the standard library, is it... |
22:51:53 | leorize | it should be possible? |
22:52:37 | FromDiscord | <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:54 | FromDiscord | <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:16 | leorize | make yours take typed :P |
22:56:21 | FromDiscord | <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:50 | Yardanico | oh boy I managed to run my (early) Nim implementation of C implementation of Lox from craftinginterpreters |
22:57:54 | Yardanico | with JS backend |
22:58:15 | Yardanico | just needed to add around 40 JS-specific loc for stderr/stdout and reading input |
22:58:41 | FromDiscord | <exelotl> leorize: oh, it does work if I avoid generics |
22:59:16 | FromDiscord | <exelotl> Bad: template with*[T:SomeRegister](r: T, args: varargs[untyped]) |
22:59:21 | FromDiscord | <exelotl> Good: template with*(r: SomeRegister, args: varargs[untyped]) |
23:01:48 | FromDiscord | <exelotl> would there be a way to represent the concrete type of `r` in the body of the "Good" template? |
23:01:58 | FromDiscord | <exelotl> since I can't use T |
23:03:37 | FromDiscord | <Recruit_main707> Maybe something like: let T = r.typeof |
23:05:55 | * | Trustable quit (Remote host closed the connection) |
23:08:13 | leorize | dom96: I'm not on windows atm |
23:08:27 | leorize | I'm tempted to ask on stack overflow lol |
23:09:41 | dom96 | do it |
23:11:56 | shashlick | @Recruit_main707: sounds good - it compiled for me on linux, i can try windows if that's what you are targeting |
23:19:26 | leorize[m] | dom96: I think I solved it |
23:19:44 | leorize[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:10 | leorize[m] | from MS docs: https://docs.microsoft.com/en-us/windows/win32/fileio/i-o-completion-ports |
23:20:26 | leorize[m] | it appear that it will notify again |
23:20:45 | leorize[m] | unless an error occur, ofc |
23:24:35 | leorize | just to be sure I'll have to test this again once I'm on windows |
23:26:41 | leorize | implementing stuff on top of asyncdispatch is a PITA without any kind of docs whatsoever |
23:26:54 | leorize | I'll see if I can document the low-level bits after I'm done with the project |
23:29:14 | Yardanico | ngl this looks kinda cool :D https://i.imgur.com/uhsGYTB.png |
23:29:31 | Yardanico | managed to use google closure compiler for Nim's JS output (for browser, GCC doesn't really support nodejs) |
23:30:11 | Yardanico | GCC also said "0 error(s), 128 warning(s), 71.6% typed" |
23:31:08 | leorize | not 100% typed? :P |
23:31:28 | Yardanico | no :P |
23:32:22 | Yardanico | I'm really suprised nim's js backend is that good |
23:33:15 | * | krux02 quit (Remote host closed the connection) |
23:38:00 | dom96 | I tried closure compiler on my game's JS once |
23:38:02 | dom96 | It broke the JS :P |
23:38:05 | Yardanico | lol |
23:55:11 | * | hoffentlichja quit (Quit: leaving) |