teepee changed the topic of #openscad to: OpenSCAD - The Programmers Solid 3D CAD Modeller | This channel is logged! | Website: http://www.openscad.org/ | FAQ: https://goo.gl/pcT7y3 | Request features / report bugs: https://goo.gl/lj0JRI | Tutorial: https://bit.ly/37P6z0B | Books: https://bit.ly/3xlLcQq | FOSDEM 2020: https://bit.ly/35xZGy6 | Logs: https://bit.ly/32MfbH5
<JordanBrown_> He's more entertaining than the usual corporate droid.
<teepee> not the word I would
<teepee> argh, and mailing list bounces again :(
<JordanBrown_> Before we kill the lawyers, let's kill the spammers. Then we can have reliable email again.
<teepee> mail security via dns, spf, dkim and dmarc seems like a mess, but lots of acronyms
JordanBrown24 has joined #openscad
<JordanBrown_> My personal e-mail uses a scheme that I hoped would be largely immune to being caught up in anti-spam measures, but it's not for everybody. I have it routed out through Amazon's commercial e-mail service, so I pay a microscopic amount for each message.
J23k1 has joined #openscad
<teepee> yeah, I think I saw the dmarc-report for that :)
<teepee> but that only helps if you maintain DNS too
<JordanBrown_> You mean for my domain? Yeah, I've used my own domain for a very long time.
<JordanBrown_> The problem is that it's with an el cheapo hosting provider, and their server gets onto spam blacklists fairly frequently.
<JordanBrown_> So I don't want to run outbound mail through it.
<teepee> the DKIM signature is not amazon though
J23k60 has quit [Ping timeout: 248 seconds]
<JordanBrown_> My inbound mail is through hostforweb.net; my outbound mail is through Amazon.
<teepee> but there's no amazon signature in there, so that probably only matters in regard to ip blacklisting
<JordanBrown_> in where?
<teepee> in the mail header
<teepee> ah, I was looking at one of the direct mails, that was from work I assume :)
<teepee> hence the difference :P
<JordanBrown_> Yeah, oracle.com is the work address.
<JordanBrown_> *.maileater.net is my domain.
<teepee> DKIM-Signature d=amazonses.com
<JordanBrown_> yep.
<teepee> no DMARC I can see. so I suppose there's no enforcement
<JordanBrown_> Mastodon certainly doesn't visually scale well, at least for the stock web client. Approx 62mm vertical space for two lines of text.
<JordanBrown_> I'm afraid I haven't tried to fully understand the DMARC et al picture.
<teepee> enable the multi column deck
<JordanBrown_> I think I might have had to do something with SPF when I set up the outbound routing.
<teepee> I may have maybe a 37% view of things, and I'm not sure it's working as I understand the definitions
<teepee> yes, DKIM will sign and DNS carries the public key
<teepee> SPF defines which IP address can send out mails with a specific domain/subdomain
<teepee> DMARC defines the policy what to do with that info
ferdna_ has joined #openscad
<teepee> I don't know if I triggered the GMX issue with the DMARC entry or if they just decided to force validation more strictly
<teepee> it did mess with the mailing list as that's externally hosted at emwd.com where we have DNS at gandi
<teepee> oh, look, you have a mastodon account :)
<JordanBrown_> Yes, though I am not really understanding what it's telling me.
<teepee> settings -> apperance -> Enable advanced web interface
<teepee> with that you can pin various things in whatever column order
<JordanBrown_> yeah, I flipped that.
<JordanBrown_> But now I have four columns, of which I think I only want one.
<JordanBrown_> I pinned #openscad, I think, and now I have five columns and only want one.
<JordanBrown_> I found unpin on a couple of them, and got it down to three columns (and only want one)
<teepee> yeah, I think 2 are fixed, I pushed those out to the right :) - https://imgur.com/AMLeZAL
<teepee> but maybe you want https://phanpy.social/#/ instead of the default client
<JordanBrown_> The two that I can't seem to get rid of are the one that offers me a hamburger, home, bell, people, world, settings, logout bar, with a search and posting box below it, and the "Getting Started" one.
<teepee> yes, I don't think there's a way to get rid of those in the default web interface
<teepee> if you just want the text with minimal other stuff, try the phanpy web interface
<teepee> it's really very minimal, even has a thread mode
<JordanBrown_> Just fired that up.
<JordanBrown_> though I don't immediately see how you are supposed to know that there's a thread attached to a particular message.
<teepee> not sure if it just looks for reply-to-self or also the 14
<teepee> the 14/x or 3/5 markers people usually add
<JordanBrown_> On a totally different topic, the good(?) news is that I have a repeatable case for an assertion violation that was reported against #4478.
<JordanBrown_> I had hoped that maybe it went away when I disabled the hybrid model, but no.
<JordanBrown_> I was hindered by the fact that you can't do a debug build on Windows, but I just added #undef NDEBUG to the top of the affected file, and it turns out that my train set triggers it.
<teepee> why no debug build?
<teepee> I thought I did that long time ago with msys2
<JordanBrown_> Blows some Windows number-of-symbols limit.
<JordanBrown_> It's been a long time, don't remember details.
<teepee> ah, that's annoying
<teepee> so it would need some limited debug build or so
<JordanBrown_> Something.
<teepee> or different compiler
<JordanBrown_> I get the impression that it's more of a Windows limit than a compiler limit.
mmu_man has quit [Ping timeout: 240 seconds]
<JordanBrown_> Don't remember.
<teepee> good thing the #undef worked
<JordanBrown_> I was hoping that I could just tweak something in the CMake configuration to not set NDEBUG, but that's supplied by CMake itself. Looks like there's some way to override it, but adding the #undef was easier than figuring it out.
<teepee> that's CMAKE_RELEASE_TYPE=Debug
<teepee> or whatever it's called
<teepee> or =RelWithDebug
<JordanBrown_> I believe that when you set the release type to debug, it blows that symbol limit.
<teepee> maybe relwithdebug helps, I would assume it's optimizing but keeping debug symbols
<teepee> where debug would be without any optimizations
J23k61 has joined #openscad
J23k1 has quit [Ping timeout: 248 seconds]
mmu_man has joined #openscad
<JordanBrown_> Well, I've got the repro case down to four lines.
<JordanBrown_> three: putting a function reference into an object.
<lf94> How're we doing for scadvent 2023?
<JordanBrown_> I was hoping to have my train set in for 2023, but it's built atop #4478.
<lf94> does anyone have screenshots of the previous years
<lf94> I'd like to help come up with ideas
<lf94> But something new of course
<JordanBrown_> I think they are all still online.
<JordanBrown_> left sidebar
hyperair has quit [Remote host closed the connection]
<teepee> repo says 1 out of 24
<teepee> 23 to go
<lf94> yikes, ok
<lf94> thanks Jordan
<teepee> indeed, not much time till door 1 would open
* teepee still needs to get some sleep
<teepee> good night
hyperair has joined #openscad
kanzure has quit [Quit: leaving]
kanzure has joined #openscad
<JordanBrown_> G'nite
<InPhase> teepee, JordanBrown_: I actually started on a fix attempt to 782 like 2 years ago, but I guess that's horribly out of date by now. I also don't remember if I got any meaningful progress...
<JordanBrown_> I'm going to see if I can get rid of the underscore.
JordanBrown_ has quit [Quit: ASCII a stupid question, get a stupid ANSI!]
JordanBrown has joined #openscad
<JordanBrown> am I back without the underscore?
<JordanBrown> ah, good.
LordOfBikes has quit [Ping timeout: 240 seconds]
<JordanBrown> Anybody still around who speaks C++?
<peepsalot> JordanBrown: hey
LordOfBikes has joined #openscad
<JordanBrown> So I have a function that wants a std::vector, and what I conveniently have is a std::map. The function just wants to iterate across the items in the list.
<JordanBrown> I would think that there would be a superclass or what Java would call an interface that would be that iterable abstraction, but I'm not finding it.
<peepsalot> you want to iterate over keys, values or key-value-pairs?
<JordanBrown> values
<JordanBrown> critically, I want to iterate over values of an object that might be either a std::vector or a std::map.
mmu_man has quit [Ping timeout: 260 seconds]
<JordanBrown> In Java, what I would want would be a Collection, with the Collection for the map coming from HashMap.Collection.
<JordanBrown> I think. It's been a long time.
<peepsalot> standard iterator for map point to a std::pair<Key,Value>, so you have to iterate and grab it->second
<JordanBrown> I want a common loop to iterate across either type of object.
<peepsalot> https://en.cppreference.com/w/cpp/container/map ctrl-f "iterator" and "value_type"
<peepsalot> don't think that's possible, like is this a templated argument? how do you not know if its vector or map?
<JordanBrown> It's coming from an existing function that, for a given Value, currently returns a pointer to a std::vector of Value. That works great for VectorType, where it's stored as a std::vector. But ObjectType stores its values in a std::map.
<JordanBrown> So when you call it on a VectorType you would get a std::vector but when you call it on an ObjectType you would get a std::map.
<JordanBrown> Or something like that.
<peepsalot> i think you will just have to write separate loop for each variant type.
<JordanBrown> Yeah, I suppose. El Yucko.
<peepsalot> still hard to tell exactly the exact situation without code though
<peepsalot> what is the "existing function"?
foul_owl has quit [Ping timeout: 255 seconds]
<JordanBrown> hold a moment, will track it down on github
<JordanBrown> That calls different functions depending on the type of the Value.
<JordanBrown> The VectorType variation returns a std::vector, but I'd like the ObjectType variation to return a std::map (or something derived from one) instead.
<JordanBrown> Actually, it returns a pointer to a std::vector.
<JordanBrown> And it seems like there ought to be an abstraction that is "A thing that you can iterate across, that yields a Value".
<peepsalot> i don't really know the ObjectType interface, haven't touched that part of the code really
<JordanBrown> Right now it's got both a map of the key:value pairs and a vector of the values, for exactly this reason, and the fact that it's got both is causing problems. (Contexts don't get counted right when the value is a function.)
<JordanBrown> plus, of course, it's dumb to store the same value twice.
<JordanBrown> Right, I want to get rid of that.
<JordanBrown> I have the values in the map a bit above that; I don't want to store them twice.
<JordanBrown> Oh, excuse me, it's a std::unordered_map.
<peepsalot> oh, well, might need to get clever and return a custom iterator rather than a vector of values. so this is one of the instances where .values is used that you want to remove?
<JordanBrown> yes
<peepsalot> are there many others?
<JordanBrown> I believe it and a close friend are *the* instances that need to be removed. There are a couple of others, but they are the housekeeping that maintains that vector.
<JordanBrown> I believe - it's been a long time since I wrote this - that that "values" member exists solely to be returned to this function.
foul_owl has joined #openscad
<JordanBrown> Indeed, returning some kind of iterator makes sense, but I don't understand iterators well enough to know how to do that.
<peepsalot> the EmbeddedValuesVistor seems not particularly useful in this case, and maybe more trouble than its worth. i would probably replace its call with an explicit check and some separate loops for vector/object
<JordanBrown> I would have thought in terms of calling a Value.embeddedValues() method, or perhaps a Value.begin()/Value.end() method, with the specific implementation supplied by the particular type. But that's made more complex by the fact that Value isn't a superclass; instead, it's a variant (and I don't
<peepsalot> message truncated
<JordanBrown> understand that well either).
<JordanBrown> Brown> I would have thought in terms of calling a Value.embeddedValues() method, or perhaps a Value.begin()/Value.end() method,
<JordanBrown> with the specific implementationsupplied by the particular type
<peepsalot> you can just do: if (value.type() == Value::Type::VECTOR) etc
<JordanBrown> But that's made more complex by the fact that Value isn't a superclass; instead, it's a variant (and I don't understand that well either).
<JordanBrown> Yes, but yuck.
<peepsalot> also you likely don't need to handle EmbeddedVectorType directly, that should be more or less self-contained
<JordanBrown> I'm not 100% sure, but I think it recurses into them.
<peepsalot> well, you can iterate over a VectorType and it will automatically handle any EmbeddedVectorTypes, the iterators will point to element Values again, and a "whole" value should always be a full VectorType
<peepsalot> (if its a vector at all)
<peepsalot> all the magic happens within the iterator class, which i wrote
<JordanBrown> yes, if you iterate across a VectorType, but this is iterating across the underlying std::vector.
<JordanBrown> At least as I read it...
<JordanBrown> and I should note that despite far too many years of programming experience, my C++ is very weak.
<JordanBrown> But perhaps it *should* iterate across the VectorType, so that the embedded vector stuff is hidden.
<JordanBrown> But can you return an iterator that might be a VectorType::iterator and might be an ObjectType::iterator?
<lf94> how would you guys fillet this corner in openscad http://0x0.st/HyL9.png
<JordanBrown> It seems like there ought to be a superclass Iterator<>, Iterator<Value> in this case, that would iterate and return Values, while hiding what kind of thing you're iterating across.
<lf94> I think I give up on smooth or round blending with SDFs. I never noticed before, but now I see that they *always* produce artifacts because they enlarge the entire damn children of the operation.
<JordanBrown> I'm not much good with fillets. I would probably subtract a cylinder from a cube to make a cove shape, and place it in the right place, plus probably something involving subtracting a sphere from a cube for the corner.
<lf94> Yeah, that seems to be the only way to make a "robust fillet"
<lf94> a fillet which doesn't affect anything else
<JordanBrown> But that only works for relatively simple shapes.
<lf94> InPhase: any ideas?
<peepsalot> ok, looking again at the EmbeddedValuesVisitor hadnling of vectors, that looks error prone, i probably should have made the access to the underlying ptr->vec private or protected
<peepsalot> JordanBrown: you definitely should VectorType's provided iterator IMO. using begin() end(), or just range-based for loop which calls those automatically
<JordanBrown> But is there one type that might contain either a VectorType::iterator or an ObjectType::iterator?
<JordanBrown> So that EmbeddedValuesVisitor could return that type, returning different implementation for the two different kinds of Values?
<peepsalot> i don't think so, unless using templated type in some way. but yeah i would just ditch EmbeddedValuesVisitor and just do a couple if value.type() checks honestly
<JordanBrown> I'll take a stab at that.
<JordanBrown> But it's deeply unsatisfying; it seems like you should be able to abstract away the kind of thing you're iterating over.
<InPhase> lf94: You mean xy-plane round the corner?
<lf94> Yeah
<InPhase> lf94: Or you want it fillet to the bottom plate?
<lf94> well
<lf94> uh
<lf94> where the bottom meets the wall
<peepsalot> offset_extrude would help with that sort of thing, i'm getting more tempted to look into that lately
<peepsalot> *not a feature that exists at yet
<lf94> thanks x)
<lf94> Oh yeah. So yeah, in SDF world, this is the easy part - the hard part seems to be getting a *different fillet* on a different plane
<lf94> I just caved and decided f it, ill do an offset to get rounded everything
<InPhase> lf94: Using built in tools, like this is my first instinct: https://bpa.st/T43Q
<lf94> That's you carving out the corner eh
<lf94> yeah, seems to be the only way
<peepsalot> if the inside is just a rounded rectangle, then the inner negative volume can just be created from a difference of 8 hull'd spheres
<JordanBrown> InPhase did you see the exchange I just had with peepsalot about iterating over vectors vs objects?
<InPhase> lf94: Sloppily reusing some of my old code, this: https://bpa.st/XO3Q (Warning, much more efficient on master branch, rather than release.)
<InPhase> JordanBrown: Skimmed it a bit.
<JordanBrown> Did what I was asking for make sense? Is there a way to get it?
<InPhase> lf94: That sloppy version is basically what peepsalot just suggested. Reusing my smooth cube module to hollow out.
<InPhase> JordanBrown: I read again, but I'm not following the issue at hand without digging through the code links, and I'm out of remaining steam for that tonight. Need to get to bed pretty soon.
<JordanBrown> OK
<JordanBrown> It's only midnight.
<JordanBrown> :-)
<JordanBrown> Well, the version where the caller does DIY seems to be building...
<InPhase> Yeah, only. :) I do need to be getting to bed now earlier for quite a stretch, so my late nights will be shrinking a bit.
<JordanBrown> To be clear, I'm just giving you a hard time. Midnight is my bedtime.
L29Ah has quit [Ping timeout: 255 seconds]
L29Ah has joined #openscad
<JordanBrown> InPhase, peepsalot: Looks like the answer is that what I want (a generic iterator) is possible but black magic: https://stackoverflow.com/questions/9938/generic-iterator
<JordanBrown> Which in turn makes me wonder whether a better pattern would be to pass a lamba function to a walker. But I'm not entirely clear on how that works for variants (vs subclasses).
<JordanBrown> I should really learn not to use weasel phrases like "not entirely clear". In this case it's "have no clue".
<gbruno> [github] jordanbrown0 synchronize pull request #4478 (Objects, geometry as data, module references) https://github.com/openscad/openscad/pull/4478
foul_owl has quit [Ping timeout: 240 seconds]
foul_owl has joined #openscad
<cbmuser> teepee: ping
teepee_ has joined #openscad
teepee has quit [Ping timeout: 256 seconds]
teepee_ is now known as teepee
<teepee> cbmuser: pong
<cbmuser> teepee: Can you come to Matrixchat?
ferdna_ has quit [Quit: Leaving]
<teepee> cbmuser: yes, but not *now* - in a meeting
<cbmuser> OK, later ;)
cart_ has joined #openscad
foul_owl has quit [Ping timeout: 245 seconds]
qeed_ has joined #openscad
qeed has quit [Ping timeout: 264 seconds]
foul_owl has joined #openscad
J23k61 has quit [Quit: Client closed]
J23k61 has joined #openscad
mmu_man has joined #openscad
JordanBrown24 has quit [Quit: Client closed]
srk_ has joined #openscad
srk has quit [Ping timeout: 255 seconds]
srk_ is now known as srk
srk_ has joined #openscad
srk has quit [Ping timeout: 255 seconds]
srk_ is now known as srk
GNUmoon2 has joined #openscad
teepee has quit [Remote host closed the connection]
teepee has joined #openscad
J23k61 has quit [Quit: Client closed]
J23k61 has joined #openscad
mmu_man has quit [Ping timeout: 258 seconds]
mmu_man has joined #openscad
Guest97 has joined #openscad
Guest97 has quit [Client Quit]
teepee_ has joined #openscad
teepee has quit [Ping timeout: 256 seconds]
teepee_ is now known as teepee
snaked has quit [Quit: Leaving]
mmu_man has quit [Ping timeout: 258 seconds]
mmu_man has joined #openscad
qeed_ has quit [Quit: qeed_]
fling has quit [Remote host closed the connection]
fling has joined #openscad
fling has quit [Remote host closed the connection]
fling has joined #openscad
<lf94> there's a openscad matrix?
<lf94> surprised no bridge
<JordanBrown> It would be easy to have one; it just wouldn't connect here.
<JordanBrown> Did you mean "I am surprised that there is an OpenSCAD room on Matrix, because there is no bridge", or "If there is an OpenSCAD room on Matrix, I am surprised that there is no bridge"? There used to be a bridge from Libera Chat to Matrix, but it's broken.
<lf94> latter
<lf94> but also half of former
<lf94> 1. I'm just surprised there's any matrix channel at all
<lf94> 2. I'm suprised there's no bridge, because it'd be useful to connect them.
<JordanBrown> There used to be a bridge and a matching Matrix room, but there were problems with the bridge and it got taken down.
<lf94> Right right
<JordanBrown> which is very annoying because I prefer the Matrix UI.
<lf94> There are some nice IRC UI
<lf94> Go check out CloudIRC
<JordanBrown> irccloud?
mmu_man has quit [Ping timeout: 255 seconds]
mmu_man has joined #openscad
<teepee> or if you find a neat client (thelounge?) we could self-host, let me know
<JordanBrown> I'm hesitant to recommend anything self-hosted because of the additional workload to administer it.
<JordanBrown> I looked at irccloud last night, and it's plausible, but its $6/person/month is infinitely more expensive than Libera and Matrix. (Yes, I want it all, I want it now, and I want it for free :-)
<teepee> if they support a reasonable good docker image, the maintenance might not be too bad
ferdna_ has joined #openscad
Guest7 has joined #openscad
Guest7 has quit [Client Quit]
J23k61 has quit [Quit: Client closed]
J23k61 has joined #openscad
<guso78> What is the current cost to host #openscad at libera?
<teepee> zero
<guso78> But there must be a reason to change..
<teepee> it's not about change at this point, but having an additional option (which did exist before) by connecting via Matrix
<JordanBrown> I'd support a switch to Matrix; I think its default UIs are just better than the IRC clients that are easily available. But I understand that people may have good reasons for sticking with IRC and wouldn't push for it.
<JordanBrown> Also, I think teepee was not talking about moving where the chat is hosted, but rather about hosting a web-based IRC client that runs atop the current chat. The idea would be to get a client that always stays connected, so that when you start up you have the history from when you were disconnected.
<guso78> I don't know much about IRC.however, lf94 has provided me with a znc option which always stays online. Always reachable and everything to me logged.
fling has quit [Ping timeout: 256 seconds]
erectus has quit [Ping timeout: 256 seconds]
GNUmoon2 has quit [Ping timeout: 256 seconds]
aiyion has quit [Ping timeout: 256 seconds]
mmu_man has quit [Ping timeout: 240 seconds]
mmu_man has joined #openscad
foul_owl has quit [Ping timeout: 252 seconds]
erectus has joined #openscad
fling has joined #openscad
aiyion has joined #openscad
foul_owl has joined #openscad
cart_ has quit [Ping timeout: 255 seconds]
<JordanBrown> lf94?
noonien has quit [Ping timeout: 255 seconds]
noonien has joined #openscad
noonien8 has joined #openscad
noonien has quit [Ping timeout: 260 seconds]
noonien8 is now known as noonien
fling has quit [Remote host closed the connection]
fling has joined #openscad
<lf94> yo
<lf94> Yeah, I offer ZNC accounts to people here
<lf94> because well it costs me like next to nothing to offer it and it has big benefit
J23k61 has quit [Quit: Client closed]
J23k61 has joined #openscad
<InPhase> teepee: botsnack!
<JordanBrown> lf94: so how might one get such an account, pretty please?
<lf94> just ask :)
<lf94> ill do it later for you
<JordanBrown> May I pretty please have an account? (And instructions on how to use it?)
<lf94> yeah, the setup is what's not straight forward
<lf94> what irc client you use?
<JordanBrown> Right now, IceChat. But I can't say that I've been really happy with any of them.
<lf94> Have you tried HexChat?
<lf94> Honestly, my favorite GUI one
<JordanBrown> At least the version that I have crashes on a regular basis.
<JordanBrown> Seems to dislike the display going to sleep, or something like that.
JordanBrown1 has joined #openscad
<JordanBrown> It says it's the most recent available.
teepee has quit [Ping timeout: 256 seconds]
teepee has joined #openscad
JordanBrown1 has quit [Read error: Connection reset by peer]
JordanBrown29 has joined #openscad
JordanBrown29 has quit [Client Quit]
<JordanBrown> Like I just started it, but when I switched away to my work computer and came back, it's gone.
<teepee> InPhase: yummy!
<peeps[work]> i use hexchat from flatpack, which is newer than my distro-provided package
mmu_man has quit [Ping timeout: 255 seconds]
mmu_man has joined #openscad
<lf94> JordanBrown: huh. my experience is it's pretty stable
<lf94> maybe it's minimizing itself?
<InPhase> JordanBrown: Have you tried deleting the hexchat config files? (Or at least, renaming the config file directory as a test so it can't find it)
<InPhase> JordanBrown: You're on Windows, and I'm thinking about all those OpenSCAD bugs we had on Windows where various display issues were triggering crashes based on the stored state of the window config.
<lf94> Yeah, try completely deleting everything to do with hexchat
<lf94> Because again, HexChat's been a pretty damn stable client for me over the years on Windows
TheAssassin has quit [Remote host closed the connection]
TheAssassin has joined #openscad
ali12341 has joined #openscad
noonien8 has joined #openscad
redlizard_ has joined #openscad
mmu_man_ has joined #openscad
HumanG33k has joined #openscad
noonien has quit [Ping timeout: 264 seconds]
mmu_man has quit [Ping timeout: 264 seconds]
redlizard has quit [Ping timeout: 264 seconds]
ali1234 has quit [Ping timeout: 264 seconds]
HumanGeek has quit [Ping timeout: 264 seconds]
mohnish has quit [Ping timeout: 264 seconds]
zauberfisch has quit [Remote host closed the connection]
noonien8 is now known as noonien
mohnish has joined #openscad
zauberfisch has joined #openscad
peepsalot has quit [Quit: Connection reset by peep]
peepsalot has joined #openscad
juri_ has quit [Ping timeout: 260 seconds]