So, the typical "It's only okay when the elites do it." Although, it's almost certain that such crowdfunding practices will lead to a radical democratization of society as a whole.
Today, any bloody dictator, tyrant, or autocrat continues to kill people en masse simply because society lacks a sufficiently effective tool to guarantee the reliable transfer of funds to one of their henchmen should the issue with him be effectively resolved
EDIT: Oh, I initially thought that you thought that I was saying that it's OK for the government to coordinate assassinations but not OK for other people to coordinate assassinations. Which is not what I said, I only said (implied) that it's not OK for other people to coordinate assassinations. I made no representation regarding whether I think it's OK for the government to coordinate assassinations.
However, what I now think you're saying is that assassination markets would lead to fewer assassinations rather than more, because... if ordinary people could trade in assassination markets then they would choose to assassinate the government's assassins, and then the government would not react or respond in any way, so then the government would no longer be able to coordinate assassinations, and the general public would stop using the assassination market, and then the problem is solved. Is that right?
> you thought that I was saying that it's OK for the government to coordinate assassinations
Oh no, I think you misunderstood. I'm not saying you think this is acceptable. I'm saying the elites are ALREADY doing it. And you're expressing your extreme disapproval not of the phenomenon itself, but of the hypothetical situation in which not only the elites but also ordinary people would gain access to such tools (which, of course, would also be very illegal and unacceptable. Well, until these terms still exist).
> I now think you're saying is that assassination markets would lead to fewer assassinations rather than more
I think we are rather talking about an increase in the number of assassinations to a level that literally threatens the destruction of human civilization in its modern form. Purely because of the irreversible nature of this tool acquisition by society. It's just that at one point in time, society doesn't yet have access to it, and at another, it has, and now it's everywhere, for everyone, and there's no turning back. The entire planet is living in a new socio-political-economic reality.
But this does not in any way contradict the radical democratization of society.
Only if it becomes obvious why it is flaky. If it's just sometimes broken but really hard to reproduce then it just gets piled on to the background level of flakiness and never gets fixed.
To get around this, I have it log the relevant inputs, so it can be reproduced.
The whole concept of allowing a flaky unit test to exist is wild and dangerous to me. It makes a culture of ignoring real failures in what, should be, deterministic code.
Well, if people can't reproduce the failures, people won't fix them.
So, yes, logging the inputs is extremely important. So is minimizing any IO dependency in your tests.
But then that runs against another important rule, that integration tests should test the entire system, IO included. So, your error handling must always log very clearly the cause of any IO error it finds.
I was working on an SDF-based CAD tool but gave up when I couldn't find a good way to do fillets.
It's very deceptive because the easy way works so well (Use smoothmin instead of min and you get smooth blends for free! You can even use a circular approximation of smoothmin and get proper fillets!). But when you want the user to be able to pick a couple of surfaces and fillet between them, it gets really hard.
It worked by rewriting the expression tree so that the blend arguments become sibling nodes and then applying the blend to the union/intersection that is their parent.
That works every time if you only want 1 single targeted blend, but if you want several of them then you can run into unsatisfiable cases where the same object needs to blended with several others and can't be siblings of all of them.
So I gave up :(. For me, CAD without fillets and chamfers is no CAD at all.
(Also, apropos for this thread: the discontinuity in the chamfer was a floating point precision problem...)
Well, user picking a couple of surfaces is literally an operation on a boundary representation, so of course it's a PITA with fields :)
I think the future is CAD is combined fields and breps. They're literally dual, one is covariant, the other contravariant (breps facilitate pushforwards, fields facilitate pullbacks).
One without the other is necessarily going to be limited in some way.
The distance field tells you the distance to the nearest surface at any point. You can have a "surface id field" tell you the id of the nearest surface to any point, and then when you raymarch to find the intersection of a line with a surface, you can read out the ID from the ID field after finding the intersection point. (Of course the ID field is also implemented as a function mapping points to surfaces).
So when the mouse is hovered or clicked in the 3d view you can easily find the ID of the surface under the pointer, and you can draw that surface in a different colour to show it is selected. No boundary representation needed.
The hard part is, given 2 surface ids, how do you add a fillet between them in the general case?
Another idea I had was to set the fillet radius on every min/max node based on the derived surface id's from the child nodes, but I couldn't find a good way to do this without making the field discontinuous.
That depends on what we mean by surfaces, and in the case of filleting, the user really wants to be picking adjacent faces (as in: an edge between two adjacent faces). That, or even a region to roll a ball along to generate a fillet.
The semantics of fillets even in the simplest case is that it's doing something to the edges, i.e. elements of the boundary representation, so that's a more natural structure for filleting.
>The distance field tells you the distance to the nearest surface at any point.
What you're describing isn't the same. You really are picking solids, not faces.
This wouldn't work even in the simplest case of a cube.
You can define a cube by a distance field:
f(x, y, z) = max(|x|, |y|, |z|) - 1
If the user wants to fillet just one the edges, then what? You only have one surface (the boundary of a cube), and one ID.
The field doesn't know anything about the edges.
OK, OK, we can ignore this edge case (badum-tss), but even if you only allow filleting "two surfaces", those two "surfaces" (really: boundaries of solids) aren't necessarily going to intersect along one edge (which is what the user wants to fillet).
The intersection may have multiple components. Or may not be manifold.
As a concrete example:
f(x, y, z) = z - cos(x)
g(x, y, z) = z - cos(y)
Look ma, no absolute values! Let me smooth-talk a little though:
f(x, y, z) = z - cos(x)cos(y)
g(x, y, z) = z - 0.25
.....and that's before we get to the reality where the user's understanding of "edge" isn't topological (as in, component of intersection between surfaces), but geometric (sharp corners).
B-reps can get away with making no distinction between them... Until you have messy geometry from elsewhere.
Say, an STL file from a scan. Or a mesh that came from an F-rep by marching cubes. Or whatever unholy mess OpenSCAD can cook with CGAL.
It doesn't matter if you use F-rep or convert to one: chisel out a cube as an intersection of half-spaces, then cut with half-spaces that narrowly touch the edges.
It'll look like a cube, and it'll be a cube functionally if you manufacture it.
Good luck with that one.
>If you have good ideas for this I'd love to hear them and resume working on Isoform
Well. The good news is that putting fillets on every edge is kind of easy with fields because you can do it with offsets.
If F(x, y, z) is a distance field that defines a solid, G(x, y, z) = F(x, y, z) + c offsets F inwards by c.
G is not a distance field anymore though, it's giving values that arent distances on the outside of convex corners.
Renormalize G to be a distance field, call it G'.
Now offset G' outwards by c: H = G' - c.
Ta-da! Concave corners aren't touched, convex corners are rounded.
Flip the + and -, and you're filleting concave corners (G = F - c is a field that defines an outwards offset that fails to be a distance field inside the body near concave corners; compute G' — the distance field for G; offset G inwards: H = G' + c).
Now, the "just normalize a field into a distance field" is doing a lot of heavy lifting here.
It works in the case of a cube if you define the cube to be the intersection of 6 half-spaces. There is a video demonstration of it working (partly) on a cube defined this way in the YouTube link in my comment above.
I define a surface to be the region of space where a particular SDF evaluates to 0. You define a solid to be the region of space where that SDF evaluates to <0, but they're broadly the same concept.
It is no problem to ensure that all primitives & all extruded sketches are defined so that each face gets a different surface id, and you would of course want to do this if you want to be able to fillet them.
You're right that there is a difference between an edge and between a pair of surfaces, but finding edges in SDFs is much harder than finding pairs of surfaces. If they intersect along more than one edge then you'll get the fillet along more than one edge. SDFs don't even have concrete "edges" in the general case. I'm not worried about this. Being able to fillet the intersection of 2 surfaces (solids) would satisfy me, but I haven't even got that far.
I'm not trying to find a solution that involves treating edges as "special". That's B-rep thinking. I don't mind if a "fillet" between 2 surfaces that do not touch but are closer together than the fillet radius creates a bridge between them, as long as it is smooth, continuous, and predictable.
It doesn't have to approximate the B-rep way, it just needs to be practically useful for turning sharp edges into rounded ones in a way that lets the user decide where.
You're missing one very important type of curve: a clothoid (or "Euler spiral") is a curve of continuously-varying radius, these are encountered on roads very frequently. And especially on race circuits.
A clothoid is used to connect two lines the same way your fillet is, except instead of just 1 radius it has a radius configured for each end and smoothly changes in between.
They are also used in railways, because on a railway you don't have the freedom of moving the car's position across the road, so a transition from a straight track to a constant radius would imply an instantaneous step change in centrifugal force, or infinite jerk. Using a clothoid to smooth the change between the straight track and the constant-radius turn means the lateral acceleration increases smoothly instead of instantaneously.
Author here. Engineers use clothoids as the primary geometry for high-speed roads by offsetting a centerline clothoid. However, the offset of a clothoid is not itself a clothoid, so the left and right edges are not mathematically clothoids.
A clothoid is simply a mathematically ideal way to achieve continuously increasing curvature along a path. In practice, it can be approximated by chaining multiple circular arcs with decreasing radii.
I believe that it prevents the price from being indexed (by dumb crawlers).
I remember hearing our marketing folks talking about enforcing MAP, at the company I used to work for. That company didn’t have the clout of Amazon, but we did sell premium kit.
For us, it wasn’t about money, as much as we didn’t want to ever be forced to reduce Quality; which included the shopping experience. We were concerned that outlets selling lower-priced kit, also had a worse shopping (and support) experience, which we believed (probably correctly) would reflect on us, and our most favored retailers.
Premium brands are often driven by factors other than just money. Brand reinforcement is a really big deal.
I don't think your definition of spam matches the one that I understand it to mean. Spam is random email from someone you have not had contact with before firing messages to every address they can find anywhere on the web, the dark web, etc. Or if you ask not to be added to a mailing list and are added anyway. They often use fraudulent tricks to try to get the email through filters, such as fake from addresses.
Spam is not email from legitimate companies with valid contact details that have an opt out that you forgot to click when you signed up with them. That's legitimate marketing emails. You might argue they also shouldn't exist, but they are a different category.
I get plenty of the second from mailchimp (it's what they do), almost none of the first. Marking the second kind as spam, rather than clicking the unsubscribe link is dangerous because it teaches your anti-spam filter to reject messages from legitimate companies. You might find that if they need to contact you for a genuine reason e.g. a reciept for a future transaction, the message is blocked.
* Spam is not email from legitimate companies with valid contact details that have an opt out that you forgot to click when you signed up with them. That's legitimate marketing emails. You might argue they also shouldn't exist, but they are a different category.*
No, they’re all spam. It’s just that some spam is significantly worse than others.
Edit:
this just reminded me of an interaction with a customer when I worked at a dialup ISP over 20 years ago. We would routinely get abuse reports about spam coming from our network that would turn out to be a family computer with a virus. We would disable their account until we got ahold of them, and then help them run antivirus or redirect them to a local shop to fix it.
But this one time my boss is like “Hey you wanna pretend you're the email manager? We have an actual spammer sending ads for a local business through our smtp servers”. We were all laughing at the audacity of it, they were sending thousands of the same message out, I think it was for a tackle shop.
When I called the guy to let him know why we disabled his account he immediately got angry at me, I vividly remember him saying “It’s not spam, it’s for a business!!” I explained to him that it doesn’t matter, it’s just as bad, and could get the whole company blacklisted from sending emails. Turns out his friend owned the business, and convinced him to install something that sent emails through outlook express.
The reason I got that duty is because I had no problem being confrontational back then. I remember telling him that I think he should be fined, and permanently banned from the internet. But that we’ll only let him back on if he uninstalls the thing.
He called back indignantly asking why we were allowing some other spam. I had to explain that it was from another network, and we’re trying to stop it, and that if every ISP were like us then it would barely be a problem.
I wonder if that business spams through google now.
> I don't think your definition of spam matches the one that I understand it to mean. Spam is random email from someone you have not had contact with before firing messages to every address they can find anywhere on the web, the dark web, etc. Or if you ask not to be added to a mailing list and are added anyway.
I don't get _only_ this from Mailchimp, but I definitely get quite a bit of this from Mailchimp, Sendgrid, and others. I've marked it spam, reported it to them (no response), and continued to receive the emails.
I can be kind of scatter brained and generally give the benefit of the doubt, but sometimes it's pretty clear that, e.g., I most definitely did not sign up with some accountant in a different country, in a place I've never been to, to receive reminders of tax deadlines that don't apply to me and offers of accounting services I can't use. Or if I somehow did, the signup was deceptive enough that they never received meaningful consent and I'd call it spam anyway.
(And the email they're sending this to is not some easily confused gmail address or a fat finger--it's my own name at my own domain.)
Having valid contact details or an opt out on their sign up form isn't relevant given I never signed up. It's _unsolicited_, _bulk_ email. It's spam.
> I don't think your definition of spam matches the one that I understand it to mean. Spam is random email from someone you have not had contact with before firing messages to every address they can find anywhere on the web, the dark web, etc. Or if you ask not to be added to a mailing list and are added anyway. They often use fraudulent tricks to try to get the email through filters, such as fake from addresses.
I would disagree with that definition, and wikipedia and multiple dictionaries appear to agree with me; it doesn't matter how many dark patterns the company uses or whether they (claim to) let you opt out after the fact, if the message is unwelcome, it's spam.
> unsolicited usually commercial messages (such as emails, text messages, or Internet postings) sent to a large number of recipients or posted in a large number of places
I disagree, I get plenty of spam from Mailchimp. Spammers seem to be able to add email addresses to Mailchimp without verification, and they just keep making new accounts/"campaigns" to re-add my email addresses.
Legitimate companies like to not provide the legally-required opt-in flow and assume consent without ever enabling or disabling a consent checkbox. That is spam too.
It's on Mailchimp to not take business from companies that abuse their system. If they get flagged as spam and their other customers have delivery issues because of that, I see that as a feature, not a bug.
> Spam is not email from legitimate companies with valid contact details that have an opt out that you forgot to click when you signed up with them. That's legitimate marketing emails. You might argue they also shouldn't exist, but they are a different category.
Yes it is. Using a dark pattern to trick me into signing up doesn't make it not spam. It's still spam.
I get plenty of Mailchimp spam from people who have bought email lists and added me to their newsletter. It’s against their ToS, and I always indicate that I did not sign up for the list when I unsubscribe. Maybe it does something.
> Spam is random email from someone you have not had contact with before firing messages to every address they can find anywhere on the web, the dark web, etc.
> Or if you ask not to be added to a mailing list and are added anyway.*
> Spam is not email from legitimate companies with valid contact details that have an opt out that you forgot to click when you signed up with them.
There's a HUGE grey area between the random unsolicited emails for scams and legitimate business partners where I forgot to check the opt out. I get almost none of the first (spam filters are pretty good at keeping Nigerian princes from getting help to access their money), and also almost none of the last (because I'm hypervigilant about opting out of email and cookies and all that trash), so all the spam I get is from "asked not to be added but added anyways".
Most of those are coming from Mailchimp and similar services. I'm sure that if I could take the senders to court and disentangle their web of parent companies that had my email in the web form for 10 seconds before I opted out and they sold it to each of their 20 daughter companies and partner organizations, and then I received the first "legitimate marketing email" (LOL! LMFAO!) and unsubscribed from that (which will take effect in 20 business days) so now I'm only subscribed to 19 new mailing lists from that company and also the dozen other organizations they're a part of, until they pivot to a new marketing agency which - oopsie! - forgot about my opt-out request.
That's Mailchimp's business model and the way that the entire "legitimate marketing" economy works, but I still consider it spam.
> Marketing is only spam when it isn't previous customers, or people who have specifically opted in.
Yes, this excludes any people, customers or otherwise, who did not knowingly and willingly opt-in to specifically receive marketing emails / promotional emails / any other unnecessary emails.
A good heuristic is: if somebody receives an email from you that they do not want, there's a good chance you're spamming them: maybe by calling a marketing email, an "update" instead; maybe because you didn't make it abundantly clear to them when they opted-in that they would receive emails of that type.
Yes, I used to agree with that, but have since given in and accepted that most companies (except mine and a handful of others) will spam all customers who buy a product without asking them first.
It's a little irritating, although I reserve full enmity for the spammers who I've never interacted with ever.
I think thats a really wrong definition of spam. Spam is untargeted junk from people you don't know, who are probably hiding there real identity using fake email headers etc. If it's a legit company with legit unsubscribe options, it's not spam.
It worries me a lot that people clicking "mark as spam" on messages from legit companies because they subscribed to the newsletter will mean that my messages with important information (order confirmations, e-tickets etc.) will get blocked.
That's a spammer's definition. Everyone else's definition is that spam is unsolicited e-mail. Which covers most marketing e-mail, and not just the cold messages, but especially marketing e-mail from vendors you had interacted with in some way in the past.
> It worries me a lot that people clicking "mark as spam" on messages from legit companies because they subscribed to the newsletter will mean that my messages with important information (order confirmations, e-tickets etc.) will get blocked.
They probably didn't subscribe to the newsletter, they were subscribed, or tricked into subscribing. Either way, it's spam, and legitimate companies do not mix transactional e-mail ("order confirmations, e-tickets, etc.") with marketing e-mail.
FWIW, I'm one of such people clicking "mark as spam" on marketing e-mail, and I do it intentionally.
> It worries me a lot that people clicking "mark as spam" on messages from legit companies because they subscribed to the newsletter will mean that my messages with important information (order confirmations, e-tickets etc.) will get blocked.
Don't send spam and I won't mark it as spam. I didn't sign up for your newsletter, don't send it to me. Creating an account or placing an order does not mean I agree to your spam.
No, it's valid for me, and I just verified. In spam filter for past month: 0 mailchimp. In valid emails: 6 emails from a service that I signed up for via mailchimp.
Checking my received emails for mailchimp I see a whole bunch of legitimate emails, including for flightschedulepro which uses it. I also see replies to my abuse reports to mailchimp saying the problems have been addressed.
reply