00:00:02 | * | junland quit (Quit: %ZNC Disconnected%) |
00:00:27 | * | vicfred_ quit (Remote host closed the connection) |
00:00:47 | * | vicfred_ joined #nim |
00:01:45 | * | bung quit (Ping timeout: 240 seconds) |
00:01:45 | * | vicfred quit (Ping timeout: 240 seconds) |
00:01:48 | * | junland joined #nim |
00:03:36 | * | vicfred_ quit (Client Quit) |
00:08:07 | * | abm quit (Quit: Leaving) |
00:22:18 | FromGitter | <ynfle> Whats the channel for these videos? |
00:23:56 | Yardanico | the same name :) |
00:24:11 | Yardanico | https://www.youtube.com/user/kiloneie/videos |
00:28:35 | FromGitter | <ynfle> š |
00:30:54 | * | bung joined #nim |
00:34:25 | silvernode[m] | 2 weeks of paid vacation starting today. |
00:34:35 | disruptek | you're sick, huh? |
00:37:03 | silvernode[m] | Finally, I can work on learning more Nim |
00:38:26 | * | bung quit (Ping timeout: 260 seconds) |
00:40:35 | disruptek | i hope you live long enough to use it. |
00:43:48 | FromGitter | <ynfle> How can I split an `openarray` into chunks of specific size? |
00:43:53 | Yardanico | distribute |
00:44:13 | Yardanico | ah hm it's only for seqs |
00:44:19 | Yardanico | so you'll have to convert your openarray into a seq |
00:44:20 | Yardanico | https://nim-lang.org/docs/sequtils.html#distribute%2Cseq%5BT%5D%2CPositive |
00:44:32 | Yardanico | you can do it like distribute(@myopenar, 5) |
00:44:32 | * | FromDiscord quit (Remote host closed the connection) |
00:44:48 | FromGitter | <ynfle> I have a string |
00:44:50 | * | FromDiscord joined #nim |
00:44:56 | Yardanico | you can still use that |
00:45:03 | Yardanico | @ will convert your string into a seq |
00:45:07 | Yardanico | !eval echo @"hello" |
00:45:09 | NimBot | @['h', 'e', 'l', 'l', 'o'] |
00:45:23 | FromGitter | <ynfle> Thanks |
00:46:17 | silvernode[m] | So when I use echo to display error messages in my programs, I always feel like there is some built in error proc that I should be using instead and I wanted to check with all of you and find out. |
00:46:27 | Yardanico | raise an exception? |
00:46:31 | Yardanico | or use doAssert |
00:46:40 | silvernode[m] | yeah, with a message |
00:46:47 | Yardanico | well, exceptions can contain messages |
00:46:58 | Yardanico | they all do |
00:47:55 | silvernode[m] | I have just never learned how I should be handling errors in any programming language I have every used so I figured it's time to learn some best practices instead of just doing things my own ways. |
00:48:07 | silvernode[m] | * I have just never learned how I should be handling errors in any programming language I have ever used so I figured it's time to learn some best practices instead of just doing things my own ways. |
00:48:10 | Yardanico | for actual *errors* you should use exceptions |
00:48:25 | silvernode[m] | I recently started using try: except |
00:48:32 | silvernode[m] | does that count? |
00:48:44 | Yardanico | well, yes, but using a generic "except" is not the best idea |
00:48:55 | Yardanico | and that's for catching exceptions |
00:48:57 | Yardanico | not raising them :P |
00:49:01 | silvernode[m] | <Yardanico "well, yes, but using a generic ""> This is what I need to hear |
00:49:43 | silvernode[m] | I want to learn what most Nim programmers do to raise and handle exceptions. |
00:49:59 | Yardanico | raise newException(Exception, "message) |
00:50:21 | Yardanico | " |
00:50:44 | silvernode[m] | is the "Exception" before the comma a placeholder or what I would actually write there? |
00:50:58 | Yardanico | you would either use one of the exception types in the stdlib |
00:51:00 | Yardanico | or create your own |
00:51:08 | Yardanico | https://nim-lang.org/docs/tut2.html#exceptions |
00:51:09 | silvernode[m] | ah ok |
00:51:26 | silvernode[m] | Now that I have time off I can actually get through the entire tutorial |
00:51:34 | silvernode[m] | thanks Yardanico |
00:51:35 | Yardanico | https://nim-lang.org/docs/manual.html#exception-handling |
00:56:17 | silvernode[m] | now I just need to learn when to bother raising exceptions. The tutorial states that things like opening a file are common and not really somewhere you would generally want to raise an exception. |
01:00:11 | Yardanico | well, it's up to you as a library author to decide |
01:10:34 | * | bung joined #nim |
01:15:13 | * | bung quit (Ping timeout: 264 seconds) |
01:16:47 | FromGitter | <ynfle> Is there something like `mapWhile`? |
01:16:56 | Yardanico | what would that do? |
01:17:11 | FromGitter | <ynfle> Map until a condition is reached |
01:17:18 | Yardanico | and how would that "map" work? |
01:17:24 | Yardanico | anyway, I think a simple for loop will work just fine for you |
01:17:33 | Yardanico | or check https://github.com/zero-functional/zero-functional, maybe it has something you need |
01:17:46 | Yardanico | it has takeWhile and map |
01:19:24 | FromGitter | <ynfle> So I guess we don't have takewhile in stdlib |
01:19:49 | Yardanico | yes, but isn't it pretty simple to implement anyway? :) |
01:19:50 | Yardanico | you can add it |
01:22:24 | FromGitter | <ynfle> In what way is it easy? |
01:23:22 | Yardanico | use sequtils.cycle and check for condition |
01:23:36 | Yardanico | ah sorry not that cycle |
01:23:53 | Yardanico | something like https://github.com/narimiran/itertools/blob/master/src/itertools.nim#L46 but with the check for condition |
01:23:55 | Yardanico | and in a proc |
01:23:57 | Yardanico | seems pretty easy for me |
01:24:07 | disruptek | dude, you should totally do that. |
01:24:25 | disruptek | i'm worried that Yardanico isn't writing enough nim. |
01:24:31 | * | bung joined #nim |
01:24:35 | Yardanico | i am writing enough nim |
01:24:52 | Yardanico | I just don't like using functional style for anything :P |
01:24:58 | Yardanico | I'd rather use traditional loops in more complex cases |
01:25:00 | Yardanico | + collect |
01:29:18 | * | bung quit (Ping timeout: 260 seconds) |
01:38:27 | FromGitter | <ynfle> ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=5f388e1260892e0c69747c64] |
01:38:53 | FromGitter | <ynfle> Stolen from `sequtils.filterIt` |
01:44:36 | disruptek | Yardanico: why won't you fix the quoting? |
01:44:44 | Yardanico | ??? |
01:44:57 | Yardanico | first of all, I don't have control over FromGitter |
01:44:58 | Yardanico | it's not mine |
01:45:12 | disruptek | not gitter, chucklehead, discord. |
01:45:17 | Yardanico | and what's the issue here? |
01:45:27 | Yardanico | yes, when people paste code into play.nim-lang.org, I paste the whole message |
01:45:32 | Yardanico | because only parsing the ``` blocks might be harder |
01:45:35 | Yardanico | but I might do something later |
01:45:41 | disruptek | later? |
01:45:44 | Yardanico | later |
01:45:46 | disruptek | later today? |
01:45:50 | Yardanico | later soon |
01:45:59 | disruptek | soon today? |
01:46:13 | disruptek | dude. |
01:46:17 | disruptek | it makes my balls throb. |
01:46:29 | Yardanico | not today |
01:47:11 | disruptek | yes, even today. |
01:47:40 | FromDiscord | <Elegant Beef> If you want it done today disruptek, go get it done š |
01:53:36 | * | apahl_ quit (Ping timeout: 244 seconds) |
01:55:44 | * | apahl joined #nim |
02:03:32 | * | awe001 quit (Ping timeout: 256 seconds) |
02:04:57 | * | waleee-cl quit (Quit: Connection closed for inactivity) |
02:19:38 | disruptek | i'm working on dust. |
02:19:44 | disruptek | angel dust. |
02:19:57 | disruptek | it's not really conducive to bot hacking. |
02:20:26 | disruptek | it's more of a fight-a-coywolf-with-your-bare-hands kinda drug. |
02:25:40 | FromDiscord | <Hearthstone> ~~From Hazbin Hotel?-~~ |
02:25:52 | disruptek | you know it? |
02:35:22 | * | muffindrake quit (Ping timeout: 260 seconds) |
02:37:39 | * | muffindrake joined #nim |
02:41:05 | FromDiscord | <Hearthstone> Oh damn- |
02:41:10 | FromDiscord | <Hearthstone> Someone actually knows- |
02:41:42 | FromDiscord | <Hearthstone> Yes I've watched all of the pilots so far and read the comic that's out on the site |
02:41:59 | disruptek | we've got a real lunatic here. |
02:42:10 | FromDiscord | <Hearthstone> Nice- |
02:42:31 | FromDiscord | <Hearthstone> My favourite character is Alastor :) |
03:02:31 | * | endragor joined #nim |
03:12:36 | * | bung joined #nim |
03:13:03 | * | filcuc_ joined #nim |
03:13:55 | * | filcuc quit (Ping timeout: 246 seconds) |
03:16:45 | * | bung quit (Ping timeout: 240 seconds) |
03:17:34 | * | arecacea1 quit (Remote host closed the connection) |
03:17:53 | * | arecacea1 joined #nim |
03:22:20 | FromDiscord | <Varriount> Yardanico: Where's the source code for the discord bridge? |
03:22:30 | Yardanico | I posted it quite a few times |
03:22:30 | Yardanico | https://github.com/Yardanico/ircord/ |
03:25:35 | Zevv | post it again! |
03:25:40 | Zevv | ~discord |
03:25:40 | disbot | no footnotes for `discord`. š |
03:25:48 | Yardanico | nono |
03:25:51 | Yardanico | discord should be a link |
03:26:02 | Yardanico | ~ircord is https://github.com/Yardanico/ircord/ |
03:26:02 | disbot | ircord: 11https://github.com/Yardanico/ircord/ |
03:26:16 | Zevv | no we dont want people to *use* it right, we wan them to use irc like good netizins |
03:27:16 | FromDiscord | <Varriount> Zevv: I'll happily use IRC, if someone is willing to host a bouncer with a web interface for me. |
03:27:56 | FromDiscord | <Varriount> Zevv: By the way, have you considered using asciidoc for the NPeg readme? You'd be able to get a nice table of contents from it. |
03:27:57 | FromDiscord | <Elegant Beef> Cmon let's meet half way, use matrix |
03:28:54 | Zevv | varriout: yeah I did, but then it wouldnt render proprely on the github readme |
03:29:33 | Zevv | I dont find the current rendering to bad actually. |
03:34:15 | Zevv | disruptek: how the hell can that be? I have stuff that does not work for you, and you have stuff that does not work for me |
03:34:21 | Zevv | and we use the same stuff?! |
03:40:03 | FromDiscord | <Varriount> @zevv What do you mean? |
03:46:02 | Zevv | oh this cps stuff. Disruptek was able to dig up a handful of new Nim compiler bugs, which Clyybber is mostly trying to get fixed. But now we have this cps code that works for me, but does boom for disruptek, and the other way around |
03:46:10 | Zevv | we verified nim compiler versions, cps repo versions |
03:46:14 | Zevv | it's cumbersome |
03:51:04 | FromDiscord | <Hearthstone> Hoping I don't get banned for this |
03:51:09 | FromDiscord | <Hearthstone> ~discord is https://discord.gg/A3HUdcM |
03:51:09 | disbot | discord: 11https://discord.gg/A3HUdcM |
03:51:15 | FromDiscord | <Hearthstone> Coolio |
03:51:42 | FromDiscord | <Hearthstone> Just a permanent link for anyone who wants to join the discord from irc, gitter, or matrix |
03:52:03 | Yardanico | don't use this one |
03:52:15 | Yardanico | ~discord is https://discord.gg/ezDFDw2 |
03:52:15 | disbot | discord: 11https://discord.gg/A3HUdcM |
03:52:16 | disbot | discord: 11https://discord.gg/ezDFDw2 |
03:52:24 | FromDiscord | <Hearthstone> Oh- |
03:52:24 | Yardanico | disruptek: delete the old entry please :P |
03:52:30 | Yardanico | https://discord.gg/ezDFDw2 is the "main" one |
03:52:35 | Yardanico | I created it back when I created the discord server |
03:52:37 | FromDiscord | <Hearthstone> Oh- |
03:52:43 | FromDiscord | <Hearthstone> :P |
03:52:53 | Yardanico | and anyway when the discord server verification applications reopen dom will apply for it |
03:52:55 | Yardanico | so we get a nice link |
03:52:56 | FromDiscord | <Hearthstone> Why doesn't the bot automatically remove entries?- |
03:53:02 | FromDiscord | <Hearthstone> Oo |
03:53:04 | FromDiscord | <Hearthstone> Coolio |
03:53:12 | Zevv | because a bot is no smarter then its maker |
03:53:50 | FromDiscord | <Hearthstone> Oh so my bots get discontinued early- |
03:53:51 | FromDiscord | <Hearthstone> Wait- |
03:54:00 | FromDiscord | <Hearthstone> I'm gonna get discontinued early- |
03:54:03 | FromDiscord | <Hearthstone> OH NO- |
03:54:22 | Zevv | one can never tell, right. In the end it's all about statistics |
03:54:26 | Zevv | p = 0.01 and the like |
03:54:53 | FromDiscord | <Hearthstone> :P |
03:57:10 | * | bung joined #nim |
03:59:20 | FromDiscord | <Varriount> @zevv No, I mean the asciidoc rendering |
04:02:26 | Zevv | oh right |
04:02:50 | Zevv | what's not clear? I don't hate the MD rendering on github, and if I would do asciidoc, I would not be able to put the whole manual in the top level github readme |
04:02:54 | Zevv | which I kind of like |
04:06:02 | * | supakeen quit (Quit: WeeChat 2.8) |
04:06:45 | * | supakeen joined #nim |
04:16:55 | FromDiscord | <Varriount> Why though? Doesn't GitHub support asciidoc? |
04:17:07 | FromDiscord | <Varriount> @zevv ^ |
04:25:15 | * | icyphox left #nim ("WeeChat 2.8") |
04:25:56 | shashlick | Hearthstone just remove your entry |
04:26:12 | shashlick | Each user gets their own |
04:33:13 | * | leorize joined #nim |
04:41:31 | Yardanico | shashlick: you can't remove with disbot |
04:41:52 | Yardanico | only manually in the db by disruptеk himself |
05:15:39 | leorize | !repo disbot |
05:15:41 | disbot | https://github.com/atomicptr/disbot -- 9disbot: 11Hubot Adapter for discord.js 15 2ā 2š“ 7& 29 more... |
05:16:53 | leorize | !repo disruptek/disbot |
05:16:53 | disbot | https://github.com/disruptek/disbot -- 9disbot: 11disbot data 15 0ā 0š“ |
05:17:04 | leorize | ^ that one doesn't seem to be updated any more though |
05:17:50 | Yardanico | ~nameisjohn |
05:17:51 | disbot | nameisjohn: 11It's john :) |
05:18:19 | Yardanico | ~!eval |
05:18:20 | disbot | !eval: 11command to evaluate snippets on IRC |
05:20:38 | * | arecacea1 quit (Remote host closed the connection) |
05:21:04 | * | arecacea1 joined #nim |
05:40:19 | ForumUpdaterBot | New thread by Jiro4989: GitHub Actions: workflow to generate documents with ``nimble doc`` and release to GitHub Pages, see https://forum.nim-lang.org/t/6683 |
06:15:02 | * | solitudesf joined #nim |
06:22:09 | Zevv | varriout:oh does it? I thought they only do markdown for hte top level readme |
07:02:50 | bung | in openssl.nim some procs without dynlib specified, some have, why is that ? |
07:38:35 | * | Vladar joined #nim |
08:33:26 | * | hnOsmium0001 quit (Quit: Connection closed for inactivity) |
08:41:29 | * | vsantana joined #nim |
08:43:22 | * | vsantana quit (Client Quit) |
08:45:57 | * | krux02 joined #nim |
09:03:52 | * | drewr quit (Ping timeout: 260 seconds) |
09:05:47 | * | drewr joined #nim |
09:14:17 | FromDiscord | <Varriount> Zevv: https://github.com/asciidoctor/asciidoctor |
09:14:46 | FromDiscord | <Varriount> That repo seems to be using asciidoc in the readme |
09:37:46 | FromDiscord | <iWonderAboutTuatara> bit of a project iw ould noramlly write in py |
09:38:00 | * | hyiltiz quit (Ping timeout: 256 seconds) |
09:38:08 | FromDiscord | <iWonderAboutTuatara> how would I take the rgba value of each image and store it in an array? |
09:39:10 | FromDiscord | <Recruit_main707> I think there is a module to do that |
09:39:26 | FromDiscord | <Recruit_main707> !repo npeg |
09:39:28 | disbot | https://github.com/zevv/npeg -- 9npeg: 11PEGs for Nim, another take 15 110ā 5š“ |
09:39:29 | FromDiscord | <Recruit_main707> ? |
09:39:47 | FromDiscord | <Recruit_main707> Nope |
09:39:54 | FromDiscord | <Recruit_main707> Not this one :p |
09:40:47 | FromDiscord | <iWonderAboutTuatara> that looks powerful |
09:40:56 | FromDiscord | <iWonderAboutTuatara> I should take a look at that |
09:41:05 | FromDiscord | <iWonderAboutTuatara> if anyone finds the module let me know |
09:41:10 | FromDiscord | <iWonderAboutTuatara> i want to try this in a non py language |
09:44:42 | FromDiscord | <Recruit_main707> https://github.com/SolitudeSF/imagemanāµCheck this one out and see if it fits your task, I have never used it so idk |
09:45:02 | FromDiscord | <iWonderAboutTuatara> (((framework))) |
09:45:12 | FromDiscord | <iWonderAboutTuatara> why the ((()))? |
09:45:16 | FromDiscord | <iWonderAboutTuatara> does that mean something? |
09:47:25 | FromDiscord | <Recruit_main707> Shouldnāt worry you |
09:47:41 | FromDiscord | <iWonderAboutTuatara> good to hear |
09:47:52 | FromDiscord | <iWonderAboutTuatara> are there docs of some form? |
09:48:13 | * | hyiltiz joined #nim |
09:48:25 | FromDiscord | <Recruit_main707> Check the examples, but thatās it I think |
09:48:28 | FromDiscord | <iWonderAboutTuatara> I don't need anything particularly complex, just need to read rgb of each pixel |
09:48:35 | FromDiscord | <iWonderAboutTuatara> oh none of them do that i dont think |
09:52:09 | * | NimBot joined #nim |
09:52:59 | leorize | bung: some proc doesn't have dynlib because they're either: translation of C macros or that they abstract the interface so that it's compatible with both OpenSSL 1.0.2 and 1.1 |
09:54:03 | leorize | !repo flippy |
09:54:04 | disbot | https://github.com/treeform/flippy -- 9flippy: 11Flippy is a simple 2d image and drawing library. 15 41ā 6š“ |
09:54:36 | leorize | @iWonderAboutTuatara ^ |
09:56:38 | FromDiscord | <iWonderAboutTuatara> i wouldn't be drawing the images in ninm |
09:56:49 | FromDiscord | <iWonderAboutTuatara> looks like turtle for nim |
09:56:51 | FromDiscord | <iWonderAboutTuatara> maybe it isnt |
09:57:06 | FromDiscord | <iWonderAboutTuatara> oh its perfect |
09:57:10 | FromDiscord | <iWonderAboutTuatara> getRgba( |
09:57:24 | leorize | yep :p |
09:57:47 | * | awe001 joined #nim |
09:58:41 | FromDiscord | <iWonderAboutTuatara> thank you so much! |
09:59:17 | leorize | yw |
09:59:23 | * | xet7 joined #nim |
10:03:30 | * | casaca quit (Ping timeout: 256 seconds) |
10:04:29 | FromDiscord | <iWonderAboutTuatara> hey how do you install it? |
10:10:39 | FromDiscord | <iWonderAboutTuatara> i installed via nimble |
10:11:07 | FromDiscord | <iWonderAboutTuatara> @leorize it doesn't seem to realize that the datatype image exists though |
10:11:21 | FromDiscord | <iWonderAboutTuatara> meaning i can't pass image as a param to a proc or func |
10:11:55 | * | filcuc_ quit (Remote host closed the connection) |
10:12:52 | leorize | wdym? |
10:13:04 | leorize | you have a seq[byte] and you want to construct an image out of it? |
10:15:35 | leorize | oh and... did you `import flippy`? :P |
10:28:45 | FromDiscord | <iWonderAboutTuatara> I did |
10:28:57 | FromDiscord | <iWonderAboutTuatara> Isn't there an image datatype?, |
10:29:03 | leorize | yes? |
10:29:10 | FromDiscord | <iWonderAboutTuatara> I couldn't use that |
10:29:15 | FromDiscord | <iWonderAboutTuatara> I'm not at my computer anymore |
10:29:29 | FromDiscord | <iWonderAboutTuatara> But I needed to pass an image to a proc and it didn't let me |
10:30:44 | leorize | that's weird then. Once you get back to your computer, can you post the error messages and the snippet so that we can debug this further? |
10:33:22 | FromDiscord | <iWonderAboutTuatara> Will do |
10:43:47 | * | Vladar quit (Quit: Leaving) |
10:44:58 | * | casaca joined #nim |
11:25:44 | * | awe001 quit (Read error: Connection reset by peer) |
11:28:09 | * | awe001 joined #nim |
12:02:42 | * | lritter joined #nim |
12:06:02 | * | supakeen quit (Quit: WeeChat 2.8) |
12:06:37 | * | supakeen joined #nim |
12:06:48 | FromDiscord | <Recruit_main707> does nimprof work with gc:none? |
12:09:03 | leorize | you should probably not use it :P |
12:09:16 | leorize | use gprof, it works |
12:10:30 | FromDiscord | <XxDiCaprioxX> I got a program saying "unable to find zlib1.dll" is there a fix? Reinstalling did not work |
12:11:17 | FromDiscord | <Recruit_main707> leorize, yeah, i was checking it, it just seems a little bit less friendly |
12:14:14 | leorize | @XxDiCaprioxX https://nim-lang.org/download/dlls.zip <- I think this dll pack might have it |
12:14:25 | FromDiscord | <XxDiCaprioxX> Ah now it works nvm lol |
12:15:23 | FromDiscord | <Recruit_main707> ah dlls & paths |
12:30:25 | FromDiscord | <krisppurg> @XxDiCaprioxX if you are using v1.0.1 of my library and you don't want compression you can install the head branch basically `nimble install dimscord@#head`, I will release v1.0.6 containing new fields then v1.1.0 or v1.2.0 supporting api v8, if you do want compression do `-d:discordCompress` |
12:30:51 | FromDiscord | <XxDiCaprioxX> Okay |
12:30:58 | FromDiscord | <XxDiCaprioxX> Good to know |
12:31:23 | FromDiscord | <krisppurg> š |
12:54:25 | * | leorize quit (Quit: WeeChat 2.8) |
14:06:32 | FromDiscord | <Joe-23> sent a long message, see http://ix.io/2ul6 |
14:07:48 | FromDiscord | <Joe-23> (edit) 'http://ix.io/2ul6' => 'http://ix.io/2ul7' |
14:09:05 | Yardanico | 1. yes, but with ARC it's just simple reference counting (+ move semantics and destructors) 2. yes. but there's compiler type inference and you can specify the integer type for integer literals with suffixes |
14:09:11 | Yardanico | 3. yes, there was a 1.0 release already |
14:09:19 | * | FromDiscord quit (Remote host closed the connection) |
14:09:35 | * | FromDiscord joined #nim |
14:09:46 | Yardanico | 6. yes, you can absolutely go as low-level as you want |
14:10:15 | Yardanico | 7. well, it might be a little bit slower than C/C++, it all depends on your programming style. But performance isn't really an issue, it's comparable to other native languages |
14:10:29 | Yardanico | 5. I'd say so, yes, basic concepts are easy to grasp |
14:11:09 | Yardanico | 4. there are bindings for godot, and quite a lot of other game frameworks (not engines though) |
14:11:30 | FromDiscord | <Joe-23> > 4. there are bindings for godot, and quite a lot of other game frameworks (not engines though)āµ@Yardanico[IRC]#0000 So there is a GDNative Nim? |
14:11:36 | Yardanico | yes |
14:11:36 | * | arecacea1 quit (Remote host closed the connection) |
14:11:40 | Yardanico | https://github.com/pragmagic/godot-nim |
14:11:53 | FromDiscord | <Joe-23> > https://github.com/pragmagic/godot-nimāµ@Yardanico[IRC]#0000 Thanks š |
14:12:16 | * | arecacea1 joined #nim |
14:12:22 | FromDiscord | <Joe-23> > 7. well, it might be a little bit slower than C/C++, it all depends on your programming style. But performance isn't really an issue, it's comparable to other native languagesāµ@Yardanico[IRC]#0000 Is there some benchmarks that have been performed? |
14:12:40 | Yardanico | benchmarks are a bad way to check stuff really, since most of the time you're not comparing the language, but comparing the stdlib |
14:13:14 | FromDiscord | <Recruit_main707> but essentially, nim can be as fast as c/c++, sometimes faster, sometimes slower, but the difference is always small |
14:13:40 | Yardanico | yeah, as I said it always depends on your programming style |
14:13:57 | FromDiscord | <Rika> its almost negligible compared to the gains in productivity you might have š |
14:13:58 | Yardanico | a bad algorithm written in C can be beated by a fast algorithm written in Python |
14:14:04 | FromDiscord | <Rika> beaten |
14:14:07 | FromDiscord | <Joe-23> > but essentially, nim can be as fast as c/c++, sometimes faster, sometimes slower, but the difference is always smallāµ@Recruit_main707 That is good to know š |
14:14:11 | Yardanico | yeah sorry for a typo |
14:14:24 | FromDiscord | <Joe-23> > a bad algorithm written in C can be beated by a fast algorithm written in Pythonāµ@Yardanico[IRC]#0000 Yes true š |
14:14:28 | Yardanico | I had beaten in my mind but my fingers typed another word |
14:14:38 | FromDiscord | <Rika> that happens to me so often |
14:14:52 | FromDiscord | <Joe-23> I get plenty of typos lol š |
14:17:07 | FromDiscord | <Joe-23> Just quickly, say if I want to declare a variable that is unsigned a bit integer |
14:17:11 | FromDiscord | <Joe-23> how would I do it? |
14:17:26 | FromDiscord | <Rika> a bit? |
14:17:38 | Yardanico | 8 bit int you mean? |
14:17:40 | Yardanico | so 1 byte? |
14:17:48 | FromDiscord | <Rika> `var something: uint8 = 0`? |
14:17:49 | Yardanico | let a = 1'u8 or let a = 1u8 |
14:17:54 | FromDiscord | <Rika> depends |
14:17:54 | FromDiscord | <Rika> yeah |
14:17:56 | Yardanico | or the Rika's way |
14:17:57 | Yardanico | both work |
14:18:15 | FromDiscord | <Rika> let for immut, var viceversa |
14:18:29 | FromDiscord | <Rika> the 'u8 vs : uint8 is a style preference |
14:18:43 | FromDiscord | <Rika> if you like rust more than python |
14:19:22 | FromDiscord | <Joe-23> > `var something: uint8 = 0`?āµ@Rika Thanks |
14:20:10 | Yardanico | that's for a mutable variable, yes |
14:20:16 | Yardanico | let for immutable runtime, const for compile-time |
14:20:44 | FromDiscord | <Joe-23> > 1. yes, but with ARC it's just simple reference counting (+ move semantics and destructors)āµSorry one thing about this, does this run during runtime? |
14:21:01 | Yardanico | reference counting is at runtime, yes, but all destructors are injected at compile time, they have no overhead |
14:21:07 | Yardanico | and reference counting isn't really a GC |
14:21:12 | Yardanico | so arc can be used for hard realtime |
14:21:56 | FromDiscord | <Recruit_main707> yes, you could even go with no gc if you felt to, but it is not worth it really, arc does the thing, and its getting better with every update |
14:22:58 | Yardanico | people just usually don't like GCs because they associate them with some stop-the-world monstrosity from JVM |
14:23:23 | FromDiscord | <Joe-23> > so arc can be used for hard realtimeāµ@Yardanico[IRC]#0000 Does Rust have something like this? I heard it has reference counting? |
14:23:34 | FromDiscord | <Rika> rust has ref counting too yes |
14:23:39 | FromDiscord | <Joe-23> > yes, you could even go with no gc if you felt to, but it is not worth it really, arc does the thing, and its getting better with every updateāµ@Recruit_main707 So what does arc exactly do? |
14:23:46 | Yardanico | yes, you can have reference counting in Rust too when you need multiple pointers to refer to same data |
14:23:50 | Yardanico | @Joe as I said |
14:23:52 | FromDiscord | <Joe-23> > rust has ref counting too yesāµ@Rika What about C/C++? |
14:23:56 | FromDiscord | <Rika> yes |
14:23:59 | Yardanico | in C you can have reference counting too |
14:24:02 | FromDiscord | <Recruit_main707> https://docs.elementscompiler.com/Concepts/ARCvsGC/ |
14:24:05 | Yardanico | it's not dependent on the language |
14:24:20 | FromDiscord | <Joe-23> > @Joe-23 as I saidāµ@Yardanico[IRC]#0000 Thanks |
14:24:29 | Yardanico | @Recruit there's a better resource than that |
14:24:36 | Yardanico | https://www.youtube.com/watch?v=aUJcYTnPWCg |
14:24:54 | FromDiscord | <Joe-23> > https://docs.elementscompiler.com/Concepts/ARCvsGC/āµ@Recruit_main707 Interesting |
14:25:00 | Yardanico | straight from the source |
14:25:01 | FromDiscord | <Recruit_main707> well, i dont doubt its better, but for a quick definition |
14:25:08 | Yardanico | but for deeper understanding |
14:25:16 | FromDiscord | <Recruit_main707> yes, then sure |
14:26:07 | FromDiscord | <Joe-23> One last question, is Nim suited to develop an operating system? |
14:26:20 | Yardanico | yes, you can do that for sure |
14:26:24 | Yardanico | there have been some toy kernels made |
14:26:29 | Yardanico | but no one's stopping you from making a full OS |
14:26:43 | FromDiscord | <Joe-23> > there have been some toy kernels madeāµ@Yardanico[IRC]#0000 Oh wow interesting. |
14:26:50 | FromDiscord | <Joe-23> > but no one's stopping you from making a full OSāµ@Yardanico[IRC]#0000 Cool š |
14:26:57 | Yardanico | you can do everything in Nim that you can do in C |
14:27:18 | Zevv | even the undefined behaviour, my favorite part |
14:27:24 | Yardanico | exactly |
14:27:40 | FromDiscord | <Rika> just know that, naturally, some things are harder or easier to do on nim |
14:27:42 | Yardanico | even the 30-year old manual memory allocations |
14:27:51 | Yardanico | jk about the age |
14:27:54 | FromDiscord | <Joe-23> > yes, you could even go with no gc if you felt to, but it is not worth it really, arc does the thing, and its getting better with every updateāµ@Recruit_main707 Wait, when you say gc, were you referring to arc? |
14:28:05 | FromDiscord | <Joe-23> As in I can disable arc? |
14:28:08 | FromDiscord | <Rika> yes |
14:28:09 | FromDiscord | <Joe-23> Is that what you meant? |
14:28:11 | FromDiscord | <Joe-23> Ah I see |
14:28:13 | Yardanico | you can, but it's quite useless |
14:28:17 | Yardanico | I mean it's not |
14:28:21 | Yardanico | but you'll be missing a lot of the stdlib |
14:28:22 | FromDiscord | <Recruit_main707> yes, you can go full manual memory management |
14:28:31 | FromDiscord | <Recruit_main707> ah, and that too |
14:29:09 | FromDiscord | <Recruit_main707> are there plans on making the stdlib independent of the gc? |
14:29:30 | Yardanico | no, why? |
14:29:35 | Yardanico | arc is not a real GC anyway |
14:29:38 | Yardanico | and stdlib works nice with arc |
14:30:22 | FromDiscord | <Joe-23> > yes, you can go full manual memory managementāµ@Recruit_main707 So avr does automatic memory management for you so its the same speed if I write the code the same equivalent manual memory management code? |
14:30:26 | FromDiscord | <Recruit_main707> yes, its just that i think i read it somewhere, it actually was 4raq who said it iirc |
14:30:43 | Yardanico | @Joe with arc - usually yes |
14:30:51 | Yardanico | if you really write the SAME code |
14:31:09 | FromDiscord | <Joe-23> Makes perfect sense |
14:31:34 | Yardanico | also see https://forum.nim-lang.org/t/6549 |
14:31:43 | FromDiscord | <Joe-23> Thanks |
14:40:56 | * | azed joined #nim |
14:41:24 | * | azed quit (Max SendQ exceeded) |
14:47:40 | * | azed joined #nim |
14:48:17 | * | azed quit (Max SendQ exceeded) |
14:48:59 | * | azed joined #nim |
14:49:36 | * | azed quit (Max SendQ exceeded) |
14:50:24 | * | azed joined #nim |
14:51:04 | * | azed quit (Max SendQ exceeded) |
15:05:52 | * | vycb[m] joined #nim |
15:11:05 | * | Vladar joined #nim |
15:13:26 | * | s4mu3lbk joined #nim |
15:13:26 | * | s4mu3lbk quit (Read error: Connection reset by peer) |
15:14:37 | * | s4mu3lbk joined #nim |
15:20:22 | * | s4mu3lbk quit (Quit: Leaving) |
15:29:25 | * | endragor quit (Remote host closed the connection) |
15:41:51 | * | endragor joined #nim |
15:43:06 | * | bung quit (Quit: Lost terminal) |
15:50:04 | FromDiscord | <Avatarfighter> Does anyone have an example of using shared libraries that works with ARC/ORC? |
15:50:19 | * | waleee-cl joined #nim |
15:50:35 | disruptek | all shared libs should work with arc. |
15:51:08 | FromDiscord | <Avatarfighter> sorry I shouldāve clarified, i meant in a plugin/hot reload scenario. |
15:51:30 | disruptek | do you have an example that doesn't work? |
15:51:52 | FromDiscord | <Avatarfighter> well no, I just donāt know how I would approach making plugins or hot reloading lmao |
15:52:06 | disruptek | so this has nothing to do with arc. |
15:52:28 | FromDiscord | <Avatarfighter> Yeah I guess so |
15:52:37 | disruptek | have you looked on github? |
15:53:01 | FromDiscord | <Avatarfighter> Im still looking for an example of such a system though, Ive looked on github |
15:53:09 | disruptek | really. |
15:53:25 | disruptek | !repos plugins |
15:53:27 | disbot | https://github.com/genotrance/plugins -- 9plugins: 11Plugin system for Nim 15 22ā 2š“ |
15:53:27 | disbot | https://github.com/ThomasTJdev/nimwc_plugins -- 9nimwc_plugins: 11Plugin repository for Nim Website Creator 15 5ā 0š“ |
15:53:27 | disbot | https://github.com/bunkford/wChart -- 9wChart: 11Chart plugin for wNim 15 7ā 0š“ 7& 27 more... |
15:54:37 | FromDiscord | <Avatarfighter> From what I understand the plugin repo by genotrance utilizes the boehm gc |
15:54:56 | disruptek | you just told me this has nothing to do with arc. |
15:55:27 | FromDiscord | <Avatarfighter> I feel betrayed and confused no |
15:55:29 | FromDiscord | <Avatarfighter> now* |
15:55:39 | disruptek | how do you think /i/ feel? |
15:55:44 | FromDiscord | <Rika> lol |
15:55:50 | FromDiscord | <Avatarfighter> less betrayed and confused than I |
15:55:58 | disruptek | rika: i will get to you in a minute. |
15:56:26 | FromDiscord | <Rika> loooool |
15:56:27 | FromDiscord | <Avatarfighter> @Rika yeah, I want my minute of disruptek time š |
15:56:48 | FromDiscord | <Rika> please take him xd |
15:56:56 | FromDiscord | <Avatarfighter> So like I was saying disruptek where those ARC compatible plugin systems at thoooo |
15:57:06 | disruptek | file a bug report. |
15:57:34 | FromDiscord | <Avatarfighter> looks like my minute is up @Rika Iām going to go cry now |
15:57:49 | disruptek | plugins is what you want. |
15:58:01 | shashlick | Arc has many bugs still |
15:58:55 | FromDiscord | <Avatarfighter> shashlick: im aware it still had bugs I was just curious to see if someone had a working example of a plugin/hot reload system that was compatible with ARC/ORC |
15:58:58 | FromDiscord | <Avatarfighter> Has* |
15:59:31 | shashlick | It's not a compatibility issue |
15:59:54 | disruptek | i think zachary has something that might work with arc, but it's c-based. |
16:01:01 | FromDiscord | <Avatarfighter> Disruptek: ah ok thanks |
16:01:21 | FromDiscord | <Avatarfighter> shashlick: i meant compatible as in works lmao |
16:01:37 | shashlick | There's issues when you pass data between the exe and dll in some cases |
16:01:37 | FromDiscord | <Avatarfighter> As in it compiles and runs |
16:02:11 | FromDiscord | <Avatarfighter> pass data how? Through a channel? A global variable? |
16:02:33 | shashlick | Plugins compiles and runs but fails tests due to memory issues |
16:02:44 | FromDiscord | <Avatarfighter> ah ok thank you shashlick |
16:02:49 | shashlick | See the test cases |
16:03:00 | shashlick | Exe calls dll which calls exe proc |
16:03:15 | shashlick | If you don't do crazy things like that, it might work |
16:03:24 | FromDiscord | <Avatarfighter> ill go check them out, thanks for the explanation |
16:03:39 | FromDiscord | <Avatarfighter> Im only doing exe calls dll afaik |
16:03:43 | shashlick | Maybe there's more fixes in arc |
16:08:46 | * | epfnair joined #nim |
16:16:23 | disruptek | too funny... /A Nim library for making MIDI music. It uses TinySoundFont underneath. A musical score is modelled as a simple hierarchy of tuples. There are probably bugs...or maybe your music just sounds bad. It could be that. Think about it./ https://github.com/paranim/paramidi |
16:29:18 | disruptek | i think this is what i want to use for my "listen to code" project. |
16:39:47 | Zevv | i tried a hadful of variants a few years back |
16:40:08 | Zevv | but its hard to make something consistent that is able to convey information in sound |
16:40:11 | Zevv | from code |
16:40:25 | disruptek | what is it that you want to convey? |
16:40:32 | disruptek | i just want to convey novel structures. |
16:41:00 | Zevv | not sure, things like structure, scope. Good code should sound more pleasand or right than bad code |
16:41:17 | disruptek | ah, i don't agree. |
16:41:33 | disruptek | i just want to hear changes. |
16:41:56 | disruptek | novelty and timing is what i'm after. |
16:42:06 | Zevv | fair enough |
16:42:39 | disruptek | you could probably contribute a lot in terms of the sound composition angle, though. |
16:42:50 | disruptek | i imagine you think midi is too limited. |
16:43:43 | Zevv | i do use sound for debugging quite often though. i have thi tiny script that gives a blip for every line passing through, frequency is length of the line, nothing more. great for piping logging output of processes, I can tell my current project like i can tell my apple //e disk drive |
16:44:08 | Zevv | midi might be ok if your sound source allows for a lot of modulations |
16:45:16 | * | hnOsmium0001 joined #nim |
16:45:21 | Zevv | stuff im working on now is a handful of things all interacting, androdi booting, opegl stuff happening. I just know how a "good" run sounsd |
16:45:33 | disruptek | it seems more structured and easier to analyze or record. |
16:45:47 | disruptek | that's exactly it: you know what sounds right. |
16:45:56 | disruptek | not that it sounds nice, but that it sounds correct. |
16:46:05 | Zevv | right. |
16:46:28 | Zevv | for code maybe generating from AST would bring a whole new prespective. I always just went from source |
16:46:42 | disruptek | imagine that your trampoline plays the continuation and doesn't bounce until the playback is complete. |
16:46:59 | disruptek | the ast-as-midi can just be embedded in the continuation. |
16:47:16 | Zevv | well, for anything event-like, it works great in general |
16:47:25 | disruptek | yeah, that's my experience. |
16:47:29 | Zevv | also very nice for network debugging. |
16:47:56 | disruptek | that's what our paper was on, but i think it's more broadly applicable. |
16:48:11 | disruptek | we just don't have any good libraries yet. |
16:48:57 | Zevv | i madet this project 15 years a go or so, we had a server farm doing ssh, pop, imap, http, dns, icmp, all kind of things. i created a forest out of that. a small brook if the load was low, rising into a torrent of a overflowing river at 100%. Failed ssh logins was ravens crawing, tocking of a flock of chicken for all imap connects, etc |
16:49:17 | disruptek | that's peep. |
16:49:46 | disruptek | https://www.usenix.org/legacy/publications/library/proceedings/lisa2000/full_papers/gilfix/gilfix_html/index.html |
16:50:31 | disruptek | gilfix was my roommate and employee when i was the sysadmin at tufts. |
16:50:46 | Zevv | mine predated peep i guess :) |
16:53:51 | Zevv | i guess not, 2006 |
16:53:54 | Zevv | well it was fun |
16:55:48 | disruptek | people loved the concept but the impl was way too low-level simply because we didn't have the libraries we have now. |
16:57:47 | * | superbia2 joined #nim |
16:58:00 | Zevv | oh was this made by a mate of yours then? |
16:58:14 | disruptek | yeah. |
16:58:21 | Zevv | thats cool :) when ws that? |
16:58:37 | disruptek | 2000, apparently. |
16:58:40 | Zevv | damn |
17:00:02 | Zevv | wow i made this in *ruby*?! |
17:00:06 | Zevv | i never knew i wrote ruby |
17:00:07 | disruptek | it was a really fun talk, too. we played some network meltdowns and stuff to the audience. |
17:00:25 | * | superbia1 quit (Ping timeout: 240 seconds) |
17:00:47 | Zevv | sometimes i feel sorry that i hate writing papers or giving talks |
17:02:20 | disruptek | practice helps, but i agree, it's challenging. |
17:03:00 | disruptek | i used to give a seminar to grads each semester and it was always hard to organize. |
17:03:08 | disruptek | grad students, i mean. |
17:03:12 | Zevv | i'm always put off by the amount of work ine |
17:03:17 | Zevv | it needs to do it *right* |
17:03:37 | Zevv | i'm perfectly fine to do something ad hoc for a small audience if i know what i'm talking about |
17:03:49 | Zevv | but doing something proper is just so much work |
17:04:47 | Zevv | we'll do one on cps if it gets done. you talk and i flip the transparants on the overhead projector |
17:05:28 | disruptek | it's useful to know what you're talking about. |
17:05:32 | disruptek | i dare say it's critical. |
17:05:39 | Zevv | sure otherwise i will not do it at all |
17:06:00 | disruptek | i think cps can be boiled down and delivered as a talk today. |
17:06:16 | Zevv | i had a 10 out of 10 for my final presentation for my study thing, no clue whats its called in english |
17:06:27 | Zevv | i just spent a year digging into this one topic, surea I cna tlak about that |
17:06:46 | Zevv | and then on my first job some sales guy put me up for a presentation at a huge conference |
17:06:55 | Zevv | about something firewall something. stuff I knew shit about |
17:07:00 | Zevv | so I bailed out on the day |
17:07:06 | Zevv | gap in the program |
17:07:08 | disruptek | lol really? |
17:07:16 | Zevv | yeah. I was *so* mad |
17:07:49 | Zevv | was this linux conference thing, a few hndred neckbeards in a room, and 23 yo me telling somthing about ipchains |
17:07:55 | Zevv | what did i know |
17:08:41 | Zevv | i could do it now though, I spent the last 13 years working on a pretty advanced router thing, everything from scratch on a bare linux kernel. I know my mark/matches, route policyes, xfrm tables and vlan tags |
17:09:01 | disruptek | i'm never going back there. i hope. |
17:09:07 | Zevv | but myabe that was the event that kept me from ever doing presentations after that |
17:09:11 | Zevv | why you hope |
17:09:23 | disruptek | it just makes me tired simply thinking about it. |
17:09:24 | Zevv | they are still waiting for you with pitch forks? |
17:10:01 | disruptek | when i was a network eng, it was a pretty painful era i guess. |
17:10:23 | Zevv | fair enough |
17:10:35 | disruptek | i know how little i know these days, but i also know that there are people that know even less. |
17:10:48 | disruptek | and we certainly can explain a thing or two for those people. |
17:11:39 | Zevv | every year my new years resolution is not to get into any layer of management or team lead or whatever |
17:11:54 | Zevv | I see them all go there, and it makes me cry |
17:12:28 | disruptek | see, i like management because i find the constant churn exhausting. |
17:12:38 | Zevv | i still keep up with the fresh kids somehow, probably only because i type faster and hate a lot of things |
17:12:42 | disruptek | as araq says, "i don't care" |
17:12:52 | disruptek | i don't care about package management. |
17:12:52 | Zevv | yeah he knows shit |
17:13:10 | disruptek | so very many things i don't care about which i'd have to learn if i wasn't a manager. |
17:13:23 | Zevv | very true, that |
17:13:49 | Zevv | I made a very deliberate decision 15 years ago |
17:13:56 | Zevv | to stick with embedded and C |
17:14:24 | Zevv | thats what i loved and was good at. never cared about most of the other stuff, but just enough to know what people aretalking about |
17:14:50 | Zevv | easy moneym to be made doing LAMP or java or micrsoft stuff, but never had to |
17:15:09 | disruptek | i basically gave up C around 2000. |
17:15:24 | disruptek | python was just so very much more productive. |
17:15:38 | Zevv | i dont care about python :) |
17:15:43 | epfnair | depends on what you are doing |
17:15:45 | Zevv | I had my Lua! |
17:15:57 | disruptek | i would do really low-level stuff in C if i had to, but... i rarely had to. |
17:16:08 | Zevv | lua runs in the same niche ecosystems as embedded and C |
17:16:29 | Zevv | and that again is my story all about how |
17:16:33 | Zevv | i ended up at nim |
17:16:44 | disruptek | yeah, that wasn't my area. i was doing progressively larger networks. |
17:16:54 | FromDiscord | <Rika> lua's wild |
17:17:19 | Zevv | Rika: only reason i'm doing this cps stuff, to make nim more like lua |
17:17:30 | Zevv | network stuff is great, but the "larger" is not my thing I guess |
17:17:53 | Zevv | I know networking pretty deep and I'm reasonably ok at diagnosing funny stuff |
17:18:37 | FromDiscord | <Rika> why would cps make nim more like lua? |
17:18:42 | Zevv | coroutines! |
17:19:04 | FromDiscord | <Rika> i know those and i still dont see how |
17:19:18 | Zevv | as I have been saying for years and years: anyone who can't explain to a 5yo what at TCP SYN is, should keep his dirty hands off the internet! |
17:19:34 | Zevv | but hey, that's not what happened |
17:20:03 | Zevv | so here we are, with family members I love dearly living their lives through facebook only |
17:20:33 | disruptek | creepy. |
17:20:41 | Zevv | with the Web As We Know It finally being replaced by Googletech only |
17:21:05 | Zevv | exit mozilla, enter chrome |
17:21:08 | Zevv | exit http, enter amp |
17:21:27 | disruptek | mmm i don't think amp can actually win. |
17:23:16 | Zevv | its not about the technology story |
17:23:25 | Zevv | its about the monetization |
17:23:28 | disruptek | you neglected to explain coro to rika. |
17:23:40 | Zevv | rika knows. he said lua is wild |
17:23:45 | Zevv | so he knows |
17:23:58 | disruptek | rika is a sheit. |
17:24:10 | disruptek | also, rika just asked why cps begets coro. |
17:24:19 | Zevv | ah i see |
17:24:20 | disruptek | that's your department, naturally. |
17:25:08 | Zevv | i forgot. why do i want this again |
17:25:42 | Zevv | well, it doesnt make nim more lua of course |
17:25:50 | FromGitter | <jorjun_twitter> Getting lots of "undefined reference to xxxā at nim compilation, trying to refer to bin/my_c_libray.o {.importc, header: āmy_c_libray.hā} any tips? |
17:25:58 | Zevv | but coros is the second thing I missed when moving from lua to nim |
17:26:06 | Zevv | the first was lpeg, and that has been fixed |
17:26:38 | Zevv | undefined reference is usually a linker error |
17:26:48 | FromDiscord | <Rika> i know what coros are but i dont know how cps would make nim more like lua as you said before but have now taken back it seems |
17:26:57 | Zevv | so you refer to symbols and use them, but probably forget to add them to your final link stage? |
17:27:21 | disruptek | lol |
17:27:22 | FromGitter | <jorjun_twitter> yep.. I have a nim.cfg with --clibdir:bin. (bin is a folder with .o files from a c project I am trying to leverage) |
17:28:02 | FromDiscord | <lqdev> @jorjun_twitter https://nim-lang.org/docs/manual.html#implementation-specific-pragmas-link-pragma |
17:28:17 | Zevv | rika: lua coroutines is a very simple concept with a very simple api, which allows for building a number of powerful things that you can not build without coroutines. |
17:28:27 | Zevv | nim has iterators, which bring a tiny bit of that |
17:28:30 | FromGitter | <jorjun_twitter> thanks so much @ lqdev |
17:28:43 | Zevv | nim has async, which also brings a tiny bit of that |
17:28:51 | disruptek | cps simply lets us write "normal" code which is converted into continuations. |
17:29:08 | disruptek | continuations are painful to write by hand. |
17:30:01 | FromGitter | <jorjun_twitter> ah not like this it seems: proc DEV_Module_Exit*(): void {.importc, header: "DEV_Config.h", link: "bin/DEV_Config.o" .} |
17:30:12 | Zevv | so lua is able to do this because its running on a vm. its trivial and lightwieght to switch stacks and do non-linear code flow |
17:30:39 | Zevv | but nim, built on C, has constraints. CPS can offer the same kind of flexibility, the same building blocks as lua coroutines |
17:31:13 | FromDiscord | <Rika> ok |
17:31:48 | Zevv | problemy with iterators in nim for example, is that it hsa to be an *iterator* to be able to yield. |
17:32:03 | Zevv | you cant call into another proc and have that proc do the yielding |
17:32:09 | Zevv | so its pretty limited in what it can do |
17:32:32 | disruptek | you can't recurse in a nim iterator, for example. |
17:32:43 | Zevv | also it goes one way only: you produce with the yield, and consume with the iterator user |
17:32:43 | disruptek | cps can unroll recursion, if that makes any sense. |
17:33:04 | Zevv | anyway, were again doing the talk talk talk |
17:33:10 | FromDiscord | <Rika> ah yeah i remember lua being able to yield from any function depth |
17:33:26 | FromDiscord | <Rika> was funky to understand that |
17:33:54 | Zevv | rike: if youre interested, there's an excellent article somewhere called something like "what color is your code" |
17:34:05 | disruptek | what color is your function. |
17:34:34 | Zevv | http://journal.stuffwithstuff.com/2015/02/01/what-color-is-your-function/ |
17:34:53 | FromDiscord | <Rika> i already have read that |
17:35:23 | Zevv | with disruptek you never know what colors it might be, his terminal looks like a dyslesbian rave outfit |
17:35:47 | Zevv | for me its simple, all my functions are green, just like they should |
17:36:02 | FromDiscord | <Rika> i'm colorblind so i dont color my functions |
17:36:16 | disruptek | liar. |
17:36:30 | disruptek | this is the problem with async/await. |
17:36:42 | disruptek | everyone thinks they have monochrome functions but they don't. |
17:36:50 | FromDiscord | <Rika> well i cant tell either way |
17:37:37 | FromDiscord | <Hearthstone> Are you actually colour blind Rika? |
17:38:07 | FromDiscord | <Rika> i am, but not truly like my messages implied |
17:38:38 | FromDiscord | <Hearthstone> Oh |
17:38:50 | FromDiscord | <Rika> deuteranomalic |
17:38:57 | FromDiscord | <Hearthstone> Oooh okay |
17:39:01 | FromDiscord | <Rika> or protanomalic, i was never tested |
17:39:18 | FromDiscord | <Rika> and those shoddy tests online suggest i am protan or deutan but never definitely one of the two |
17:39:21 | disruptek | actually, you were tested and found wanting. |
17:40:26 | FromDiscord | <Hearthstone> O |
17:44:57 | * | Prestige quit (Quit: Prestige) |
17:45:17 | * | Prestige joined #nim |
17:46:19 | * | kungtotte quit (Read error: Connection reset by peer) |
17:46:48 | FromDiscord | <krisppurg> Hey guys, is there a way to have nim docs in json? |
17:47:13 | FromDiscord | <Hearthstone> There should be |
17:47:20 | FromDiscord | <Hearthstone> (It's Nisha btw-) |
17:47:33 | FromDiscord | <Rika> "who's nisha" |
17:47:36 | FromDiscord | <krisppurg> oh hi |
17:47:40 | FromDiscord | <Hearthstone> @Technisha (LGBTQIAP+)- |
17:47:42 | FromDiscord | <Hearthstone> xD |
17:47:51 | FromDiscord | <Rika> why the new account |
17:47:52 | FromDiscord | <krisppurg> well anyways what's the module for it? |
17:47:57 | FromDiscord | <Technisha (LGBTQIAP+)> Hi- |
17:48:03 | FromDiscord | <Hearthstone> Eh, just- |
17:48:05 | disruptek | dafuq |
17:48:16 | FromDiscord | <Technisha (LGBTQIAP+)> No idea, a quick search should help |
17:48:22 | FromDiscord | <Rika> š let's not comment on the username |
17:48:25 | * | kungtotte joined #nim |
17:48:58 | FromDiscord | <Hearthstone> What?- |
17:49:11 | FromDiscord | <Hearthstone> Technisha -> Nisha |
17:49:13 | FromDiscord | <Hearthstone> :P |
17:49:19 | FromDiscord | <Rika> no, your username |
17:49:25 | FromDiscord | <Rika> probably what made dis say "wtf" |
17:49:28 | FromDiscord | <Rika> anyway |
17:49:38 | FromDiscord | <Hearthstone> O- |
17:49:44 | disruptek | no, i'm confused as to why nisha has three different names. |
17:50:33 | FromDiscord | <Rika> two? |
17:50:42 | FromDiscord | <Rika> theres the new account and the old |
17:50:44 | FromDiscord | <Rika> whats the third |
17:51:03 | FromDiscord | <Hearthstone> Third? |
17:51:09 | FromDiscord | <Hearthstone> I only have 2 |
17:51:20 | FromDiscord | <Hearthstone> Nisha and Technisha are the same account :P |
17:51:29 | disruptek | well, i guess i have my own name for them, then. |
17:51:34 | FromDiscord | <Hearthstone> I just use Nisha as a quick way to refer to myself- |
17:52:01 | disruptek | you mean because `me` is too much to type? |
17:53:28 | FromDiscord | <Hearthstone> No, i mean as a nickname- |
17:54:09 | FromDiscord | <krisppurg> > well anyways what's the module for it? |
17:54:14 | disruptek | you gave yourself a nickname? |
17:54:25 | FromDiscord | <Rika> someone help poor krisppurg here |
17:54:50 | FromDiscord | <Hearthstone> @krisppurg depends what you mean exactly |
17:55:01 | FromDiscord | <Hearthstone> You want to write docs in JSON and have then parsed? |
17:55:11 | FromDiscord | <Hearthstone> Or do you want to turn the docs into Json |
17:55:17 | FromDiscord | <krisppurg> into json |
17:55:23 | FromDiscord | <Hearthstone> Lemme see |
17:55:45 | FromDiscord | <krisppurg> I think I may have told you this. |
17:55:46 | FromDiscord | <Hearthstone> https://nim-lang.org/docs/docgen.html |
17:55:50 | FromDiscord | <Hearthstone> Docgen |
17:56:06 | FromDiscord | <krisppurg> o |
17:56:20 | FromDiscord | <krisppurg> ty |
17:56:24 | FromDiscord | <Hearthstone> No worries :P |
17:59:02 | FromDiscord | <krisppurg> hm I wonder if there is a way to parse `"` as `'` for example. |
17:59:27 | FromDiscord | <krisppurg> (edit) '`'`' => '`"`' |
18:00:04 | * | epfnair quit (Quit: Leaving) |
18:02:52 | FromDiscord | <lqdev> https://nim-lang.org/docs/parsexml.html |
18:02:53 | FromDiscord | <Hearthstone> Maybe |
18:02:55 | FromDiscord | <Hearthstone> Oo |
18:04:27 | FromDiscord | <krisppurg> oh |
18:04:42 | FromDiscord | <krisppurg> ty |
18:08:16 | planetis[m] | nim is on hacker news' frontpage :) |
18:08:47 | Zevv | disruptek: do we know yet if these idents are supposed to be gensymmed? |
18:08:57 | Zevv | I mean, yeah probably, but mr c was not assured of that yet? |
18:09:34 | disruptek | i'll assure him if you want. |
18:09:38 | Oddmonger | how can i convert a pointer to an object ? |
18:09:51 | Oddmonger | i tried a cast[object](myptr) |
18:09:57 | disruptek | try myptr[] |
18:10:16 | * | Jesin quit (Quit: Leaving) |
18:11:19 | Oddmonger | ah |
18:11:27 | Oddmonger | thank you disruptek |
18:11:30 | * | endragor quit (Remote host closed the connection) |
18:11:41 | disruptek | sure. |
18:11:58 | * | endragor joined #nim |
18:12:40 | Oddmonger | well that doesn't solve the problem, but [] is interesting |
18:13:29 | Oddmonger | are ptr and pointer the same thing ? |
18:13:32 | * | arecacea1 quit (Remote host closed the connection) |
18:13:46 | disruptek | one is typed and the other isn't. |
18:14:27 | * | arecacea1 joined #nim |
18:14:31 | Zevv | Nim is just right down ugly and borrowed the worst from Pascal and Python. The multi-paradigm concept is a mess. Tried it a couple of years ago and moved on to better, more simple tools. |
18:14:34 | disruptek | pointer is like a typeclass for ptrs while ptr is only sensical in relation to a variable. |
18:15:02 | Oddmonger | ok i think i understand |
18:15:11 | FromDiscord | <Rika> zevv who wrote that lmao |
18:15:45 | Zevv | bottom comment on the HN thread. fair enough, move along folks, nothing to see here |
18:16:14 | * | endragor quit (Ping timeout: 246 seconds) |
18:16:25 | Zevv | Oddmonger: http://zevv.nl/nim-memory/ |
18:16:33 | disruptek | lockfiles for nimble are due in october. great. this is a feature that i impl in nimph in an afternoon. 𤦠|
18:16:42 | Zevv | yawn |
18:16:55 | FromDiscord | <Rika> ah bottom comment lol |
18:18:50 | Zevv | I aways read the 3 star reviews for the best information, and the 1 star reviews just for fun |
18:19:19 | Oddmonger | thank you Zevv , that's what i was searching |
18:19:26 | Zevv | skip the 5 stars, thats's from fanbois or people who realized they spent a lot of money on crap but don't dare te admit that to themselves |
18:19:32 | Zevv | Oddmonger: yw |
18:19:33 | * | Jesin joined #nim |
18:19:36 | Oddmonger | but disruptek is nice too, of course :þ |
18:19:44 | Zevv | disruptek is nice too |
18:19:46 | Zevv | sure |
18:20:26 | Zevv | that's why we decided to keep him |
18:20:26 | * | bung joined #nim |
18:20:30 | Oddmonger | he redefines the type of niceness |
18:20:50 | Zevv | we take the occasional bad mouthing and newbe-scaring for granted |
18:20:55 | bung | I got ` var procCb = getAst createCb(retFutureSym, iteratorNameSym,` |
18:20:59 | bung | var procCb = getAst createCb(retFutureSym, iteratorNameSym, |
18:21:18 | bung | sorry wrong copy |
18:21:23 | bung | asyncmacro.nim(248, 33) Error: can have an unlisted effect: RootEffect |
18:21:25 | Zevv | dont copy, pastebin |
18:21:42 | * | endragor joined #nim |
18:22:01 | bung | it does not point out where cause this |
18:22:36 | bung | maybe async with tags will lead to this ? |
18:22:41 | Zevv | that's a funny one indeed |
18:25:33 | * | endragor quit (Remote host closed the connection) |
18:25:48 | * | endragor joined #nim |
18:32:51 | * | endragor quit (Remote host closed the connection) |
18:33:20 | * | endragor joined #nim |
18:43:14 | bung | created a issue for it |
18:46:59 | * | endragor quit (Ping timeout: 240 seconds) |
18:53:46 | shashlick | https://news.ycombinator.com/item?id=24178438 |
18:57:36 | Zevv | look who just found the part :) |
18:57:39 | Zevv | party |
18:57:49 | Zevv | 'evening, shashlick. |
18:57:59 | Zevv | how is life today |
19:02:36 | * | bung quit (Quit: Lost terminal) |
19:02:43 | FromDiscord | <Kiloneie> Whats up with people complaining about Nim's lack of IDE support, when it has a ton of support!? |
19:02:58 | FromDiscord | <Rika> people not knowing about it |
19:02:58 | disruptek | ask them. |
19:12:16 | FromDiscord | <Kiloneie> Ive read the same when googling Nim a few days ago... Such missinformation. |
19:13:47 | FromDiscord | <Recruit_main707> tbh its not the best |
19:14:13 | FromDiscord | <Kiloneie> But still, it has many choices |
19:15:09 | FromDiscord | <Kiloneie> They complain about things every unpopular language faces, but won't do anything about it themselves. Meh. |
19:15:32 | FromDiscord | <Rika> well its hard to do something for a language you dont really love enough |
19:16:49 | FromDiscord | <Kiloneie> Sure, but when they write online they like the language then write about such nitpicks... It's just, they don't even know what they want. |
19:18:23 | * | endragor joined #nim |
19:23:19 | Zevv | at least complaint #1 is no longer the style insensitive casing :) |
19:23:36 | * | endragor quit (Ping timeout: 256 seconds) |
19:26:42 | FromDiscord | <Kiloneie> Wasnt that "not yet 1.0"? On slant where i first discovered Nim that was the #1 complaint, and now that it is over 1.0, the complain is not many libraries and poor documentation... Well, 5 more years i guess... |
19:35:22 | Zevv | its a fair complaint |
19:35:51 | Zevv | compared to some other languages it really is. |
19:36:02 | * | tane joined #nim |
19:36:12 | Zevv | but its unfair given the size of the team working on it |
19:36:35 | Zevv | nim cant juts open a can of technical writers and get that done in a few months |
19:37:00 | FromDiscord | <Kiloneie> Well... Nim has really easy FFI though... You add that into equation and it becomes a non problem |
19:38:56 | Zevv | anyway, over all the thread seems mostly positive, so let's see if we get new inflow over the next few days |
19:39:10 | * | Zevv |
19:39:16 | Zevv | waves to all the HN visitors |
19:58:55 | disruptek | whatever. the language isn't so inconsistent that it needs a lot of docs and there's a fair amount of code out there available for inspection. |
19:59:09 | disruptek | it's not like there aren't resources for people who are motivated. |
19:59:19 | disruptek | people just aren't that motivated because there's no money in it. |
20:00:17 | disruptek | if you're in a position to choose nim, you aren't going to pass because of the docs. you're going to pass because you don't need what nim offers. |
20:03:04 | Zevv | or, as I have now seen happen a few times from nearby, you didn't get the full picture of what it offers and decided to let it go by |
20:03:16 | Zevv | that's still a marketing issue probably |
20:03:25 | Zevv | but then again, there's already dozens of us |
20:04:02 | disruptek | someone seems to care about lockfiles but i don't spam about nimph, so... nah. |
20:04:19 | Zevv | you should |
20:06:22 | disruptek | there you go. |
20:06:41 | disruptek | it's pretty obvious to me that this isn't the problem. |
20:10:59 | * | endragor joined #nim |
20:12:40 | disruptek | it's more likely that the reasons /not/ to use nim are still numerous enough or broad enough that people feel they can make a good excuse on giving it a pass. |
20:13:16 | shashlick | @Zevv mostly out, am reviving my old music days |
20:13:47 | Zevv | good man |
20:14:04 | Zevv | dont forget to share the fruits of your labour |
20:14:46 | shashlick | Absolutely |
20:15:42 | shashlick | Where do kids post their music these days |
20:15:59 | Zevv | ha good question |
20:16:24 | Zevv | i decided to pick up upright bass and the bow a few months ago |
20:16:34 | Zevv | i plan to start sharing in 15 years or so |
20:18:19 | Zevv | regular bass playing is fine, i get along with it in my band settign. but bowing is a totally different skill |
20:18:22 | Zevv | how alien to me |
20:18:35 | * | endragor quit (Ping timeout: 240 seconds) |
20:18:58 | disruptek | you just bend at the waist. |
20:19:08 | disruptek | keep your legs straight and lean forward. |
20:19:11 | Zevv | you have no clue, do you |
20:19:20 | disruptek | no, i've done it. |
20:19:27 | Zevv | oh you did! :) |
20:20:02 | Zevv | i plan to play 1 bach celo suite when i hit 65 |
20:20:32 | Zevv | and they are harder on the bass than on the cello |
20:20:43 | disruptek | well, i dunno where i'll be in 3 years, but i'll try to show up. |
20:20:57 | Zevv | \o/ |
20:21:20 | disruptek | it's harder than it should be to embed the compiler. |
20:22:07 | Zevv | just make a tarball, slurp that into a nim const, write it out at run tim[D[D[D[D[D[D[D[D[D[D[D[D[D[D[De and call it |
20:22:25 | Zevv | no one will notice |
20:22:25 | disruptek | that's quite a stutter. |
20:22:44 | Zevv | yea i wonder where that came from |
20:23:09 | disruptek | i have it working, but i don't have it hooked the way i want, and it was more involved than it should have been. |
20:23:14 | * | Vladar quit (Quit: Leaving) |
21:00:30 | FromDiscord | <krisppurg> where is the nim benchmark comparison between go rust etc? |
21:18:05 | * | tane quit (Quit: Leaving) |
21:24:07 | FromDiscord | <brainproxy> I have an array of bytes and I'd like to read (let's say from the start) 64 bits from it and ultimately have a `uint64` |
21:24:23 | disruptek | you're blowing my mind right now. |
21:37:53 | FromDiscord | <Rika> @brainproxy in what order? LSB or MSB |
21:38:35 | FromDiscord | <brainproxy> I'm not sure, I'm trying to figure out as I go along |
21:38:44 | FromDiscord | <brainproxy> I can try LSB and then MSB if it doesn't work |
21:39:02 | FromDiscord | <Rika> they both will "work" as in compile, but the values will just be wrong |
21:40:05 | FromDiscord | <brainproxy> I understand, I don't know the answer yet, guessing somewhat at what I need to do |
21:40:58 | FromDiscord | <brainproxy> see: https://github.com/status-im/status-go/blob/develop/protocol/identity/alias/generate.go#L28āµāµbasically I want to `truncate the public key to the least significant 64 bits` for the byte array returned by https://github.com/status-im/nim-secp256k1/blob/master/secp256k1.nim#L281-L283 |
21:40:59 | FromDiscord | <Rika> for LSB you make the uint64 buffer variable and store the first byte (index 0) into it, then store the next index shifted left by 8, then next by 16, then next by 24āµi think. its late for me and i might not be thinking right right now |
21:41:17 | FromDiscord | <Rika> that's dangerous, fiddling with crypto code |
21:41:34 | FromDiscord | <brainproxy> I understand, but there's a test suite to ensure it conforms, so a bit of a seat belt |
21:41:55 | FromDiscord | <brainproxy> also, I'm not really changing anything, just reading bits from a pubKey |
21:42:20 | FromDiscord | <Rika> for msb it's the reverse, index 0 shifted by 24 gets stored, then 1 shifted by 16, then 2 by 8, then 3 by 0 |
21:42:36 | FromDiscord | <brainproxy> okay, I'm so raw that I don't know the syntax how to do it |
21:42:42 | FromDiscord | <brainproxy> what you said to do, I mean |
21:42:59 | FromDiscord | <brainproxy> something with bitwise operators, obviously |
21:43:07 | FromDiscord | <brainproxy> and getting array members with [] |
21:44:47 | FromDiscord | <Rika> sent a code paste, see https://play.nim-lang.org/#ix=2un6 |
21:45:29 | FromDiscord | <Rika> sent a code paste, see https://play.nim-lang.org/#ix=2un7 |
21:45:45 | FromDiscord | <brainproxy> thanks! |
21:46:06 | FromDiscord | <Rika> note: as ive said above its late for me and i might be severely wrong somewher |
21:46:07 | FromDiscord | <Rika> (edit) 'somewher' => 'somewhere' |
21:46:14 | * | solitudesf quit (Ping timeout: 256 seconds) |
21:54:04 | FromGitter | <ynfle> Why is this invalid? https://play.nim-lang.org/#ix=2un9 The first parameter has a default parameter |
21:57:54 | * | awe002 joined #nim |
21:59:27 | * | awe001 quit (Ping timeout: 260 seconds) |
22:01:18 | FromDiscord | <Rika> because that's not how parameters work |
22:01:28 | FromDiscord | <Rika> the first parameter is still the first parameter |
22:01:44 | FromDiscord | <Rika> if this is desired behavior, use overloads |
22:02:09 | FromDiscord | <Doongjohn> I guess unnamed parameter is always positional? |
22:02:16 | FromDiscord | <Rika> or make the string parameter the second |
22:02:21 | FromDiscord | <Rika> yes |
22:02:29 | FromGitter | <ynfle> Why can't that be inffered? |
22:02:42 | FromDiscord | <Rika> because it could be a bug |
22:02:47 | FromGitter | <ynfle> Doesn't acutally make a difference, just wondering |
22:02:49 | FromDiscord | <Rika> actually no clue |
22:02:54 | FromDiscord | <Rika> i think it could be a bug though |
22:03:07 | FromDiscord | <Rika> (^ an opinion) |
22:03:07 | FromGitter | <ynfle> Meaning if it's allowed? |
22:03:12 | FromDiscord | <Rika> wdym? |
22:03:40 | FromDiscord | <Doongjohn> I think c# has the same rule and it maybe critical? |
22:04:05 | FromDiscord | <Rika> ah i think its because it would be confusing if you DID have an overload |
22:04:10 | FromDiscord | <Rika> which would it overload to? |
22:04:17 | FromGitter | <ynfle> The bug is to be an error or in case of error it's not allowed |
22:04:39 | FromGitter | <ynfle> No difference if it's the first or second argument |
22:04:45 | FromGitter | <ynfle> ie. ``` |
22:05:00 | FromDiscord | <Rika> like if you had a proc(string=default, int) and a proc(int), what would nim overload into then? |
22:05:18 | FromGitter | <ynfle> ie. ā ā ```proc t(s: string, y = "") ā proc t(s: string)``` [https://gitter.im/nim-lang/Nim?at=5f39ad9ea1190a2e95f81948] |
22:05:44 | FromDiscord | <Rika> hm |
22:06:19 | FromDiscord | <Rika> i dont know, i'm tired, i'll leave it to someone else to think about it |
22:06:29 | FromGitter | <ynfle> Thanks |
22:08:10 | FromDiscord | <Doongjohn> what about this?āµproc test(a: int = 0, b: int) = discardāµtest(10)āµpositonal or optional first? |
22:09:02 | FromDiscord | <Rika> if nim had what yn proposed, b would be 10 since it would fail otherwise |
22:09:57 | FromGitter | <ynfle> > *<FromDiscord>* <Doongjohn> what about this?āµproc test(a: int = 0, b: int) = discardāµtest(10)āµpositonal or optional first? ā ā Why would it not be `a = 0` & `b = 10`? |
22:11:11 | disruptek | it's not a bug because named parameters are valid even when they don't have defaults. |
22:11:57 | FromDiscord | <Doongjohn> I think positional arg passing is more straightforward |
22:12:51 | disruptek | i sometimes name positional params when there are a lot of them and either some have defaults or some knucklehead may add defaults later. |
22:13:07 | disruptek | it's just easier to understand. |
22:14:20 | FromGitter | <ynfle> > *<disruptek>* it's not a bug because named parameters are valid even when they don't have defaults. |
22:14:26 | FromGitter | <ynfle> Why is this relavent? |
22:15:04 | disruptek | because otherwise the compiler cannot disambiguate. |
22:15:13 | FromGitter | <ynfle> Which case? |
22:16:25 | disruptek | proc (a: int, b: int, c: int)(c=3, b=2, a=1) |
22:16:45 | FromGitter | <ynfle> What's the issue? |
22:16:53 | disruptek | how should i know? |
22:19:09 | FromGitter | <ynfle> My point is if one arg is given and there are 2 with one default, why should it make a difference if the default is first or second to infer which arg is given? |
22:20:11 | disruptek | the idea behind defaults is that you can omit the argument. dispatch is performed on name first and then on position. so you're setting yourself up for failure if a new proc is invented that merely takes an int. this is why such dispatch should never be allowed, and it's wise to name your arguments when they have defaults. |
22:21:12 | disruptek | in some languages, you're not even allowed to have a named argument ahead of a positional. |
22:22:22 | FromGitter | <ynfle> That is true if the default arg is first to second |
22:22:39 | FromGitter | <ynfle> (to your second last comment) |
22:23:07 | disruptek | i don't know what you're talking about. |
22:31:58 | * | apahl quit (Ping timeout: 244 seconds) |
22:32:57 | * | apahl joined #nim |
22:40:16 | * | NimBot joined #nim |
22:51:33 | * | leorize joined #nim |
23:11:28 | FromGitter | <bung87> can I turn off effect system check ? |
23:12:54 | FromGitter | <bung87> I got `Error: can have an unlisted effect: RootEffect` everywhere , I thought tags: just a annotation right? |
23:20:01 | * | lritter quit (Ping timeout: 264 seconds) |
23:35:09 | * | skelett quit (Quit: WeeChat 2.8) |
23:36:31 | * | skelett joined #nim |
23:48:07 | * | krux02_ joined #nim |
23:51:07 | * | krux02 quit (Ping timeout: 260 seconds) |