02:50:03 The issue ending up being the sweep_all method seemed to timeout and the database could not be updated after that. I fixed a few things and all is good now. Thanks for the help 02:50:10 the site is live now and ready to use https://xmrmemes.com 02:51:06 monerodev880022[: that's a pretty neat concept 02:51:37 UkoeHB: thanks 02:52:56 The idea / concept was done by the Wownero community first but I thought Monero needed something similar so I set out to build this a few weeks ago. 02:54:11 make sure to post on reddit 02:54:53 selsta: Yep I did a little ago. Also posted on /r/moonero 02:54:53 https://www.reddit.com/r/Monero/comments/p23fm4/xmrmemescom_is_now_officially_live_get_tipped_to/ 02:56:00 the one thing wownero did right 03:39:53 monerodev880022: ive got an idea for you 03:39:57 allow webm or gif 03:40:35 RustyLumberjack[: Did you have trouble submitting a gif? 03:40:41 GIFs should work unless there is a bug or something 03:41:04 I will look into adding support for webm though, not sure if that works. 03:41:51 that'd be cool. could make/submit custom monero webms 03:42:07 Kk will look into adding it tomorrow 03:42:14 Think currently it is (JPEG, JPG, PNG, GIF) 03:42:26 Thanks for the advice 03:42:30 boots up kden live 04:33:25 monerodev880022: my submission on your site swapped my wallet addy with someone elses 04:34:21 btw discussion about this site would be best for #monero 04:37:35 RustyLumberjack[: Each meme gets a new address to keep track of the stats. It will send the XMR to the address you signed up with. I will add a note on the website about this. 04:37:43 selsta: kk 04:38:02 thanks and srry selsta 04:46:00 also... php - havent seen something so recent made with it 🙂 04:55:48 C++ question: I have a 'module'-like set of functions. Some are 'interface' (intended to be called from outside), some are 'internal' (only supposed to be called within the module). Since Monero is in C++11 (no 'module' language feature until C++20). To mimic the module 'export' behavior, I am thinking about making a monostate class whose members are all static functions. This way 'internal' functions can be private, and 04:55:48 'interface' can be public. Is this idea basically flawed, is there a better approach (e.g. two headers - although in that case someone can still include the 'internal' header from outside), what are people's thoughts? 06:39:15 "'interface' can be public. Is..." <- No problem with being able to include internal headers, I believe. If they are supposed to be tested, they have to be able to be included. You can limit their visibility by NOT distributing them along with your SDK. 06:39:59 Some people (me included) will also say, that private methods are an untestable evil. 06:40:35 It's better to extract them into a separate class. 06:41:50 You can also separate the private methods in the way, that a public static method returns an object, which is testable, while the sole responsibility of the corresponding private method would be calling the public one, and using the returned object to set a state of an internal member. 06:43:08 Lately, there has to be a clear separation about what an interface is, and what it is not. 06:43:08 An interface is a class, that consists of pure virtual methods and has no member variables. 06:43:08 Look at wallet2.h for a perfect counter example. 06:43:39 Here is how I'm solving the issue. 06:43:41 https://github.com/monero-project/monero/pull/7679 06:44:22 So having absolutely NO member variables, proactively forces you to create an interface, which is monostate. 06:44:27 Which is a very good thing. 06:45:31 Since then you can pass it along as a const reference, which in the end allows you for a very predictable behavior. 06:47:19 For some reference: Java first introduced the concept of pure abstract classes, called Interfaces, but at the same time while C++ allows it, but most people don't know how to use interfaces, only C++ has a full blown const-correctness mechanism (that most people don't use either) 06:51:30 It's also worth mentioning, that a pure abstract interface in C++ allows you to forward declare ALL of the dependencies. This is useful, because not all the users will be calling all the methods, thus they will not need all of the dependencies being included. 06:52:04 And a word from our sponsor: I'm looking for reviewers on 7679 :) 07:02:49 Hmm I see, thank you! Since I don't need any member variables, simply using two headers where only one is made public in cmakelists seems like a good idea. 07:03:35 That being said, I still don't know much about cmake lol 07:10:03 "That being said, I still don't..." <- I'm not sure we use this technique here, but it's the installation step of CMake, where you deliver the shared libraries and their interfaces. This is a perfect excuse to have the "private" functionality embedded in the libraries, but skip a few headers :) 08:14:40 mj-xmr[m]: If the headers are internal to a component, how do you go about unit testing? Is it a better pattern for unit tests to be defined within the subdirectory? 09:05:19 "mj-xmr: If the headers are..." <- Yes, exactly. This way, you know, that your internal code works before even "advertising" it outside. Secondly, you don't need to compile and run "Everything.h" just to get the *unit* tested. 09:07:34 For the same reason, I was even arguing with my "colleagues", that such an internal code in form of templates should be at least included by a corresponding .cpp file within the library, before it even reached the library's own unit tests. The reason is, if the template's declaration is wrong, the tests wouldn't compile either. 09:08:01 So better learn this soon enough. A higher form of purism, but a consequential approach. 09:08:27 They were arguing that such an empty inclusion was "dead code". One of reasons to leave that project :) 09:13:53 > at least included by a corresponding .cpp file within the library, before it even reached the library's own unit tests. The reason is, if the template's declaration is wrong, the tests wouldn't compile eithe 09:13:53 I think I see what you mean. First say the library compiles, then say the library's unit tests compile, then say the tests succeed. Then this hierarchy can be extended to users of the library, and so on. 09:15:30 Exactly. 09:17:19 Although rather than 'include template headers in random cpp file's, which does feel like dead code (haphazard), I wonder if you could have a dedicated 'interface compile test' cpp file to include them in. At least this way encapsulates the purpose and behavior. 09:20:46 Yes, but who will remember to check if each template is included in such a file? With one header = one cpp file you at least have the problem solved by protocol. Secondly, it's not improper to separate from the templated code the code that can be static, and just called from the template code. This is the code that hasn't got anything to do with the "T" type. The static code will go to the .cpp file in the end anyway. 09:21:49 Human psychology works so, that if the "dead code" .cpp file doesn't exist, they will NEVER start extracting the static parts, because they're lazy or afraid of CMake :) 09:22:45 Ah I see 09:23:46 "I think I see what you mean..." <- There is however a possible loophole with the "first local tests compile", as they may be incomplete by: allow for too high degree of freedom, or even the other way around. In the second case you might be limiting a functionality that was expected outside to be there, while still having your UT succeeding. 09:24:11 This somehow touches the myth of having perfect UTs. You can maybe expect this perfection from a compiler, but not from UTs. 09:25:07 The myth is correlated with managers bragging about having 99% code coverage... which is only a HINT, that something is correct, but not proof. They like to dumb things down to their level :) 09:37:58 Thank you for the insights :). Fundamentals really are important wherever you go. 12:36:51 7821 is ready for re-review :) 12:36:51 Will also write a new separate PR for 7798 for next release (one that solves divide by 0 but leaves integer truncation in the code) 12:37:17 Is this commit something that could be merged, or is it DOA (i.e. should I roll it back and move on)? https://github.com/UkoeHB/monero/commit/7596e017f238c74f347fba652723877752cf9f65 12:50:38 * jberman[m] < https://libera.ems.host/_matrix/media/r0/download/libera.chat/dc11822593686d775da101054e26f874e51fe947/message.txt > 14:02:51 thanks for the update jberman[m] 14:02:56 condolences as well 14:39:52 thank you :) 16:26:30 Thank you, jberman. Condolences, again. I will examine 7821 very carefully. It may take 24-48 hours, since it's not the only thing I have going on right now. 16:28:10 By the way, I see you mentioned me in the comment. Feel free to directly tag me. I am https://github.com/Rucknium 16:53:42 We eventually need a statistical testing suite for Monero. 17:27:02 ^^^^ 17:35:38 "We eventually need a statistical" <- There are a lot of feature-rich Python libraries for statistical tests and stuff. 17:45:14 R's central repository alone (CRAN) has 17,987 packages that, in turn, contain untold numbers of functions. Over 200 of those packages deal with mixture distributions, which is the exact statistical area that mixin selection deals with. 17:45:57 It's not really about whether the function exist. It's applying them in a way that tests the vulnerability of Monero to statistical attack. 17:46:46 With a bit of work, R could probably link directly to the C++ code that Monero runs on, since R has the Rcpp bridge. 17:59:03 vtnerd: what's the status of eventually merging this upstream? https://github.com/vtnerd/monero-lws 18:43:23 yeah thats a good question, it would have to be reviewed somehow, at least to ensure that there were no obvious privacy leak backdoors, etc 18:43:52 presumably people would trust it more if it were in /monero-project instead? 18:44:56 UkoeHB : put the functions in an anonymous namespace OR declare static in namespace scope (not function scope) 18:45:15 in both cases the comp 18:45:31 the compiler will put those functions in internal linkage only, and the symbols are not exported 18:48:32 Im not a fan of virtual everything interfaces in most circumstances because it adds unnecessary overhead, and if designed properly each header file has small amount of data members 18:48:54 "vtnerd: what's the status of eve" <- Would love to see this more commonly supported and usable 18:49:10 It's a key UX improvement for anyone running their own node and has practically no drawbacks if using with own node. 18:49:22 wallet2 become a do everything class, and the interface added in mj-xmr PR might make that worse (because its not broken into subcomponents) 18:49:50 eve? 18:52:03 > put the functions in an anonymous namespace OR declare static in namespace scope (not function scope) 18:52:03 The part that annoys me (maybe naively/ignorantly) is then you have to forward declare stuff within the cpp file if function order is not sufficient. 18:59:52 I rarely run into that issue, but I don't know whats being implemented for this 19:00:40 sometimes I might have multiple anonymous namespaces, such as `namespace foo { namespace { ... } ... namespace { ... } }` 19:00:58 which might be the kind of thing that annoys you about it 19:01:44 doing the static/anonymous trick is preferable when writing a shared_object since it keeps the symbols down 19:02:11 theres enough maintenance work already for monero to even worry about it yet though (although I still do it where possible) 19:04:54 oh sethsmissons : I see matrix or something cutoff the remainder of the sentence 19:11:57 Hmm 19:12:04 Just saying it's a huge step forward if easy to run 19:16:49 vtnerd: are there any front ends/wallets that can be configured to work with monero-lws currently? 19:17:13 * vtnerd: are there any front ends/wallets that can be configured to work with monero-lws currently? Even something roughly works 19:18:18 mymonero should be usable but requires a valid ssl cert, and the error reporting is currently suspect (it seems to just fallback to mymonero.com when custom domain fails) 19:18:30 the other option is to taking the html from openmonero 19:18:48 the third is using the wallet-cli in light wallet mode 19:19:12 Im not sure if the gui wallet provides an option for that, I should look 19:20:10 Im tempted to create an ncurses (with mouse support) wallet specifically for this purose, and start with a view-only mode to test the concept 19:21:51 I think there is a small niche there, it would be more usable than the existing cli (but less features), and would have minimal dependencies ideally (ncurses instead of qt stack like other more usable wallets) 19:35:07 yeah. fancy ascii programs are cool. would be neat if could somehow make it work on android in a noob-friendly way 19:35:21 do they make ncurses with touchscreen support? :P 19:35:26 I think the niche is smaller than you think.... anyone with their own node should use is 19:35:30 s/is/it 19:35:45 lol, also s/smaller/larger 19:35:58 lol just try again XD 19:35:59 larger niche 19:36:29 Yeah, basically anyone using a home node would benefit from this if most wallets supported it 19:36:36 Mobile wallets most of all 19:37:15 exactly, I already have a device sitting here synching the chain. it might as well take some overhead from my phone 19:38:35 i bet cakewallet & monerojuice would make stuff happen if this was getting baked in 19:38:55 I would gladly donate and drive attention if someone could dedicate time to this. 20:09:14 most touchscreens should appear as mouse events 20:09:55 the trick is handling keyboard input with touchscreens, I have some vague ideas on how to handle that 20:11:16 one thing I would like to try is getting it working on a remarkable2 device or similar 20:11:50 since the viewkey scanning is off-device, the low-end cpu/ram shouldn't matter as much 21:44:38 Imagine an rpc wallet running on your 24/7 node - would it be possible to simply open your mobile wallet and download the local wallet file.. hey presto your mobile wallet is pretty much synched 'instantly'? 21:47:30 yes 21:59:38 Probably with some kind of rsync app running on the mobile device.. Just a thought 22:11:16 Could even download small xdiff files and patch your current wallet file on the mobile device (incase the file is huge) 22:44:18 plowsof[m]: what would be the benefit of that vs a wallet scanning server (aka lws)? 22:57:48 I see... lws is achieving the same effect, so no benefit at all - other than attempting to be a simple solution for smooth brains like myself ^^ 23:52:21 I've asked on the other channel but i seems to be less populated, so here it goes: I've built xmr-stak from source but when i run it, I don't see monero as available coin. What's wrong? I'm new to crypto. 23:54:24 Ask in #monero-pools, also use xmrig as it supports monero