00:22:59 I guess I don't care about tcsh but I think we should not be changing csh, which I know are the same binary these days, but implement different interfaces. And adding functions seems particularly undesirable. Because it might cause someone to think that they should use them in a tcsh script. When in reality they should never be writing (t)csh scripts at all! 00:33:03 anyone here ever got an old macpro 6,1 running FreeBSD? Just tried current and it gets stuck on the pciE/nvme device I think. system will boot okay into nixos/linux okay. 00:36:17 is there a freebsd equivalent to wipefs? i.e., overwrite all file system and geli signatures on a device? 00:40:37 markmcb: security/wipe or bcwipe; i haven't used either 00:40:48 rwp: I find myself unreasonably annoyed that bash doesn't disable bash-isms when invoked as sh 00:45:49 aquamo4k: during install or some other time? 00:46:19 rtprio: during install 00:49:49 perhaps try booting in verbose mode and see if you get any more info 00:51:35 kevans, In theory bash changes the supported syntax to support POSIX sh but there is nothing that actually checks for that and they do not disable extensions. They don't want to do that in the Postel form of accept more than they need. 00:51:45 yep, I did that; i toggled verbose and safe mode and it still gets into an infinite loop printing out: "pcib8: Power Fault Detected" ; I don't see this error on Linux, MacOS or even Illumos/SmartOS. But the Illmos/SmartOs get hung at the same device (they just don't spew the Power Fault detected msgs) 00:52:35 I might try removing the pcie nvme completely and try some external usb or thunderbolt storage and see if that gets me further 00:52:58 good idea 00:53:52 markmcb, Drives today are quite different from the drives that people think need a secure wipe. Mostly just one overwrite to actually remove the data is the best you can do. I would dd /dev/random over the device. Most drives have a firmware feature to do a smart erase that avoids the need to actually write 20TB of data over them that I would use if it is available to use. 00:55:17 markmcb, Oh! My bad. I read now and understand that you just want to remove the file system signatures. Which is quite different. Sorry. My bad. Last time I needed to do that I booted a live-boot linux image and did use wipefs myself too. 00:55:44 usually dd'ing /dev/zero over the first dozen sectors will suffice 00:57:41 rwp: yes 00:57:46 that is my complaint 00:58:37 Understood. But realistically it won't ever happy. Because they don't have the same vision. :-( 00:58:49 rtprio: thanks, that was my fallback assumption 00:58:50 I can only complain with you in solidarity. 01:00:03 This is weird! On freebsd, a user that is a member of group operator can create and delete partitions using gpart, yet operator has no write access to the devices. 01:00:03 crw-r----- 1 root operator 0x5b Nov 16 11:50 ada1 01:00:03 crw-r----- 1 root operator 0x78 Feb 16 18:44 ada1p1 01:00:03 crw-r----- 1 root operator 0x7b Feb 16 18:44 ada1p2 01:00:03 crw-r----- 1 root operator 0x77 Feb 16 18:44 ada1p3 01:00:05 crw-r----- 1 root operator 0x82 Feb 16 18:44 ada1p4 01:00:07 crw-r----- 1 root operator 0x87 Feb 16 18:44 ada1p5 01:00:09 crw-r----- 1 root operator 0x8b Feb 16 18:44 ada1p6 01:00:11 And gpart has no special permissions such as suid. 01:00:13 -r-xr-xr-x 1 root wheel 34480 May 12 2022 /sbin/gpart 01:00:17 How can that be? 01:00:52 I didn't mean to paste that much at once. It selected the wrong clipboard. 01:03:33 vstemen, That does seem incorrect by permissions. I have never tried that combination myself. But I will agree with you that it seems incorrect at first look. 01:08:10 disk/part permissions wouldn't be checked there at all anyways, we don't get that fine-grained for gpart operations 01:12:43 I just changed the group on the devices to a different group that I am a member of and was still able to edit the partition table. So it is not related only to group operator. 01:13:24 the only thing that affects where you can do gpart operations is permissions on /dev/geom.ctl 01:17:46 To test, I just removed all group permissions. Yet I was still able to edit thepartition table by being a member of the group. 01:17:46 crw------- 1 root operator 0x5b Nov 16 11:50 ada1 01:17:46 crw-r----- 1 root operator 0xa Nov 16 11:50 geom.ctl 01:18:37 kevans, are you talking about the file perms on geom.ctl? because it also has no write access. 01:19:08 normal file perms I mean 01:21:51 write does not matter, just read 01:24:11 not sure what to tell you, revoking the group's read access to disallow works fine here 01:24:42 I still don't understand. Why would read permission give me full write ability to the device for one, and also, as I mentioned, I removed even read permissions for the group and still can edit the partition table. 01:25:05 thn maybe you shouldn't be in th operator group 01:26:42 I tried a completely different group and had the same result. I have never seen a case where belonging to a group gives you full read/write access even when no permissions are granted to the group. 01:28:08 maybe you've found a bug 01:29:02 it doesn't repro on current at least... seems like an odd thing to go wrong 01:29:07 rtprio, It's beginning to look that way, but I have never seen such a blatant security bug in freebsd. I figured I must be overlooking some kind of permission control that I don't know about. 01:29:38 This is on 13.1-RELEASE 01:51:11 ok, let me verify; you're in the operator group, but things in /dev/ in the operator group that are 644 or 640 are still writable by you? 01:51:14 is that right? 01:53:26 Yes, even when the mode on all the devices is 600. 01:55:05 i mean, operator is special and privliged like wheel 01:55:30 why are you in operator in the first place? 01:57:29 vstemen: https://bsd.to/AJBb/raw 01:57:30 Title: AJBb 01:57:50 rtprio, For other sysadmain tasks. However, As I mentioned, I tried changing the device files to another unprivilages group that I am a membe of and got the same result. 01:58:40 elliot@freebsd-test:/dev$ echo blah > vtbd0p2 01:58:41 -bash: vtbd0p2: Permission denied 01:58:53 are you saying that's not what you're getting 01:59:37 I think there's a fundamental misunderstanding of what permissions map to which action here 02:00:02 the disk/partition device permissions are only for direct operations on them 02:00:12 gpart only uses its own ctl node 02:00:45 rtprio, I cannot delete the device files using rm. But I can use gpart and delete and recreate the partition table. 02:01:55 that sounds like something inside the operators' perview 02:02:40 kevans, So, are you saying that, by just being a member of the group, even with mode 600 on the device files, that it is normal for me to wipe the partition table with gpart? 02:03:08 there's only one device that matters with gpart, and that one does not work at 0600. 02:08:55 kevans, I'm not sure I understand your statement. I set all the devices, ada1,and all it's partitions, to mode 600, and as long as I belong to the group, no mater what group it is, not just operator, I can wipe out the partition table using gpart. Am I understanding correctly that it is the common consesus that that is normal? 02:09:53 yes, because gpart doesn't care about those at all 02:10:58 gpart assumes that if you've been granted its control node that you get full control 02:13:48 jkevans, So you get granted it's control mode by just being a member of the same group? Or is there some other control, such as a sysctl or something? 02:14:03 kevens 02:17:02 like I said above, /dev/geom.ctl 02:20:37 the 'r' bit is honored on that, guaranteed 02:24:20 kevans, Ok. Looks like you are right. I didn't understand what you were indicating to do with geom.ctl earlier. However, I just now removed group read permission from geom.ctl and that did indeed revoke my permission to modify the partition table. So that is progress. Thanks. However, it still seems weird that having the read bit set on it gives me full write access to all the disk devices via gpart. I have never seen this before in a Unix like 02:24:20 environment. 02:25:06 Weird, that extra line break before 'environment' is not in my past buffer. 02:40:41 Hmm.. There is no mention of geom.ctl device in the geom or gpart man page and in initial search I have not found anything that mentions this feature online yet. Maybe this is why even the AI's did know this when I asked. 02:42:00 i would not trust an AI for any portion of BSD administration 02:43:28 It has been pretty useful for me so far. Just like humans, it sometimes makes mistakes. :-) 02:47:35 humans usually say "i dont know", gpt is trying to continue with wrong information 02:48:26 its ok to see basics in most of topics, but for now its not good in infrastructure declarative things 02:54:22 In my experience, I get wrong information from just as many humans rather than 'I don't know' answers' :-). The irony is, the AI's have only JUST BEGUN :-) This is the tip of the iceburg. 02:59:51 Just out of curiosity, does anybody know where this "feature" about the geom.ctl device permissions is documented? 03:00:51 the AI is not AI yet, cause it learns only on things humans created and cannot go out of the sandbox 03:01:05 we should allow it to create and learn on its creation 03:02:14 we can't really explain with words why we want what we want, so it generates "anything" rated good in some db 03:02:28 its like "i'm feeling lucky" in google 03:04:12 ask it to create terraform resource for azure linux vm with several users and the same ssh public key, it will generate you different approaches all the day long 03:05:11 Everything you just said, I can say also about most humans :-) 03:05:38 arino, How many humans can you ask that and get it correct? 05:35:56 <[0x1eef_]> I'm on hardenedbsd but the question is probably applicable to FreeBSD as well. The 'fcgiwrap' package installs a binary of the same name to /usr/local/sbin/, and the sbin directory has no permissions set for 'other'. That means I can't execute the fcgiwrap binary as say - the www user, since they fall into 'other'. Is it suppose to be this way? Seems odd. 05:42:35 <[0x1eef_]> Fixed it this way: https://github.com/gnosek/fcgiwrap/issues/59#issuecomment-1949677649. 05:42:37 Title: fcgiwrap doesn't start as service on FreeBSD 13 · Issue #59 · gnosek/fcgiwrap · GitHub 05:42:38 59 – Attempting to open a multicast TCP connection loses. https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=59 09:28:28 Hello , I use lspci in linux , for freebsd what command is ? 09:31:45 same same 09:32:02 dwho: Does pciconf do what you need? 09:33:38 vkarlsen: yes , it's exactely want, thanks 10:04:04 dwho: you might want to look up the unix rosetta stone. 10:30:35 Thanks debdrup 11:23:51 vstemen: i usually prefer documentation from developer, github repos and then reading the code with AI helper, i don't like to test random things thoughtless 11:24:48 vstemen: the developers are those humans i prefer to ask about something using their communication channels 11:26:18 my questings often too complex to ask gpt cause it needs to text so much context without any hope it would understand it right 11:26:33 but i agree its useful to start basics for something 11:27:15 like google+wiki+docs 11:27:52 +stackoverflow 11:29:07 try to solve TX transmission error on rw880 on freebsd 14 with any AI, i think its useless in most cases upper intermediate 11:32:09 i use it, its not so bad and i am not agaist it, but i prefer to get verified information if its possible, and i don't need "man" in the middle between me and developer's docs until its really necessary for me, avoiding that i develop myself cause i still has my own intellect which like a muscle 11:54:57 dwho: no worries 11:55:51 arino: Have you seen https://arxiv.org/abs/2211.03622 ? 11:55:52 Title: [2211.03622] Do Users Write More Insecure Code with AI Assistants? 11:56:12 All other things being equal, that alone is reason enough to avoid SALAMI code. 12:24:15 debdrup: thanks 12:27:01 I've wondered if you could train an AI on code specfically. is that what the paper is about? 12:33:13 Reading the paper explains the paper. 13:52:11 VimDiesel: Yes. 15:35:16 Hello , for beginner who want to update freebsd , it's recommended use freebsd-update or other ? 15:36:03 lw 15:47:46 dwho: yes, absolutely. 15:49:50 debdrup: Thanks, I look other method and it isn't easy. 15:53:11 48 17:09:14 debdrup, +1 on your AsciiDoc comment (yubikey) 17:09:27 (I am not the author) 17:31:08 Hello , I search dig or nslookup and I search with pkg , all is not found. 17:41:16 dwho try dns/bind-tools port 17:55:34 jbo: hey. yes, i use jellyfin. i didn't get around to looking at wine. sorry 18:01:14 drill is a drop-in replacement for dig, made by the same people who make nsd and unbound 18:15:06 lw, dude, you don't have to apologize - it doesn't matter to me - whenever works for you :) 18:17:31 well you keep telling me off :-P 18:23:40 Text media are notoriously poor at conveying tone. 18:33:55 <[0x1eef_]> That's why you should assume good intentions. 18:34:26 vstemen: In order to issue ioctl requests, it's not necessary to open geom.ctl RW. Only read access is required. Sometimes, a driver might require RW (and indeed a lot of example code opens RW) but this is not the case here. 18:35:38 (it's not even FreeBSD specific; examples exist in Linux as well) 19:08:13 lw, ping (C++ question) 19:08:54 icmp echo response 19:09:21 assume struct foo { std::span payload() const; }; 19:09:42 I need to pass that to a low-level winapi function which accepts { BYTE size, BYTE* data } 19:10:07 the proper way of doing this is std::memcpy(), right? 19:10:32 eg: const auto& p = foo.payload(); std::memcpy(dst.data, p.data(), p.size()); ? 19:11:18 jbo: yes, you can memcpy() a span since it's required to be a trivially copyable type. you could also just pass a pointer to the raw span, but this may be an aliasing violation depending on what BYTE is. better to memcpy, the compiler can optimitise it away if it's not necessary 19:11:40 lw, ack, thanks 19:12:05 oh hang on, you're passing the data inside the span, not the span itself 19:12:12 lw, I'm also correct to assume that I should get foo.payload() first, then use that in std::memcpy() rather than calling foo.payload().data() and foo.payload().size() in the memcpy call due to "atomicity"? 19:12:16 yes 19:12:20 well, still, that's fine. but perhaps consider using data(payload) and size(payload) for readability 19:12:22 I need to copy to a C API 19:12:32 wut? 19:12:39 wtf is data(payload)? 19:12:58 oh, std::data 19:13:00 I had no idea. 19:13:08 https://en.cppreference.com/w/cpp/iterator/data 19:13:09 Title: std::data - cppreference.com 19:13:09 yeah 19:13:21 I like that - much better 19:13:26 jbo: no you don't need to take a reference to payload() first, this has no effect on atomicity, especially if you take a reference 19:13:47 lw, yeah I dropped the ref in the meantime 19:13:55 std::span is generally not atomic, so if you need to copy it in an MT context, you need to handle that yourself with a mutex 19:14:08 alright, that makes sense 19:14:52 thanks for showing me std::data/std::size. didn't know about those - love it. 19:15:39 jbo: i notice your C API doesn't have 'const', so you'll porbbaly need to use const_cast... good to check that the API doesn't actually modify the data 19:16:24 also if you're storing byte-oriented data in a span, may i suggest std::span? 19:16:40 I was looking at std::byte for that purpose. and was not sure whether I want to bother with that. 19:16:48 std::byte has the property that you can reinterpret_cast between it and other objects in the same way you can with char, which is not true of most ypes in C++ 19:16:58 s/ypes/types 19:17:19 so I can still memcpy std::span to BYTE* ? 19:17:32 that may or may not matter to you, but i tend to like std::byte anyway since it avoids accidental conversion to integrals (it's an enum type) 19:17:36 jbo: yes 19:18:31 lw, I used std::byte in another project a few months ago and I ran into hell. However, there I used it to wrap a file API. i.e. I had a low-level API to read/write files which operated on std::span and std::vector. But part of the API was to read text files (i.e. std::string) and that conversion was fuckly. 19:19:03 yeah, that can be awkward, but at least it forces you to acknowledge that std::string has no encoding support... (in 2024... what is up with this) 19:19:15 std::u8string :> 19:19:25 encoding is just a bitch. 19:19:35 std::u8string is a lie, it's just a basic_string, it has no understanding of encoding 19:19:45 i hate that they introduced this type in such a broken way 19:19:53 well, it's semantics 19:19:57 and helps with API crappery 19:20:00 (maybe) 19:20:04 like, try substr() on a std::u8string containing combining characters... it will not work 19:20:10 oh, really? 19:20:13 that makes it pointless 19:20:14 really 19:20:18 yes, it does 19:20:35 std::u8string is not a unicode string, it's a string of bytes whose type is char8_t, which is a subtle but extremely important distinction 19:20:57 ah, I thought they defined it with the idea that lib implementations have to provide the unicode support for the various string ops 19:21:01 we're supposed to get std::text (or something) at some point which handles Unicode properly, but i have no idea what the status of that is 19:21:23 hrm 19:22:08 lw, > 19:22:08 You could use the std library to convert the utf8 string into a wstring. And then use the normal .substr() approach: 19:22:08 lol 19:22:30 yeah, except good luck doing that on Windows where wchat_t is 16-bit and still needs multibyte characters 19:22:49 (that was a quote I wanted to share, sorry) 19:22:55 even std::u32string doesn't handle combining characters in the case of characters that can only be combined 19:23:27 hmpf 19:24:20 lw, I have some other low-level API that I will have to interface which uses uint8_t* for payload data. when I change my library to use std::byte, can I convert to/from std::uint8_t painlessly (without copying crap) ? 19:29:51 hello. is this the right channel to get help with wifi on freebsd? 19:30:10 Tikosh, it's certainly not the wrong channel :) 19:30:49 jbo: std::uint8_t *myints; auto *mybytes = reinterpret_cast(myints); // pretty sure this is allowed since std::byte can alias any type 19:31:00 s/std::byte/std::byte */ 19:31:04 oh thank goodness! i get an error saying iwlwifi0: scan failed! ret -5 19:31:33 i just installed freebsd on my laptop and cannot seem to get the iwlwifi driver to work 19:31:39 lw, and then there was this.... 19:31:40 error: cannot initialize an array element of type 'std::byte' with an rvalue of type 'int' 19:31:40 12 | std::array data{ 0x11, 0x22, 0x33, 0x44 }; 19:31:47 q__q 19:31:57 now all my test cases need to have std::byte{} 19:32:00 _EVERYWHERE_ 19:32:09 yeah, there's no good answer to that, std::byte is as enum type so the only way to initialise it is std::byte(N) 19:32:32 i suppose you could define your own byte literal, i don't think std has one 19:32:51 lw, I never defined a custom literal - that sounds interesting 19:33:13 it's handy in situation like this (although i really think std should provide one here) 19:34:01 lw, reading cppref right now to figure out how to do that 19:34:51 with consteval functions you could probably even do something like auto array = "\x11\x22\x33\x44"_bytearrow; although i'm too drunk to think about how to implement that right now 19:34:56 also for some backstory. im a gentoo user and just installed bsd with ports enabled on my thing. the problem is the internet or iwlwifi does not work 19:35:09 s/bytearrow/bytearray 19:35:18 :D 19:35:19 enjoy mate o/ 19:35:22 my thing meaning laptop. 19:35:23 thanks for the help! 19:35:36 Tikosh, is your card supported by iwlwifi? 19:35:52 it did work when i went into the installation media 19:36:13 oh, so you already had connection once with your hardware + iwlwifi? 19:36:18 yes 19:36:21 alright 19:36:43 so iwlwifi is under flux. bz@ is working on it. I would recommend mailing the wireless mailing list (wireless⊙Fo) 19:37:21 alright 19:37:43 check bugzilla for open bugs matching your hardware 19:38:04 if you're new to freebsd, note that to use a wireless interface, you have to explicitly create a slave interface off the main interface, which is confusing if you're not expecting it 19:38:13 Tikosh, if it helps: on my laptop I sometimes initially get the connection and after a few seconds it drops out. then I have to reboot and it's solid (intel AX210 (or was it AX201)) 19:39:23 lw okay 19:39:33 jbo let me see if it works 19:43:29 is there any documentation of ioctls? in particular the inputs and outputs to the data part 19:44:31 paulf, https://man.freebsd.org/cgi/man.cgi?query=ioctl_list&sektion=2&apropos=0&manpath=Red+Hat+9 19:44:32 Title: ioctl_list(2) 19:45:08 hmm, taht defaulted to RedHat 9 :s 19:45:45 ok thanks that's a good start but I still need to look at every structure and perhaps the kernel code to see what is read and what is written 19:47:44 and check that FreeBSD is the same 20:31:15 lw, ping (C++) 20:32:52 x 20:34:12 lw, if I have an std::span<> and it's dynamic extent, does std::copy(std::begin(dst), std::end(dst), std::cbegin(my_span)); still perform as expected (i.e. only copy as many elements as std::span::size() reports)? 20:34:53 jbo: yes. but try this, it looks nicer: std::ranges::copy(dst, std::cbegin(my_span)) 20:35:40 span is a container, so size() is its size, std::copy (or any other algorithm) has no idea what data might exist past the beginning or the end 20:35:41 lw, you're right, I should really start using ranges... back in 2020 I really wanted to but compiler support was impractical 20:38:15 i still find it odd we don't have an algorithm that copies between two containers, using an output iterator as output argument in copy() raises some security concerns 20:38:36 i mean, you could implement it yourself fairly easily, but... 20:42:19 lw, is it possible that you got dst and myspan swapped in your std::ranges::copy() example above? 20:42:53 jbo: i used the same order as your example... but it does seem odd you used std::cbegin(my_span) as the destination? 20:43:06 yeah I just noticed a bug in my code :> 20:54:19 topcat001, OK. Thanks. It seems like a bizarre design choice to me. It is very counter intuitive to see devices that have no write access and even no read access, yet be able to do something as critical as delete the entire partition table by just belonging to the group. Even if I don't agree with it, at least I know the reason now and that it is by design. 22:02:32 lw, span and I are not as much friends as I would like it to be yet... 22:02:36 lw, error: no viable conversion from 'std::vector' (aka 'vector') to 'std::span' (aka 'span') 22:02:50 lw, how tf can it not create span from vector ? 22:04:45 jbo: what are you trying to do? you may need an explicit ctor call, like f(std::span(my_vec)) 22:06:15 lw, I have a foo(uint32_t, std::span) and I call it like: foo(0x0001, std::vector{ 0xAA }); 22:06:29 lw, if I declare the vector outside of the foo() call and pass it in it works ._. 22:06:59 without looking it up, i would guess you can't create a span from an rvalue reference, probably deliberately 22:07:19 lw, interesting - why is that? 22:07:30 it would make it too easy to end up with a dangling reference 22:07:35 / 19 22:07:49 that's just a guess though 22:08:07 lw, you know what I really LOVE about C++ (and I am not being sarcastic)? 22:08:22 I have been writing C++ for almost 15 years now and I still feel like I know absolutely nothing about it 22:08:28 and I really mean it - I'm not sarcastic about it. 22:08:34 there is just no mastering it. 22:08:39 I adore that. 22:08:54 you can talk to random guy on IRC and still learn the most fundamental stuff 22:09:49 I remember about two years ago I _LEARNED_ that lambdas create an individual type for each lambda, meaning that you cannot have: template void foo(F f1, F f2, F f3); and pass in three lambdas _OF_THE_SAME_SIGNATURE_ 22:09:59 I felt like an idiot when somebody told me that. 22:30:03 what might be the problem if `curl` on https doesn't work, saying "curl: (35) OpenSSL/3.0.12: error:16000069:STORE routines::unregistered scheme 22:30:45 the web says it must be an error from OpenSSL (obviously), something with CAs maybe? but even https://www.google.com won't work, so it's probably not an issue with "self-signed" 22:30:46 Title: Google 23:12:41 albertus, I cross-check the behavior of curl against wget against fetch and since those are three independent implementations they almost always provide independent confirmation of problems and different error messages. 23:12:46 <[0x1eef_]> IIRC scheme refers to the protocol (https in that case). 23:13:11 I would also open the URL in a web browser and see what it reports as yet another alternate cross-check. 23:14:00 Lastly if it is a web site then I would use the https://www.ssllabs.com/ssltest/ tool to diagnose site certificate problems. It's the gold standard testing site. 23:14:03 Title: SSL Server Test (Powered by Qualys SSL Labs) 23:15:39 Also I would try the URL from a different system. For me whichever I am using desktop/laptop(s) I would use the opposite ones as alternatives. 23:26:57 jbo, I have pretty much stopped using C++ entirely due to the same reasons you listed that you liked about it. It's not cohesively thought out. It's an endless collection of random features which sometimes conflict with each other. :-( 23:35:47 rwp, I wouldn't call them random nor "conflicting with each other". From what I can tell, the standard pays a lot of attention to prevent exactly that. 23:37:37 I highly recommend reading The Design and Evolution of C++ by Stroustrup. It's excellently written. It grabs you by the nose and leads you through the design decisions that occurred leading to the language as it was up until the book was written. 23:38:21 And then you will understand why the language has ambiguity of parsing problems and other issues. And can imagine how the language progressed from the date of publishing of that book until the current feature set C++ has today. 23:38:23 that is one of the books I have not read yet :) 23:39:27 It's an excellently written book. I highly recommend it. 23:39:54 thank you for the recommendation - I appreciate it! 23:39:58 I wrote a lot of C++ code previously. But that was before the current feature set, which obviously I do not like. C++ really identifies many languages based upon the date of the language one is trying to identify. 23:40:03 https://www.stroustrup.com/dne.html 23:40:04 Title: Stroustrup: The Design and Evolution of C++ 23:40:23 the interesting thing is that I only like C++ since the current/recent feature set .__. 23:41:54 Right. That book won't help you program in the current day version of C++. Don't think it will help you with questions of syntax like the templatized three lambdas foo function you posted. That's not what that book is about. That book is about the development of the *concepts* behind C++. 23:42:28 that sounds very much like something I'm interested in. 23:42:38 so thanks - I appreciate it :) 23:42:50 In order to make any headway in the current C++ you will need a large bookshelf that includes many tomes of wisdom from many authors that are all talking about various parts of the language. And you will need to know ALL of them. 23:43:32 You also need to know C pretty well. And while debugging you will eventually need to learn ASM. And you will need to be pretty up on your OS'es workings too. 23:44:04 my "career" was ASM -> C -> C++ 23:45:00 the thing I find interesting whenever I debug C++ on the ASM level is that the ASM I truly learned/studied was for then-embedded-systems. I never truly learned x64 ASM which is more often than not a bit of a mood point 23:47:07 I learned various languages before C. Loved C. Then went to C++ of the form that now would best be described as outdated now. Then became disenchanted with it. Am now back to C for most things I do as a practical matter. I explore new languages such as Go-lang, Rust, others. 23:47:22 <[0x1eef_]> The idea that it takes at least a decade to master C++ has been around for ions. 23:47:58 I pretty much describe C++ as a language that makes easy thing easier and hard things harder. But of course the easy things were already easy. And the hard things we did not want to make harder. 23:48:08 what worries me is that $LargeCorps are paying me money to teach them C++ and I still seem to know barely anything after 15 years :D 23:48:33 and at the same time it's what keeps me to absolutely love C++. there is no end to it. 23:48:59 jbo, Look at it this way. You know that no one you will be teaching will be able to know more about it than you. Given the language and all. It's impossible to master. 23:50:50 rwp, but is that a bad thing? I don't think so. 23:51:16 this might be a sad thing to say but there are few things that give me as much joy as C++ in my life - and my girlfriend is fully aware of that. 23:53:37 <[0x1eef_]> xD 23:53:59 <[0x1eef_]> I don't think non-technical people truly get that. 23:55:09 jbo, I would say it is a bad thing. Because historically a lot of subtle bugs have been because of lack of understanding of the whole system. And if a language makes this understanding not just difficult but actually impossible then it inevitably leads to bugs. And some bugs are security vulnerabilities. 23:56:25 I am also trying to avoid imagining how one says to their gf, "Honey, I love you, but you are only number two in bringing joy to my life." :-) (hahaha) 23:56:52 rwp, are you of the opinion that "modern" languages like Go, python and rust address these issues in a way that results in more advantages than added-disadvantages? I you give an unwilling idiot a tool, you end up with a disastrous situation - no matter what tool it was. It might very well be a hammer or a spoon. 23:57:20 I think that software has not exactly become better over the past 20 years. 23:57:34 accessibility != quality. 23:58:27 Software has many advances! Modern software has been able to completely consume all increases in speed and performance acquired from the hardware in the same time. 23:59:10 really? opening 8 tabs in chromium consumes orders of magnitudes more memory than it did 10 or 20 years ago 23:59:31 (rwp, just to be clear, I am truly enjoying this discussion, I am not trying to be a pain in the ass) 23:59:53 Right. That was sarcasm. Modern hardware has 2 orders of magnitude more memory. Modern software consumes 3 orders more of it. Net effect is negative.